Cargo : Deployer This page last changed on Mar 11, 2006 by vmassol. ### Definition Performs a hot deployment of a Deployable ### Explanation You use a `Deployer` when you wish to deploy a Deployable into a running container (this is known as Hot Deployment). There are 2 types of Deployers: Local Deployer: A local deployer deploys in a locally installed container. Usually, local deployers use the file system to perform the deployment by copying the deployable to a container-specific target directory. Remote Deployer: A remote deployer is used to deploy to a container that can be on the same machine or on some remote machine. Deploying remotely requires passing information such as username and password of the user to use for deploying, etc. These information are passed using a Runtime Configuration. ### Deployer features Local Deployer — Performs a hot deployment of a Deployable on a locally installed container Remote Deployer — Performs a hot deployment of a Deployable on a container running on a remote machine ### Example using the Java API To instantiate a `Deployer` you need to know its class name. A `Deployer` is specific to a container (you can find the class names on the container page listing all containers). The deployment is done using one of the `Deployer.deploy(...)` APIs. Some `deploy(...)` signatures accept a `DeployableMonitor` which is used to wait till the container has not finished deploying. Cargo currently offers a `URLDeployableMonitor` which waits by polling a provided URL (see below in the example). Whent the URL becomes available the monitor considers that the `Deployable` is fully deployed. In the future, Cargo will provide other `DeployableMonitor` such as a `Jsr88DeployableMonitor`. #### Example without using a DeployableMonitor Hot-deploying a WAR on Resin 3.0.9 without waiting for the deployment to finish:
    InstalledLocalContainer container = new Resin3xInstalledLocalContainer(
        new Resin3xStandaloneConfiguration(new File("target/resin3x")));
    container.setHome(new File("c:/apps/resin-3.0.9"));

    container.start();

    DeployableFactory factory = new DefaultDeployableFactory();
    WAR war = factory.createDeployable(container.getId(), "path/to/my.war",
        DeployableType.WAR);

    Deployer deployer = new ResinDeployer();
    deployer.deploy(war);
Please note that the `Deployer.deploy()` method call does not wait for the `Deployable` to be fully deployed before returning. #### Example using a URLDeployableMonitor Hot-deploying an WAR on Resin 3.0.9 and waiting for the deployment to finish:
    InstalledLocalContainer container = new Resin3xInstalledLocalContainer(
        new Resin3xStandaloneConfiguration(new File("target/resin3x")));
    container.setHome(new File("c:/apps/resin-3.0.9"));

    container.start();

    DeployableFactory factory = new DefaultDeployableFactory();
    WAR war = factory.createDeployable(container.getId(), "path/to/my.war",
        DeployableType.WAR);

    Deployer deployer = new ResinDeployer();
    deployer.deploy(war, new URLDeployableMonitor("http://server:port/some/url"));
The `http://server:port/some/url` must point to a resource that is serviced by the `Deployable` being deployed. ### Example using the Ant API There's currently no Ant task for performing hot deployments.

Document generated by Confluence on Mar 22, 2006 15:28