<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Ant EJB Tasks</title>

</head>

<body>

<h1>Ant EJB Tasks User Manual</h1>
<p>by</p>
<!-- Names are in alphabetical order, on last name -->
<ul>
  <li>Tim Fennell (<a href="mailto:tfenne@rcn.com">tfenne@rcn.com</a>)</li>
  <li>Conor MacNeill (<a href="mailto:conor@cortexebusiness.com.au">conor@cortexebusiness.com.au</a>)</li>
</ul>

<p>Version 1.1 - 2000/07/18</p>
<hr>
<h2>Table of Contents</h2>
<ul>
  <li><a href="#introduction">Introduction</a></li>
  <li><a href="#ejbtasks">EJB Tasks</a></li>
</ul>

<hr>
<h2><a name="introduction">Introduction</a></h2>
<p>Ant provides a number of optional tasks for developing 
<a href="http://java.sun.com/products/ejb" target="_top">Enterprise Java Beans (EJBs)</a>. 
In general these tasks are specific to the particular vendor's EJB Server. At present the tasks support
<a href="http://www.bea.com" target="_top">Weblogic</a> 4.5.1 and 5.1 EJB servers. Over time we expect further optional tasks 
to support additional EJB Servers. 
</p>
<hr>
<h2><a name="ejbtasks">EJB Tasks</a></h2>
<table border="1" cellpadding="5">
 <tr><td>Task</td><td>Application Servers</td></tr>
 <tr><td><a href="#ddcreator">ddcreator</a></td><td>Weblogic 4.5.1</td></tr>
 <tr><td><a href="#ejbc">ejbc</a></td><td>Weblogic 4.5.1</td></tr>
 <tr><td><a href="#wlrun">wlrun</a></td><td>Weblogic 4.5.1, 5.1 &amp; 6.0</td></tr>
 <tr><td><a href="#wlstop">wlstop</a></td><td>Weblogic 4.5.1, 5.1 &amp; 6.0</td></tr>
 <tr><td><a href="#ejbjar">ejbjar</a></td><td>Weblogic 5.1 &amp; 6.0</td></tr>
</table>

<hr>
<h2><a name="ddcreator">ddcreator</a></h2>
<h3><b>Description:</b></h3>
<p>ddcreator will compile a set of Weblogic text-based deployment descriptors into a serialized
EJB deployment descriptor. The selection of which of the text-based descriptors are to be compiled
is based on the standard Ant include and exclude selection mechanisms. 
</p>

<h3>Parameters:</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">descriptors</td>
    <td valign="top">This is the base directory from which descriptors are selected.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">dest</td>
    <td valign="top">The directory where the serialised deployment descriptors will be written</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">classpath</td>
    <td valign="top">This is the classpath to use to run the underlying weblogic ddcreator tool. 
                     This must include the <code>weblogic.ejb.utils.DDCreator</code> class</td>
    <td valign="top" align="center">No</td>
  </tr>
</table>
<h3>Examples</h3>
<pre>&lt;ddcreator descriptors=&quot;${dd.dir}&quot; 
           dest=&quot;${gen.classes}&quot; 
           classpath=&quot;${descriptorbuild.classpath}&quot;&gt;
  &lt;include name=&quot;*.txt&quot; /&gt;
&lt;/ddcreator&gt;
</pre>

