Skip navigation.
Downloads | Product Documentation | Support

Programming WebLogic Enterprise JavaBeans

# appc and ejbc Reference

# appc

The `appc` compiler generates and compiles the classes needed to deploy EJBs and JSPs to WebLogic Server. It also validates the deployment descriptors for compliance with the current specifications at both the individual module level and the application level. The application-level checks include checks between the application-level deployment descriptors and the individual modules as well as validation checks across the modules.

## Advantages of Using appc

The `appc` tool offers the following benefits:

- The flexibility of compiling an entire application, rather than compiling individual modules separately and combining them into an EAR after the fact.
- Validation checks across all modules and validation of application-level deployment descriptors against the various modules, because WebLogic Server has access to all modules during EAR compilation.

Previously, a user wanting to compile all modules within an EAR file had to extract the individual components of an EAR and manually execute the appropriate compiler (`jspc` or `ejbc`) to prepare the module for deployment. `appc` automates this process and makes additional pre-deployment validation checks not previously possible.

- It is easy to identify and correct errors `appc` produces.

If an error occurs while running `appc` from the command line, appc exits with an error message.

By contrast, if you defer compilation to the time of deployment and a compilation error occurs, the server fails the deployment and goes on with its work. To determine why deployment failed, you must examine the server output, fix the problem and then redeploy.

- By running `appc` prior to deployment, you potentially reduce the number of time a bean is compiled.

For example, if you deploy a JAR file to a cluster of 3 servers, the JAR file is copied to each of the three servers for deployment. If the JAR`` file wasn't precompiled, each of the three servers will have to compile the file during deployment.

## appc Syntax

Use the following syntax to run `appc`:

>     prompt>java weblogic.appc [options] <ear, jar, or war file or directory>

## Designating Alternative Deployment Descriptors

J2EE allows you to designate an alternative J2EE deployment descriptor for an EJB or web application module, using the <`alt-dd>` element in the `<module>` stanza of `application.xml`.

You can use <`alt-dd>` to specify an alternate deployment descriptor only for the J2EE deployment descriptors, `web.xml` and `ejb-jar.xm`l. As of WebLogic Server 8.1 SP01, if you specify an alternative deployment descriptor for a module in `alt-dd`, `appc` will compile it using the EJB using the alternative descriptor file.

For more information about the <`alt-dd>` element, see module in Developing WebLogic Server Applications.

In WebLogic Server 8.1 SP01and later, you can use `appc` command line options to designate alternative J2EE and WebLogic Server deployment descriptors for an application, as shown below:

- -`altappdd <``file``>`—Use this option to specify the full path and file name of an alternative J2EE deployment descriptor file, `application.xml`.
- `-altwlsappdd <``file``>`—Use this option to specify the full path and file name of an alternative WebLogic application deployment descriptor., `weblogic-application.xml`

## appc Options

Table C-1 lists `appc` command line options

Table C-1 appc Command Line Options

Option | Description
--- | ---
`-advanced` | Prints advanced usage options.
`-altappdd` | Designates an alternative J2EE application deployment descriptor.
`-altwlsappdd` | Designates an alternative WebLogic Server application deployment descriptor.
`-basicClientJar` | Does not include deployment descriptors in client JARs generated for EJBs.
`-classpath <path>` | Selects the classpath to use during compilation.
`-compiler <javac>` | Selects the Java compiler to use.
`-convertDD` | Attempts to update deployment descriptors to the latest version.
`-deprecation` | Warns about deprecated calls.
`-forceGeneration` | Forces generation of EJB and JSP classes. Without this flag, the classes will not be regenerated unless a checksum indicates that it is necessary.
`-g` | Compiles debugging information into a class file.
`-idl` | Generates IDL for EJB remote interfaces.
`-idlDirectory <dir>` | Specifies the directory where IDL files will be created (default: target directory or JAR)
`-idlFactories` | Generates factory methods for valuetypes.
`-idlMethodSignatures <>` | Specifies the method signatures used to trigger IDL code generation.
`-idlNoAbstractInterfaces` | Does not generate abstract interfaces and methods/attributes that contain them.
`-idlNoValueTypes` | Does not generate valuetypes and the methods/attributes that contain them.
`-idlOrbix` | Generates IDL somewhat compatible with Orbix 2000 2.0 C++.
`-idlOverwrite` | Always overwrites existing IDL files.
`-idlVerbose` | Displays verbose information for IDL generation.
`-idlVisibroker` | Generates IDL somewhat compatible with Visibroker 4.5 C++.
`-iiop` | Generates CORBA stubs for EJBs.
`-iiopDirectory <dir>` | Specifies the directory where IIOP stub files will be written (default: target directory or JAR)
`-timeout` | Used in conjunction with remote-client-timeout.
`-J<option>` | Passes flags through to Java runtime.
`-keepgenerated` | Keeps the generated `.java` files.
`-lineNumbers` | Adds line numbers to generated class files to aid in debugging.
`-normi` | Passes flags through to Symantec's sj.
`-nowarn` | Compiles without warnings.
`-O` | Compiles with optimization on.
`-output <file>` | Specifies an alternate output archive or directory. If not set, the output is placed in the source archive or directory.
`-print` | Prints the standard usage message.
`-verbose` | Compiles with verbose output.
`-version` | Prints `appc` version information.

## appc and EJBs

`weblogic.appc` performs the following EJB-related functions:

