Generating an EJB client

Normally a thick-client application would only need the stubs and utility classes of the EJB project. The EJB Plugin is capable of generating an EJB JAR for client use.

To generate the ejb-client JAR, you need to set generateClient to true in the plugin's configuration:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <!-- this is false by default -->
          <generateClient>true</generateClient>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

Client inclusions and exclusions

The content of the ejb-client archive can also be customized using inclusions and exclusions.

Default Exclusions:

  • **/*Bean.class
  • **/*CMP.class
  • **/*Session.class
  • **/package.html

To customize this, use the clientExcludes and clientIncludes elements:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <clientIncludes>
             <!-- this will include all files and directories under com/foo/bar -->
             <clientInclude>com/foo/bar/**</clientInclude>
             <!-- this will include all files and directories under com/foo/acme -->
             <clientInclude>com/foo/acme/**</clientInclude>
             <!-- this will include all files under com/example -->
             <clientInclude>com/example/*</clientInclude>
          </clientIncludes>
          <clientExcludes>
             <!-- this will exclude all files under com/example -->
             <clientExclude>com/example/*</clientExclude>
             <!-- this will exclude all files and directories with the name
                  sparrow under com/jack -->
             <clientExclude>com/jack/**/sparrow</clientExclude>
          </clientExcludes>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

Note: Be careful when mixing excludes and includes, excludes will have a higher priority than includes.