<hr>
<h2><a name="ejbc">ejbc</a></h2>
<h3><b>Description:</b></h3>
<p>The ejbc task will run Weblogic's ejbc tool. This tool will take a serialised deployment descriptor, 
examine the various EJB interfaces and bean classes and then generate the required support classes 
necessary to deploy the bean in a Weblogic EJB container. This will include the RMI stubs and skeletons
as well as the classes which implement the bean's home and remote interfaces.</p>
<p>
The ant task which runs this tool is able to compile several beans in a single operation. The beans to be 
compiled are selected by including their serialised deployment descriptors. The standard ant 
<code>include</code> and <code>exclude</code> constructs can be used to select the deployment descriptors
to be included. </p>
<p>
Each descriptor is examined to determine whether the generated classes are out of date and need to be 
regenerated. The deployment descriptor is de-serialized to discover the home, remote and 
implementation classes. The corresponding source files are determined and checked to see their 
modification times. These times and the modification time of the serialised descriptor itself are
compared with the modification time of the generated classes. If the generated classes are not present
or are out of date, the ejbc tool is run to generate new versions.</p>
<h3>Parameters:</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">descriptors</td>
    <td valign="top">This is the base directory from which the serialised deployment descriptors are selected.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">dest</td>
    <td valign="top">The base directory where the generated classes, RIM stubs and RMI skeletons are written</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">manifest</td>
    <td valign="top">The name of a manifest file to be written. This manifest will contain an entry for each EJB processed</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">src</td>
    <td valign="top">The base directory of the source tree containing the source files of the home interface,
                     remote interface and bean implementation classes.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">classpath</td>
    <td valign="top">This classpath must include both the <code>weblogic.ejbc</code> class and the
                     classfiles of the bean, home interface, remote interface, etc of the bean being
                     processed.</td>
    <td valign="top" align="center">No</td>
  </tr>
</table>
<h3>Examples</h3>
<pre>&lt;ejbc descriptors=&quot;${gen.classes}&quot;
           src=&quot;${src.dir}&quot; 
           dest=&quot;${gen.classes}&quot;
           manifest=&quot;${build.manifest}&quot; 
           classpath=&quot;${descriptorbuild.classpath}&quot;&gt;
  &lt;include name=&quot;*.ser&quot; /&gt;
&lt;/ejbc&gt;
</pre>

<hr>
<h2><a name="wlrun">wlrun</a></h2>
<h3><b>Description:</b></h3>

<p>The <code>wlrun</code> task is used to start a weblogic server. The task runs 
a weblogic instance in a separate Java Virtual Machine. A number of parameters 
are used to control the operation of the weblogic instance. Note that the task, 
and hence ant, will not complete until the weblogic instance is stopped.</p>

<h3>Parameters:</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required for 4.5.1 and 5.1</b></td>
    <td align="center" valign="top"><b>Required for 6.0</b></td>
  </tr>
  <tr>
    <td valign="top">BEA Home</td>
    <td valign="top">The location of the BEA Home qwhere the server's config is defined.
                     If this attribute is present, wlrun assumes that the server will
                     be running under Weblogic 6.0</td>
    <td valign="top" align="center">N/A</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">home</td>
    <td valign="top">The location of the weblogic home that is to be used. This is the location 
                     where weblogic is installed.</td>
    <td valign="top" align="center">Yes</td>
    <td valign="top" align="center">Yes. Note this is the absolute location, not relative to 
                                    BEA home.</td>
  </tr>
  <tr>
    <td valign="top">Domain</td>
    <td valign="top">The domain to which the server belongs.</td>
    <td valign="top" align="center">N/A</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">classpath</td>
    <td valign="top">The classpath to be used with the Java Virtual Machine that runs the Weblogic 
                     Server. Prior to Weblogic 6.0, this is typically set to the Weblogic 
                     boot classpath. Under Weblogic 6.0 this should include all the 
                     weblogic jars</td>
    <td valign="top" align="center">Yes</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">wlclasspath</td>
    <td valign="top">The weblogic classpath used by the Weblogic Server.</td>
    <td valign="top" align="center">No</td>
    <td valign="top" align="center">N/A</td>
  </tr>
  <tr>
    <td valign="top">properties</td>
    <td valign="top">The name of the server's properties file within the weblogic home directory
                     used to control the weblogic instance.</td>
    <td valign="top" align="center">Yes</td>
    <td valign="top" align="center">N/A</td>
  </tr>
  <tr>
    <td valign="top">name</td>
    <td valign="top">The name of the weblogic server within the weblogic home which is to be run. 
                     This defaults to &quot;myserver&quot;</td>
    <td valign="top" align="center">No</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">policy</td>
    <td valign="top">The name of the security policy file within the weblogic home directory that 
                     is to be used. If not specified, the default policy file <code>weblogic.policy</code>
                     is used.</td>
    <td valign="top" align="center">No</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">username</td>
    <td valign="top">The management username used to manage the server</td>
    <td valign="top" align="center">N/A</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">password</td>
    <td valign="top">The server's management password</td>
    <td valign="top" align="center">N/A</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">pkPassword</td>
    <td valign="top">The private key password so the server can decrypt the SSL 
                     private key file</td>
    <td valign="top" align="center">N/A</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">jvmargs</td>
    <td valign="top">Additional argument string passed to the Java Virtual Machine used to run the
                     Weblogic instance.</td>
    <td valign="top" align="center">No</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">args</td>
    <td valign="top">Additional argument string passed to the Weblogic instance.</td>
    <td valign="top" align="center">No</td>
    <td valign="top" align="center">No</td>
  </tr>