- Generates WebLogic Server container classes for the EJBs.
- Checks all EJB classes and interfaces for compliance with the EJB specification.
- Checks deployment descriptors for potential configuration problems. For example, if there is a cmp field declared in `ejb-jar.xml`, `appc` verifies that the column is mapped in the `weblogic-cmp-rdbms.xml` deployment descriptor.
- Runs each EJB container class through the RMI compiler to create RMI descriptors necessary to dynamically generate stubs and skeletons.

By default, `appc` uses `javac` as a compiler. For faster performance, specify a different compiler (such as Symantec's `sj`) using the command-line `-compiler` flag or via the Administration Console. See Configuring Compiler Options.

For the location of the public version of `weblogic-ejb-jar.xml`, see weblogic-ejb-jar.xml Deployment Descriptor Reference. For the location of the public version of `weblogic-cmp-jar.xml`, see weblogic-cmp-jar.xml Deployment Descriptor Reference.

# ejbc

Note: `ejbc` is deprecated. Use `appc` instead. See appc.

Use the `weblogic.ejbc` tool for generating and compiling EJB container classes. If you compile JAR files for deployment into the EJB container, you must use `weblogic.ejbc` to generate the container classes.

`weblogic.ejbc` does the following:

- Places the EJB classes, interfaces, and XML deployment descriptor files in a specified JAR file.
- Checks all EJB classes and interfaces for compliance with the EJB specification.
- Generates WebLogic Server container classes for the EJBs.
- Runs each EJB container class through the RMI compiler to create client-side dynamic proxies and server-side byte code.

Note: `ejbc` accepts both JAR files and exploded directories as input.

If you specify an output JAR file, `ejbc` places all generated files into the JAR file.

By default, `ejbc` uses `javac` as a compiler. For faster performance, specify a different compiler (such as Symantec's `sj`) using the `-compiler` flag or via the Administration Console. See Configuring Compiler Options.

Although versions of the WebLogic-specific XML deployment descriptor files are published on or web site for your convenience, an internal version is shipped with the product for use by `weblogic.ejbc`.

For the location of the public version of `weblogic-ejb-jar.xml and weblogic-cmp-jar.xml`, see Document Type Definitions and DOCTYPE Header Information.

## Advantages of Using ejbc

The `ejbc` tool offers the following benefits:

- It is easy to identify and correct errors `ejbc` produces.

If an error occurs while running `ejbc` from the command line, ejbc exits with an error message.

By contrast, if you defer compilation to the time of deployment and a compilation error occurs, the server fails the deployment and goes on with its work. To determine why deployment failed, you must examine the server output, fix the problem and then redeploy.

- By running `ejbc` prior to deployment, you potentially reduce the number of time a bean is compiled.

For example, if you deploy a JAR file to a cluster of 3 servers, the JAR file is copied to each of the three servers for deployment. If the JAR`` file wasn't precompiled, each of the three servers will have to compile the file during deployment.

## ejbc Syntax

>     prompt> java weblogic.ejbc [options] <source directory or jar file>

>     	<target directory or jar file>

Note: If you output to a JAR file, the output JAR name must be different from the input JAR name.

## ejbc Arguments

Argument | Description
<`source directory or jar file`> | Specifies the exploded source directory or JAR file containing the compiled EJB classes, interfaces, and XML deployment files.
<`target directory or jar file`> | Specifies the destination JAR file or deployment directory in which `ejbc` places the output JAR. If you specify an output JAR file, `ejbc` places the original EJB classes, interfaces, and XML deployment files in the JAR, as well as the new container classes that `ejbc` generates.

## ejbc Options

Option | Description
`-help` | Prints a list of all options available for the compiler.
`-version` | Prints `ejbc` version information.
-basicClientJar | Does not include deployment descriptors in client JARs generated for EJBs.
`-dispatchPolicy <queueName>` | Specifies a configured execute queue that the EJB should use for obtaining execute threads in WebLogic Server. For more information, see Using Execute Queues to Control Thread Usage.
`-forceGeneration` | Forces generation of EJB classes. Without this flag, the classes may not be regenerated (if determined to be unnecessary).
`-idl` | Generates CORBA Interface Definition Language for remote interfaces.
-idlNoValueTypes | Does not generate valuetypes and the methods/attributes that contain them.
-idlFactories | Generates factory methods for valuetypes.
-idlVisibroker | Generates IDL somewhat compatible with Visibroker 4.5 C++.
-idlOrbix | Generates IDL somewhat compatible with Orbix 2000 2.0 C++.
`-idlOverwrite` | Overwrites existing IDL files.
`-idlVerbose` | Displays verbose information while generating IDL.
`-idlDirectory <``dir``>` | Specifies the directory where `ejbc` creates IDL files. By default, `ejbc` uses the current directory.
-idlMethodSignatures <> | Specifies the method signatures used to trigger IDL code generation.
-iiop | Generates CORBA stubs for EJBs.
-iiopDirectory <dir> | Specifies the directory where IIOP stub files will be written (default: target directory or JAR)
`-timeout` | Used in conjunction with remote-client-timeout.
`-J` | Specifies the heap size for `weblogic.ejbc`. Use as follows: `java weblogic.ejbc -J-mx256m input.jar output.jar`
`-keepgenerated` | Saves the intermediate Java files generated during compilation.
`-compiler <``compiler name``>` | Sets the compiler for `ejbc` to use.
`-normi` | Passed through to Symantec's java compiler, `sj`, to stop generation of RMI stubs. Otherwise `sj` creates its own RMI stubs, which are unnecessary for the EJB.
`-classpath <``path``>` | Sets a CLASSPATH used during compilation. This augments the system or shell CLASSPATH.
-convertDD | Attempts to update deployment descriptors to the latest version.