<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Borland EJB Tasks</title>
<link rel="stylesheet" type="text/css" href="../stylesheets/antmanual.css">
</head>

<body>

<h2><a name="log">BorlandDeploy</a>Tool</h2>
<p>by Benoit Moussaud (<a href="mailto:benoit.moussaud@criltelecom.com">benoit.moussaud@criltelecom.com</a>)</p>


<h3>Description</h3>
<p>The BorlandDeployTool is a vendor specific nested element for the Ejbjar optional task.</p>
<p>BorlandDeploymentTool is dedicated to the Borland Application Server 4.5.x and Borland
  Enterprise Server 5.x. It  generates and compiles the stubs and skeletons for all ejb described into the
  Deployment Descriptor, builds the jar file including the support files and
  verify whether the produced jar is valid or not.</p>

<p>Benoit Moussaud maintains a separate <a
href="http://www.moussaud.org/ejbjar.html">FAQ</a> for this task at
his homepage.</p>

<h3>Borland element</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top" width="63"><b>Attribute</b></td>
    <td valign="top" width="915"><b>Description</b></td>
    <td align="center" valign="top" width="62"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top" width="63">destdir</td>
    <td valign="top" width="915">The base directory into which the generated borland
      ready jar files are deposited</td>
    <td align="center" valign="middle" width="62">yes</td>
  </tr>
  <tr>
    <td valign="top" width="63">debug</td>
    <td valign="top" width="915">If true, turn on the debug mode for each borland
      tools (java2iiop, iastool ...) default = false</td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>
  <tr>
    <td valign="top" width="63">verify</td>
    <td valign="top" width="915">If true, turn on the verification at the end
      of the jar production (default = false)</td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>
  <tr>
    <td valign="top" width="63">verifyargs</td>
    <td valign="top" width="915">extra parameter for verify command</td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>
  <tr>
    <td valign="top" width="63">suffix</td>
    <td valign="top" width="915">String value appended to the basename of the
      deployment descriptor to create the filename of the Borland EJB jar file.</td>
    <td align="center" valign="middle" width="62">No, defaults to '-ejb.jar'.</td>
  </tr>
  <tr>
    <td valign="top" width="63">basdtd</td>
    <td valign="top" width="915"><b>Deprecated</b>. Defines the location of the
      DTD which covers the Borland specific deployment descriptors.
      This should not be necessary if you have borland in your classpath. If you
      do not, you should use a nested
      <a href="ejb.html#ejbjar-dtd"><code>&lt;dtd&gt;</code></a> element, described
      in the ejbjar task documentation.</td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>
  <tr>
    <td valign="top" width="63">ejbdtd</td>
    <td valign="top" width="915"><b>Deprecated</b>. Defines the location of the
      ejb-jar DTD in the class hierarchy. This should not be necessary
      if you have borland in your classpath. If you do not, you should use a
      nested <a href="ejb.html#ejbjar-dtd"><code>&lt;dtd&gt;</code></a> element,
      described in the ejbjar task
      documentation. </td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>
  <tr>
    <td valign="top" width="63">generateclient </td>
    <td valign="top" width="915">If true, turn on the generation of the corresponding
      ejbjar (default = false)</td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>
  <tr>
    <td valign="top" width="63">version</td>
    <td valign="top" width="915">set the Borland Application Version.
            <ul>
              <li>4 means B.A.S (Borland Application Server) 4.x, target will add ejb-inprise.xml file</li>
              <li>5 means B.E.S (Borland Application Server) 5.x, target will add ejb-borland.xml file</li>
            </ul>
          </td>
    <td align="center" valign="middle" width="62">No, defaults to 4</td>
  </tr>
  <tr>
    <td valign="top" width="63">java2iiopParams </td>
    <td valign="top" width="915">If filled, the params are added to the java2iiop command (ex: -no_warn_missing_define)</td>
    <td align="center" valign="middle" width="62">no</td>
  </tr>

</table>

<h3>Examples</h3>
<p>The following build.xml snippet is an example of how to use Borland element
  into the ejbjar task</p>
<pre>    &lt;ejbjar srcdir=&quot;${build.classes}&quot; basejarname=&quot;vsmp&quot; descriptordir=&quot;${rsc.dir}/hrmanager&quot;&gt;
        &lt;borland destdir=&quot;lib&quot; verify=&quot;on&quot; generateclient=&quot;on&quot; version=&quot;5&quot;&gt;
          &lt;classpath refid=&quot;classpath&quot;/&gt;
        &lt;/borland&gt;
        &lt;include name=&quot;**\ejb-jar.xml&quot;/&gt;
        &lt;support dir=&quot;${build.classes}&quot;&gt;
          &lt;include name=&quot;demo\*.class&quot;/&gt;
          &lt;include name=&quot;demo\helper\*.class&quot;/&gt;
         &lt;/support&gt;
     &lt;/ejbjar&gt;</pre>
<pre>The borland element will generate into the lib dir an ejb jar file using the deployment descriptor placed into the ${rsc.dir}/hrmanager directory.
The verify phase is turned on and the generate client phase as well.
</pre>

<h3>&nbsp;</h3>
<p align="center">Copyright &copy; 2001-2004 The Apache Software Foundation. All rights
Reserved.</p>

</body>
</html>