</table>

<h3>Nested Elements</h3>

<p>The wlrun task supports nested &lt;classpath&gt; and &lt;wlclasspath&gt; 
elements to set the repsective classpaths.</p>

<h3>Examples</h3>

<p>This example shows the use of wlrun to run a server under Weblogic 5.1</p>

<pre>
    &lt;wlrun taskname=&quot;myserver&quot;
           classpath=&quot;${weblogic.boot.classpath}&quot;
           wlclasspath=&quot;${weblogic.classes}:${code.jars}&quot;
           name=&quot;myserver&quot; 
           home=&quot;${weblogic.home}&quot;
           properties=&quot;myserver/myserver.properties&quot;/&gt;
</pre>

<p>This example shows wlrun being used to run the petstore server under
Weblogic 6.0</p>

<pre>
    &lt;wlrun taskname=&quot;petstore&quot;
           classpath=&quot;${weblogic.classes}&quot;
           name=&quot;petstoreServer&quot; 
           domain=&quot;petstore&quot; 
           home=&quot;${weblogic.home}&quot;
           password=&quot;petstorePassword&quot;
           beahome=&quot;${bea.home}&quot;/&gt;
</pre>

<hr>
<h2><a name="wlstop">wlstop</a></h2>
<h3><b>Description:</b></h3>

<p>The <code>wlstop</code> task is used to stop a weblogic instance which is 
currently running. To shut down an instance you must supply both a username and 
a password. These will be stored in the clear in the build script used to stop 
the instance. For security reasons, this task is therefore only appropriate in a 
development environment. </p>

<p>This task works for most version of Weblogic, including 6.0. You need to 
specify the BEA Home to have this task work correctly under 6.0</p>

<h3>Parameters:</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">BEAHome</td>
    <td valign="top">This attribute selects Weblogic 6.0 shutdown.</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">classpath</td>
    <td valign="top">The classpath to be used with the Java Virtual Machine that runs the Weblogic 
                     Shutdown comment.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">user</td>
    <td valign="top">The username of the account which will be used to shutdown the server</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">password</td>
    <td valign="top">The password for the account specified in the user parameter.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">url</td>
    <td valign="top">The URL which describes the port to which the server is listening for T3 connections. 
                     For example, t3://localhost:7001</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">delay</td>
    <td valign="top">The delay in seconds after which the server will stop. This defaults to an
                     immediate shutdown.</td>
    <td valign="top" align="center">No</td>
  </tr>
</table>

<h3>Nested Element</h3>

<p>The classpath of the welstop task can be set by a &lt;classpath&gt; nested element.</p>

<h3>Examples</h3>

<p>This example show the shutdown for a Weblogic 6.0 server</p>

<pre>
    &lt;wlstop classpath=&quot;${weblogic.classes}&quot;
            user=&quot;system&quot;
            url=&quot;t3://localhost:7001&quot;
            password=&quot;foobar&quot;
            beahome=&quot;${bea.home}&quot;/&gt;
</pre>

<hr>
<h2><a name="ejbjar">ejbjar</a></h2>
<h3><b>Description:</b></h3>

