ProfileService DeploymentManager in 5.x


The DeploymentManager is a client-side plugin for distributing and controlling deployments in a profile.


Compared to the DeploymentManager in 5.0.x there are some differences:

  • The DeploymentPhase has been removed.

  • The usage is now symmetric independent of the boolean isCopyContent flag.

  • loadProfile(ProfileKey key) is not required to be able use the DeploymentManager.

    Not loading a profile will copy the deployment to the default location specified in deploy/profileservice-jboss-beans.xml

In general loadProfile specifies the target profile. A set of profiles which support deployment actions can be obtained using deployMgr.getProfiles(). Not loading a profile or deployMgr.loadProfile(new ProfileKey(ProfileKey.DEFAULT)); is recommended.

Example Usage

import javax.naming.InitialContext;

import org.jboss.profileservice.spi.ProfileService;

public class DeploymentTest
    public void deployAndUndeploy(String deploymentName, URL deploymentURL) throws Exception
        DeploymentManager deployMgr = getDeploymentManager();
        if(deployMgr == null)
            throw new IllegalStateException("Null deployment manager.");

        String[] repositoryNames = null;
        // Distribute a zipped file
        DeploymentProgress distribute = deployMgr.distribute(deploymentName, deploymentURL, true);
        // Run;
        // Check if the deploy failed
        // Get the deployed names
        repositoryNames = distribute.getDeploymentID().getRepositoryNames();
        // Start the deployment
        DeploymentProgress start = deployMgr.start(repositoryNames);
        // Run;
        // Stop the deployment
        DeploymentProgress stop = deployMgr.stop(repositoryNames);
        // Run;
        // Remove the deployment
        DeploymentProgress remove = deployMgr.remove(repositoryNames);
        // Run;
    void checkFailed(DeploymentProgress progress) throws Exception
        DeploymentStatus status = progress.getDeploymentStatus();
            throw new RuntimeException("Failed to deploy", status.getFailure());
    DeploymentManager getDeploymentManager() throws Exception
        ProfileService ps = getProfileService();
        return ps.getDeploymentManager();
    ProfileService getProfileService() throws Exception
        InitialContext ctx = getInitialContext();
        return (ProfileService) ctx.lookup("ProfileService");
    InitialContext getInitialContext() throws Exception
        return new InitialContext();


The main operations basically are:

  • distribute - distribute a deployment.
    The boolean flag isCopyContent indicates if the content should be copied in the applications directory.
    Furthermore this will 'lock' the deployment, so it won't get deployed by the hot-deployment scanner.
    Note: if isCopyContent is true, a zipped file is expected. Copying a directory is currently not supported.

  • start
    starts the application on the server and enables hot-deployment checking for this deployment.

  • redeploy
    stops and starts the application without modifying any of the deployment contents.
  • stop
    only stops the application on the server, without deleting the file.

  • remove
    removes the deployment from the file system.


Note that does not throw server side Exceptions. Errors during the deployment progress are passed to the DeploymentStatus and should be checked after each operation.