# Apache Ant ServerDeploy User Manual

by

- Christopher A. Longo (cal@cloud9.net)
- Cyrille Morvan (cmorvan@ingenosya.com)

At present the tasks support:

- WebLogic servers
- JOnAS 2.4 Open Source EJB server

Over time we expect further optional tasks to support additional J2EE Servers.

Task | Application Servers
--- | ---
serverdeploy | Nested Elements
generic | Generic task
jonas | JOnAS 2.4
weblogic | WebLogic

## ServerDeploy element

### Description

The `serverdeploy` task is used to run a "hot" deployment tool for vendor-specific J2EE server. The task requires nested elements which define the attributes of the vendor-specific deployment tool being executed. Vendor-specific deployment tools elements may enforce rules for which attributes are required, depending on the tool.

### Parameters

Attribute | Description | Required
--- | --- | ---
action | This is the action to be performed. For most cases this will be deploy. Some tools support additional actions, such as delete, list, undeploy, update, ... | Yes
source | A fully qualified path/filename of the component to be deployed. This may be an `.ear`, `.jar`, `.war`, or any other type that is supported by the server. | Tool dependent

### Parameters specified as nested elements

The `serverdeploy` task supports a nested `classpath` element to set the classpath.

### Vendor-specific nested elements

Also supported are nested vendor-specific elements.

### Parameters used for all tools

Attribute | Description | Required
--- | --- | ---
classpath | The classpath to be passed to the JVM running the tool. The classpath may also be supplied as a nested element. | Tool dependent
server | The address or URL for the server where the component will be deployed. | Tool dependent
username | The user with privileges to deploy applications to the server. | Tool dependent
password | The password of the user with privileges to deploy applications to the server. | Tool dependent

### Generic element

This element is provided for generic Java-based deployment tools. The generic task accepts (but does not require) nested `arg` and `jvmarg` elements. A JVM will be spawned with the provided attributes. It is recommended that a vendor-specific element be used over the generic one if at all possible.

The following attributes are supported by the generic element.

Attribute | Description | Required
--- | --- | ---
classname | This is the fully qualified classname of the Java based deployment tool to execute. | Yes

#### Nested elements

The generic element supports nested `<arg>` and `<jvmarg>` elements.

### Example

This example shows the use of generic deploy element to deploy a component using a Java based deploy tool:

    <serverdeploy action="deploy" source="${lib.dir}/ejb_myApp.ear">
        <generic classname="com.yamato.j2ee.tools.deploy.DeployTool"
                 classpath="${classpath}"
                 username="${user.name}"
                 password="${user.password}">
            <arg value="-component=WildStar"/>
            <arg value="-force"/>
            <jvmarg value="-ms64m"/>
            <jvmarg value="-mx128m"/>
        </generic>
    </serverdeploy>

### WebLogic element

The WebLogic element contains additional attributes to run the `weblogic.deploy` deployment tool.

Valid actions for the tool are deploy, undeploy, list, update, and delete.

If the action is deploy or update, the application and source attributes must be set. If the action is undeploy or delete, the application attribute must be set. If the username attribute is omitted, it defaults to system. The password attribute is required for all actions.

Attribute | Description | Required
--- | --- | ---
application | This is the name of the application being deployed | Yes
component | This is the component string for deployment targets. It is in the form `<component>:<target1>,<target2>...` Where component is the archive name (minus the `.jar`, `.ear`, `.war` extension). Targets are the servers where the components will be deployed | no
debug | If set to true, additional information will be printed during the deployment process. | No

### Examples

This example shows the use of `serverdeploy` to deploy a component to a WebLogic server:

    <serverdeploy action="deploy" source="${lib.dir}/ejb_myApp.ear">
        <weblogic application="myapp"
                  server="t3://myserver:7001"
                  classpath="${weblogic.home}/lib/weblogic.jar"
                  username="${user.name}"
                  password="${user.password}"
                  component="ejb_foobar:myserver,productionserver"
                  debug="true"/>
    </serverdeploy>

This example shows `serverdeploy` being used to delete a component from a WebLogic server:

    <serverdeploy action="delete" source="${lib.dir}/ejb_myApp.jar"/>
        <weblogic application="myapp"
                  server="t3://myserver:7001"
                  classpath="${weblogic.home}/lib/weblogic.jar"
                  username="${user.name}"
                  password="${user.password}"/>
    </serverdeploy>

### JOnAS (Java Open Application Server) element

The JOnAS element contains additional attributes to run the `JonasAdmin` deployment tool.

Valid actions for the tool are deploy, undeploy, list and update.

You can't use user and password property with this task.

Attribute | Description | Required
--- | --- | ---
jonasroot | The root directory for JOnAS. | Yes
orb | Choose your ORB: RMI, JEREMIE, DAVID, ... The corresponding JOnAS JAR is automatically added to the classpath. If your orb is DAVID (RMI/IIOP) you must specify davidhost and davidport properties. | No; defaults to the ORB present in classpath
davidhost | The value for the system property: `david.CosNaming.default_host`. | No
davidport | The value for the system property: `david.CosNaming.default_port`. | No
classname | This is the fully qualified classname of the Java based deployment tool to execute. | No; default is `org.objectweb.jonas.adm.JonasAdmin`

#### Nested elements

The `jonas` element supports nested `<arg>` and `<jvmarg>` elements.

### Examples

This example shows the use of `serverdeploy` to deploy a component to a JOnAS server:

    <serverdeploy action="deploy" source="${lib.dir}/ejb_myApp.jar">
        <jonas server="MyJOnAS" jonasroot="${jonas.root}">
           <classpath>
               <pathelement path="${jonas.root}/lib/RMI_jonas.jar"/>
               <pathelement path="${jonas.root}/config/"/>
           </classpath>
        </jonas>
    </serverdeploy>

This example shows `serverdeploy` being used to list the components from a JOnAS server and a WebLogic server:

    <serverdeploy action="list"/>
        <jonas jonasroot="${jonas.root}" orb="JEREMIE"/>
        <weblogic application="myapp"
                  server="t3://myserver:7001"
                  classpath="${weblogic.home}/lib/weblogic.jar"
                  username="${user.name}"
                  password="${user.password}"/>
    </serverdeploy>