<p>This task is designed to support building of EJB1.1 jar files. Support is 
currently provided for 'vanilla' EJB1.1 jar files - i.e. those containing only 
the user generated class files and the standard deployment descriptor. Nested 
elements provide support for vendor specific deployment tools. These currently
include: </p>
<ul>
  <li>an element or building Weblogic 5.1/6.0 session/entity beans using the 
      weblogic.ejbc tool.</li>
  <li>an element for building TOPLink for WebLogic 2.5.1-enabled entity beans.</li>
</ul>

<p>This task supports two approaches to creating ejb jar files. The first 
approach assumes a particular naming convention for deployment descriptor files. 
For an Account bean, for example, the deployment descriptor would be named 
<code>Account-ejb-jar.xml</code>. This naming convention allows the task to 
distinguish deployment descriptors without relying on their positioning within a 
source tree. It is also used to derive the name of the .jar file which is 
generated. For the example this would be <code>Account.jar</code>. Vendor 
specific files are assumed to be named in a similar fashion. The deployment 
descriptor file which defines additional weblogic specific information for the 
above bean would be <code>Account-weblogic-ejb-jar.xml</code>. The second 
approach does not require a naming convention. This approach uses a specified a 
jar name for the resultant ejb jar. If the jar name is present, then no naming 
convention is required. If the jar name is not specified, then the default 
naming convention is expected for the deployment descriptor files.</p>

<p>The task works as a directory scanning task, and performs an action for each 
deployment descriptor found. As such the includes and excludes should be set 
to ensure that all desired EJB1.1 descriptors are found, but no application 
server descriptors are found. For each descriptor found, ejbjar will parse the 
deployment descriptor to determine the necessary class files which implement the 
bean. These files are assembled along with the deployment descriptors into a 
well formed EJB jar file. Any support files which need to be included in the 
generated jarcan be added with the &lt;support&gt; nested element. For each 
class included in the jar, ejbjar will scan for any super classes or super
interfaces. These will be added to the generated jar.</p>

<p>If no nested vendor-specific deployment elements are present, the task will 
simply generate a generic EJB jar. Such jars are typically used as the input to 
vendor-specific deployment tools. For each nested deployment element, a vendor 
specific deployment tool is run to generate a jar file ready for deployment in 
that vendor's EJB container. </p>

<p>The jar files are only built if they are out of date.  Each deployment tool 
element will examine its target jar file and determine if it is out of date with 
respect to the class files and deployment descriptors that make up the bean. If 
any of these files are newer than the jar file the jar will be rebuilt otherwise 
a message is logged that the jar file is up to date.</p>

<h3>Parameters:</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">descriptordir</td>
    <td valign="top">The base directory under which to scan for EJB 
                     deployment descriptors. If this attribute is not 
                     specified, then the deployment descriptors must be 
                     located in the directory specified by the 'srcdir' 
                     attribute.</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">srcdir</td>
    <td valign="top">The base directory containing the .class files that 
                     make up the bean. Note that this can be the same as 
                     the descriptordir if all files are in the same directory
                     tree.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">destdir</td>
    <td valign="top">The base directory into which generated jar files are 
                     deposited. Jar files are deposited in directories 
                     corresponding to their location within the descriptordir
                     namespace. Note that this attribute is only used if the 
                     task is generating generic jars (i.e. no vendor-specific
                     deployment elements have been specified).</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">basejarname</td>
    <td valign="top">The base name that is used for the generated jar files. 
                     If this attribute is specified, the generic jar file name 
                     will use this value as the prefix (followed by the value 
                     specified in the 'genericjarsuffix' attribute) and the 
                     resultant ejb jar file (followed by any suffix specified
                     in the nested element).</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">basenameterminator</td>
    <td valign="top">String value used to substring out a string from the name 
                     of each deployment descriptor found, which is then used to
                     locate related deployment descriptors (e.g. the WebLogic 
                     descriptors). For example, a basename of '.' and a 
                     deployment descriptor called 'FooBean.ejb-jar.xml' would
                     result in a basename of 'FooBean' which would then be used
                     to find FooBean.weblogic-ejb-jar.xml and 
                     FooBean.weblogic-cmp-rdbms-jar.xml, as well as to create 
                     the filenames of the jar files as FooBean-generic.jar and 
                     FooBean-wl.jar. This attribute is not used if the 
                     'basejarname' attribute is specified.</td>
    <td valign="top" align="center">No, defaults to '-'.</td>
  </tr>
  <tr>
    <td valign="top">genericjarsuffix</td>
    <td valign="top">String value appended to the basename of the deployment 
                     descriptor to create the filename of the generic EJB jar 
                     file.</td>
    <td valign="top" align="center">No, defaults to '-generic.jar'.</td>
  </tr>
  <tr>
    <td valign="top">classpath</td>
    <td valign="top">This classpath is used when resolving classes which
                     are to be added to the jar. Typically nested deployment
                     tool elements will also support a classpath which 
                     will be combined with this classpath when resolving 
                     classes</td>
    <td valign="top" align="center">No.</td>
  </tr>
  <tr>
    <td valign="top">flatdestdir</td>
    <td valign="top">Set this attribute to true if you want all generated jars
                     to be placed in the root of the destdir, rather than
                     according to the location of the deployment descriptor
                     within the descriptor dir hierarchy.</td>
    <td valign="top" align="center">No.</td>
  </tr>
