Version 1

    A DeploymentTemplate is a server-side template for creating a DeploymentContext given a set of ManagedProperty representing the template properties to set in the resulting deployment.

     

    A DeploymentTemplateInfo contains a set of ManagedProperties used to create the template. The DeploymentTemplate itself creates the deployment based on the properties.

     

    DeploymentTemplateInfo

    The deploymentTemplate contains:

    • name: the name of the corresponding deployment template
    • description: a description about the deployment template
    • properties: the avaiable managed properties for this template
    public interface DeploymentTemplateInfo
    {
       String getName();
    
       String getDescription();
    
       Map<String, ManagedProperty> getProperties();
    }
    

     

    The server-side template will create a deployment based on the properties from the template info. The templates will be regisered in the ManagementView and can be used over the deployment template related operations exposed by the ManagementView:

     

    public interface ManagementView
    {
    
       // ...
    
       /**
        * Get the registered DeploymentTemplate names.
        * @return the template names
        */
       Set<String> getTemplateNames();
    
       /**
        * Get a deployment template.
        * @param name - the deployment name to identify the template to retrieve
        * @return the named DeploymentTemplate
        * @throws NoSuchDeploymentException - if there is no such template
        */
       DeploymentTemplateInfo getTemplate(String name)
          throws NoSuchDeploymentException;
    
       /**
        * Create a deployment based on the given DeploymentTemplateInfo.
        * @param deploymentBaseName the base name
        * @param info the deployment template info
        * @throws Exception
        */
       void applyTemplate(String deploymentBaseName, DeploymentTemplateInfo info)
           throws Exception;
    
       // ...
    }
    

     

     

    Example usage
    // The queue names
    String name = "testQueueTemplate";
    String jndiName = name + "JndiName";
          
    // Get the queue deployment template
    ManagementView mgtView = getManagementView();
    DeploymentTemplateInfo info = mgtView.getTemplate("QueueTemplate");
          
    // Update the template values
    info.getProperties().get("name").setValue(SimpleValueSupport.wrap(name));
    info.getProperties().get("JNDIName").setValue(SimpleValueSupport.wrap(jndiName));
    
    // Create the deployment
    mgtView.applyTemplate(jndiName, info);
          
    // Get the created managed component
    ComponentType type = KnownComponentTypes.JMSDestination.Queue.getType();
    ManagedComponent queue = mgtView.getComponent(jndiName, type);
    assertNotNull(queue);
    

    This example will create a testQueueTemplate-service.xml deployment in the deploy/ folder containing a simple JMSQueue with the name "testQueueTemplate" and the JndiName "testQueueTemplateJndiName".