+

Search Tips   |   Advanced Search

Manipulating additional attributes for a deployed application


We can manipulate attributes for a deployed application through the admin console, wsadmin, or by programming. Use this example to manipulate attributes that are not exposed during or after application installation through the AppDeploymentTask object.

This task assumes a basic familiarity with MBean programming and the ConfigService interfaces. Read about MBean programming and ConfigService interfaces in the APIs documentation.

Perform the following tasks for the deployed application to manipulate attributes that are not exposed through the AppDeploymentTask object. The attributes are saved in deployment.xml that is created in the configuration repository for each deployed application.

 

  1. Create a session.

  2. Connect to WAS.

  3. Locate the ApplicationDeployment object.

  4. Manipulate the attributes.

  5. Save the changes.

  6. Clean up the session.

 

Results

After you successfully run the code, the attributes are updated in deployment.xml for the deployed application.

 

Example

The following example shows how to manipulate the startingWeight, warClassLoaderPolicy, and classloader attributes based on the previous steps.

import java.util.Properties;
 import javax.management.Attribute;
 import javax.management.AttributeList;
 import javax.management.ObjectName;
 import com.ibm.websphere.management.AdminClient;
 import com.ibm.websphere.management.AdminClientFactory;
 import com.ibm.websphere.management.Session;
 import com.ibm.websphere.management.configservice.ConfigService;
 import com.ibm.websphere.management.configservice.ConfigServiceHelper;
 import com.ibm.websphere.management.configservice.ConfigServiceProxy;
 import com.ibm.websphere.management.exception.ConfigServiceException;
 import com.ibm.websphere.management.exception.ConnectorException;
 public class AppManagementSample1 {

  public static void main(String[] args) {
    String hostName = "localhost";
    String port = "8880";
    String appName = "ivtApp";

    ConfigService configService = null;

    
// create a session.
    Session session = new Session();

    
// establish connection to the server.
    try {
      Properties props = new Properties();
      props.setProperty(AdminClient.CONNECTOR_TYPE, 
          AdminClient.CONNECTOR_TYPE_SOAP);
      props.setProperty(AdminClient.CONNECTOR_HOST, hostName);
      props.setProperty(AdminClient.CONNECTOR_PORT, port);
      AdminClient adminClient = 
        AdminClientFactory.createAdminClient(props);

      
// create a config service proxy object.
      configService = new ConfigServiceProxy(adminClient);

      
// Locate the application object.
      ObjectName rootID = configService.resolve(session, "Deployment="+appName)[0];
      System.out.println ("rootID is: " + rootID);

      
// Locate the ApplicationDeployment object from the root. 
      ObjectName appDeplPattern = ConfigServiceHelper.createObjectName
            (null, "ApplicationDeployment");
      /*
      ObjectName appDeplID = configService.queryConfigObjects(session, 
          rootID, appDeplPattern, null)[0];
      */
      AttributeList list1 = configService.getAttributes(session, 
          rootID, new String[]{"deployedObject"}, false);
      ObjectName appDeplID = (ObjectName)
        ConfigServiceHelper.getAttributeValue(list1, "deployedObject");
      System.out.println ("appDeplID: " + appDeplID);
      
      
// Locate the class loader.
      
      
// Change the starting weight through the startingWeight attribute. The starting weight 
       
// affects the order in which applications start.
      AttributeList attrList = new AttributeList();
      Integer newWeight = new Integer (10);
      attrList.add(new Attribute("startingWeight", newWeight));

      
// Change the WAR class loader policy through the warClassLoaderPolicy attribute by 
       
// specifying SINGLE or MULTIPLE.
      
// SINGLE=one classloader for all WAR modules
      attrList.add(new Attribute("warClassLoaderPolicy", "SINGLE"));

      
// Set the class loader mode to PARENT_FIRST or PARENT_LAST.
      AttributeList clList = (AttributeList) configService.getAttribute
        (session, appDeplID, "classloader");
      ConfigServiceHelper.setAttributeValue (clList, "mode",         "PARENT_LAST");
      attrList.add (new Attribute ("classloader", clList));

      
// Set the new values.
      configService.setAttributes(session,  appDeplID, attrList);

      
// Save the changes.
      configService.save(session, false);

    } catch (Exception ex) {
      ex.printStackTrace();
    } finally {
            
// Clean up the session.
      try {
        configService.discard(session);
      }
      catch (ConfigServiceException csEx)
      {
        csEx.printStackTrace();
      }
      catch (ConnectorException cnEx)
      {
        cnEx.printStackTrace();
      }
    }    
  }
}


Application management
Additional Application Programming Interfaces (APIs)

 

Related tasks


Install an application through programming