</table>

<h3>Nested Elements</h3>

<p>In addition to the vendor specific nested elements, the ejbjar task provides 
three nested elements. </p>

<h4>Classpath</h4>

<p>The &lt;classpath&gt; nested element allows the classpath 
to be set. It is useful when setting the classpath from a reference path. IN all 
othe rrespects the behaviour is the same as the classpath attribute.</p>

<h4>dtd</h4>

<p>The &lt;dtd&gt; element is used to specify the local location of DTDs to be 
used when parsing the EJB deployment descriptor. Using a local DTD is much 
faster than loading the DTD across the net. If you are running ejbjar behind a 
firewall you may not even be able to access the remote DTD. The supported 
vendor-specific nested elements know the location of the required DTDs within 
the vendor class hierarchy and, in general, this means &lt;dtd&gt; elements are 
not required. It does mean, however, that the vendor's class hierarchy must be 
available in the classpath when Ant is started. If your want to run Ant without 
requiring the vendor classes in the classpath, you would need to use a 
&lt;dtd&gt; element.</p>

<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">publicId</td>
    <td valign="top">The public Id of the DTD for which the location is being provided</td>
    <td align="center" valign="top">Yes</td>
  </tr>
  <tr>
    <td valign="top">location</td>
    <td valign="top">The location of the local copy of the DTD. This can either be a
                     file or a resource loadable from the classpath.</td>
    <td align="center" valign="top">Yes</td>
  </tr>
</table>

<h4>support</h4>

<p>The &lt;support&gt; nested element is used to supply additional classes 
(files) to be included in the generated jars. The &lt;support&gt; element is a 
FileSet, so it can either reference a fileset declared elsewehere or it can be 
defined in-place with the approrpiate &lt;include&gt; and &lt;exclude&gt; nested 
elements. The files in the support fileset are added into the generated EJB jar 
in the same relative location as their location within the support fileset. Note 
that when ejbjar generates more than one jar file, the support files are added 
to each one.</p>

<h3>Vendor-specific deployment elements</h3>

Each vendor-specific nested element controls the generation of a deployable jar 
specific to that vendor's EJB container. The parameters for each supported 
deployment element are detailed here.

<h3>Weblogic element</h3>

<p>The weblogic element is used to control the weblogic.ejbc compiler for 
generating weblogic EJB jars. Prior to Ant 1.3, the method of locating CMP 
descriptors was to use the ejbjar naming convention. So if your ejb-jar was 
called, Customer-ejb-jar.xml, your weblogic descriptor was called Customer-
weblogic-ejb-jar.xml and your CMP descriptor had to be Customer-weblogic-cmp-
rdbms-jar.xml. In addition, the &lt;type-storage&gt; element in the weblogic 
descriptor had to be set to the standard name META-INF/weblogic-cmp-rdbms-
jar.xml, as that is where the CMP descriptor was mapped to in the generated 
jar.</p>

<p>There are a few problems with this scheme. It does not allow for more than 
one CMP descriptor to be defined in a jar and it is not compatible with the 
deployment descriptors generated by some tools.</p>

<p>In Ant 1.3, ejbjar parses the weblogic deployment descriptor to discover the 
CMP descriptors, which are then included automatically. This behaviour is 
controlled by the newCMP attribute. Note that if you move to the new method of 
determining CMP descriptors, you will need to update your weblogic deployment 
descriptor's &lt;type-storage&gt; element. In the above example, you would 
define this as META-INF/Customer-weblogic-cmp-rdbms-jar.xml.</p>

<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">destdir</td>
    <td valign="top">The base directory into which the generated weblogic ready
                     jar files are deposited. Jar files are deposited in 
                     directories corresponding to their location within the 
                     descriptordir namespace. </td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">genericjarsuffix</td>
    <td valign="top">A generic jar is generated as an intermediate step in 
                     build the weblogic deployment jar. The suffix used to 
                     generate the generic jar file is not particularly 
                     important unless it is desired to keep the generic 
                     jar file. It should not, however, be the same
                     as the suffix setting.</td>
    <td valign="top" align="center">No, defaults to '-generic.jar'.</td>
  </tr>
  <tr>
    <td valign="top">suffix</td>
    <td valign="top">String value appended to the basename of the deployment 
                     descriptor to create the filename of the WebLogic EJB 
                     jar file.</td>
    <td valign="top" align="center">No, defaults to '.jar'.</td>
  </tr>
  <tr>
    <td valign="top">classpath</td>
    <td valign="top">The classpath to be used when running the weblogic ejbc 
                     tool. Note that this tool typically requires the classes
                     that make up the bean to be available on the classpath. 
                     Currently, however, this will cause the ejbc tool to be 
                     run in a separate VM</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">wlclasspath</td>
    <td valign="top">Weblogic 6.0 will give a warning if the home and remote interfaces
                     of a bean are on the system classpath used to run weblogic.ejbc. 
                     In that case, the standard weblogic classes should be set with
                     this attribute (or equivalent nested element) and the 
                     home and remote interfaces located with the standard classpath
                     attribute</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">keepgeneric</td>
    <td valign="top">This controls whether the generic file used as input to 
                     ejbc is retained.</td>
    <td valign="top" align="center">No, defaults to false</td>
  </tr>
  <tr>
    <td valign="top">compiler</td>
    <td valign="top">This allows for the selection of a different compiler
                     to be used for the compilation of the generated Java
                     files. This could be set, for example, to Jikes to 
                     compile with the Jikes compiler.</td>
    <td valign="top" align="center">No</td>
  </tr>
  <tr>
    <td valign="top">rebuild</td>
    <td valign="top">This flag controls whether weblogic.ejbc is always 
                     invoked to build the jar file. In certain circumstances,
                     such as when only a bean class has been changed, the jar
                     can be generated by merely replacing the changed classes
                     and not rerunning ejbc. Setting this to false will reduce
                     the time to run ejbjar. 
                     </td>
    <td valign="top" align="center">No, defaults to true.</td>
  </tr>
  <tr>
    <td valign="top">keepgenerated</td>
    <td valign="top">Controls whether weblogic will keep the generated Java
                     files used to build the class files added to the 
                     jar. This can be useful when debugging
                     </td>
    <td valign="top" align="center">No, defaults to false.</td>
  </tr>
  <tr>
    <td valign="top">args</td>
    <td valign="top">Any additional arguments to be passed to the weblogic.ejbc
                     tool.
                     </td>
    <td valign="top" align="center">No.</td>
  </tr>
  <tr>
    <td valign="top">weblogicdtd</td>
    <td valign="top"><b>Deprecated</b>. Defines the location of the ejb-jar DTD in 
                     the weblogic class hierarchy. This should not be necessary if you
                     have weblogic in your classpath. If you do not, you should use a 
                     nested &lt;dtd&gt; element, described above. If you do choose
                     to use an attribute, you should use the ejbdtd attribute in
                     preference to this one, anyway.
                     </td>
    <td valign="top" align="center">No.</td>
  </tr>
  <tr>
    <td valign="top">wldtd</td>
    <td valign="top"><b>Deprecated</b>. Defines the location of the weblogic-ejb-jar 
                     DTD which covers the Weblogic specific deployment descriptors.
                     This should not be necessary if you have weblogic in your 
                     classpath. If you do not, you should use a nested &lt;dtd&gt; 
                     element, described above.
                     </td>
    <td valign="top" align="center">No.</td>
  </tr>
  <tr>
    <td valign="top">ejbdtd</td>
    <td valign="top"><b>Deprecated</b>. Defines the location of the ejb-jar DTD in 
                     the weblogic class hierarchy. This should not be necessary if you
                     have weblogic in your classpath. If you do not, you should use a 
                     nested &lt;dtd&gt; element, described above.
                     </td>
    <td valign="top" align="center">No.</td>
  </tr>
  <tr>
    <td valign="top">newCMP</td>
    <td valign="top">If this is set to true, the ne wmethod for locating
                     CMP descriptors will be used.</td>
    <td valign="top" align="center">No. Defaults to false</td>
  </tr>
  <tr>
    <td valign="top">oldCMP</td>
    <td valign="top"><b>Deprecated</b> This is an antonym for newCMP which should be used instead.</td>
    <td valign="top" align="center">No.</td>
  </tr>
</table>

<p>The weblogic nested element itself supports two nested elements &lt;classpath&gt; and 
&lt;wlclasspath&gt; which are used to set the respective classpaths. These nested elements
are useful when setting up class paths using reference Ids.</p>

<h3>TOPLink for Weblogic element</h3>

<p>The TopLink element is used to handle beans which use Toplink for the CMP operations. It
is derived from the standard weblogic element so it supports the same set of attributes please these
additional attributes</p>

<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">toplinkdescriptor</td>
    <td valign="top">This specifies the name of the TOPLink deployment descriptor file contained in the 
                     'descriptordir' directory.</td>
    <td valign="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">toplinkdtd</td>
    <td valign="top">This specifies the location of the TOPLink DTD file. This can be a file path or
                     a file URL. This attribute is not required, but using a local DTD is recommended.</td>
    <td valign="top" align="center">No, defaults to dtd file at www.objectpeople.com.</td>
  </tr>
</table>


<h3>Examples</h3>

<p>This example shows ejbjar being used to generate deployment jars using a 
Weblogic EJB container. This example requires the naming standard to be used for 
the deployment descriptors. Using this format will create a ejb jar file for 
each variation of '*-ejb-jar.xml' that is found in the deployment descriptor 
directory.</p>

<pre>
    &lt;ejbjar srcdir=&quot;${build.classes}&quot;
            descriptordir=&quot;${descriptor.dir}&quot;&gt;
      &lt;weblogic destdir=&quot;${deploymentjars.dir}&quot;
                classpath=&quot;${descriptorbuild.classpath}&quot;/&gt;
      &lt;include name=&quot;**/*-ejb-jar.xml&quot;/&gt;
      &lt;exclude name=&quot;**/*weblogic*.xml&quot;/&gt;
    &lt;/ejbjar&gt;
</pre>

<p>If weblogic is not in the Ant classpath, the following example 
shows how to specify the location of the weblogic DTDs. This 
example also show the use of a nested classpath element.</p>
   
<pre>
    &lt;ejbjar descriptordir=&quot;${src.dir}&quot; srcdir=&quot;${build.classes}&quot;&gt;
       &lt;weblogic destdir=&quot;${deployment.webshop.dir}&quot; 
                 keepgeneric=&quot;true&quot;
                 args=&quot;-g -keepgenerated ${ejbc.compiler}&quot;
                 suffix=&quot;.jar&quot;
                 oldCMP=&quot;false&quot;&gt;
         &lt;classpath&gt;
           &lt;pathelement path=&quot;${descriptorbuild.classpath}&quot;/&gt;
         &lt;/classpath&gt;
       &lt;/weblogic&gt;
       &lt;include name=&quot;**/*-ejb-jar.xml&quot;/&gt; 
       &lt;exclude name=&quot;**/*-weblogic-ejb-jar.xml&quot;/&gt;
       &lt;dtd publicId=&quot;-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN&quot;
            location=&quot;${weblogic.home}/classes/weblogic/ejb/deployment/xml/ejb-jar.dtd&quot;/&gt;
       &lt;dtd publicId=&quot;-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN&quot;
            location=&quot;${weblogic.home}/classes/weblogic/ejb/deployment/xml/weblogic-ejb-jar.dtd&quot;/&gt;
    &lt;/ejbjar&gt;
</pre>   


<p>This example shows ejbjar being used to generate a single deployment jar 
using a Weblogic EJB container. This example does not require the deployment 
descriptors to use the naming standard. This will create only one ejb jar file -
'TheEJBJar.jar'.</p>


<pre>
    &lt;ejbjar srcdir=&quot;${build.classes}&quot;
            descriptordir=&quot;${descriptor.dir}&quot;
            basejarname=&quot;TheEJBJar&quot;&gt;
      &lt;weblogic destdir=&quot;${deploymentjars.dir}&quot;
                classpath=&quot;${descriptorbuild.classpath}&quot;/&gt;
      &lt;include name=&quot;**/ejb-jar.xml&quot;/&gt;
      &lt;exclude name=&quot;**/weblogic*.xml&quot;/&gt;
    &lt;/ejbjar&gt;
</pre>

<p>This example shows ejbjar being used to generate deployment jars for a TOPLink-enabled entity bean using a 
Weblogic EJB container. This example does not require the deployment descriptors to use the naming standard.
This will create only one TOPLink-enabled ejb jar file - 'Address.jar'.</p>

<pre>
    &lt;ejbjar srcdir=&quot;${build.dir}&quot;
            destdir=&quot;${solant.ejb.dir}&quot;
            descriptordir=&quot;${descriptor.dir}&quot;
            basejarname=&quot;Address&quot;&gt;
            &lt;weblogictoplink destdir=&quot;${solant.ejb.dir}&quot;
                    classpath=&quot;${java.class.path}&quot;
                    keepgeneric=&quot;false&quot;
                    toplinkdescriptor=&quot;Address.xml&quot;
                    toplinkdtd=&quot;file:///dtdfiles/toplink-cmp_2_5_1.dtd&quot;
                    suffix=&quot;.jar&quot;/&gt;
            &lt;include name=&quot;**/ejb-jar.xml&quot;/&gt;
            &lt;exclude name=&quot;**/weblogic-ejb-jar.xml&quot;/&gt;
    &lt;/ejbjar&gt;
</pre>

<p>This final example shows how you would set-up ejbjar under Weblogic 6.0. It also shows the use of the 
&lt;support&gt; element to add support files

<pre>
    &lt;ejbjar descriptordir=&quot;${dd.dir}&quot; srcdir=&quot;${build.classes.server}&quot;&gt;
       &lt;include name=&quot;**/*-ejb-jar.xml&quot;/&gt; 
       &lt;exclude name=&quot;**/*-weblogic-ejb-jar.xml&quot;/&gt;
       &lt;support dir=&quot;${build.classes.server}&quot;&gt;
            &lt;include name=&quot;**/*.class&quot;/&gt; 
       &lt;/support&gt;
       &lt;weblogic destdir=&quot;${deployment.dir}&quot; 
                 keepgeneric=&quot;true&quot;
                 suffix=&quot;.jar&quot;
                 rebuild=&quot;false&quot;&gt;
         &lt;classpath&gt;
            &lt;pathelement path=&quot;${build.classes.server}&quot;/&gt;
         &lt;/classpath&gt;
         &lt;wlclasspath&gt;
            &lt;pathelement path=&quot;${weblogic.classes}&quot;/&gt;
         &lt;/wlclasspath&gt;
       &lt;/weblogic&gt;
    &lt;/ejbjar&gt;
</pre>


</body>

</html>


