+

Search Tips   |   Advanced Search

Edit a business-level application using programming

We can edit the information of a business-level application such as its description. A business-level application is an administrative model that captures the entire definition of an enterprise-level application.

This task assumes a basic familiarity with command framework programming. Read about command framework programming in the APIs documentation.

Before we can edit a business-level application, you must have created a business-level application.

We can edit a business-level application using programming, the console, or wsadmin.sh.

Provide the blaID parameter to specify the business-level application that you are editing.

Perform the following tasks to edit a business-level application using programming.

  1. Connect to the application server.

    The command framework allows the administrative command to be created and run with or without being connected to the application server. This step is optional if the application server is not running.

  2. Create the command manager.

    The command manager provides the functionality to create a new administrative command or query existing administrative commands.

  3. Optionally create the asynchronous command handler for listening to command notifications.
  4. Business-level application commands are implemented as asynchronous commands. To monitor the progress of the running command, we have to create an asynchronous command handler to receive notifications that the command generates.

  5. Create the asynchronous command client.

    An asynchronous command client provides a higher level interface to work with an asynchronous command. If we created an asynchronous command handler in the previous step, the handler is passed to the asynchronous command client. The asynchronous command client forwards the command notification to the handler and helps to control running of the command.

  6. Use the command manager created in a previous step to create the command that edits a business-level application.

    The command name is editBLA. Use the required blaID parameter to specify the business-level application that you are editing.

  7. Call the processCommandParameters method in the asynchronous command client to process the command parameters.

    The command framework asynchronous command model requires this call.

  8. Set up the command step parameter by setting the description parameter.

    The BLAOptions step contains a description for the business-level application. We can edit the description parameter in the BLAOptions step.

  9. Call the asynchronous command client to run the command to edit a business-level application.

    You could have created an asynchronous command handler to implement the AsyncCommandHandlerIF interface class in a previous step. If we did, the asynchronous command client listens to command notifications and forwards the notifications to the handler. The handler performs any necessary actions while waiting for the command to complete.

  10. Check the command result when the command completes.

    When the command finishes running, control is returned to the caller. We can then check the result by calling the command.getCommandResult method.


Results

After you successfully run the code, the business-level application is edited.


Example

The following example shows how to edit a business-level application based on the previous steps. Some statements are split on multiple lines for printing purposes.

package com.ibm.ws.management.application.task;

import java.util.Properties;

import com.ibm.websphere.management.AdminClient;
import com.ibm.websphere.management.AdminClientFactory;
import com.ibm.websphere.management.Session;
import com.ibm.websphere.management.cmdframework.AdminCommand;
import com.ibm.websphere.management.cmdframework.CommandMgr;
import com.ibm.websphere.management.cmdframework.CommandResult;
import com.ibm.websphere.management.cmdframework.CommandStep;
import com.ibm.websphere.management.cmdframework.TaskCommand;
import com.ibm.websphere.management.async.client.AsyncCommandClient;

public class EditBLA {

    public static void main(String[] args) {
        try {

            // Connect to the application server.
            // This step is optional if you use the local command manager.
            // Comment out the following lines to get the soapClient SOAP client if
            // you are going to use the local command manager. You would
            // comment out the lines to and including             // CommandMgr cmdMgr = 
            // CommandMgr.getClientCommandMgr(soapClient);

            String host = "localhost"; // Change to the host if it is not localhost.
            String port = "8880"; // Change to the port number if it is not 8880.

            Properties config = new Properties();
            config.put(AdminClient.CONNECTOR_HOST, host);
            config.put(AdminClient.CONNECTOR_PORT, port);
            config.put(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
            System.out.println("Config: " + config);
            AdminClient soapClient =
                              AdminClientFactory.createAdminClient(config);

            // Create command manager.
            CommandMgr cmdMgr = CommandMgr.getClientCommandMgr(soapClient);

            // Comment out the previous lines to create a client command             // manager if you are using a local command manager.
            // Uncomment the following line to create a local command             // manager.
            //
            // CommandMgr cmdMgr = CommandMgr.getCommandMgr();

            System.out.println("\nCreated command manager");

            // Optionally create an asynchronous command handler.
            // Comment out the following line if no further handling
            // of command notification is required.
            AsyncCmdTaskHandler listener = new AsyncCmdTaskHandler();

            // Create an asynchronous command client.

            // Set up the session.
            // This example creates a new session. We can replace the           // code below to use an existing session that has been 
            // created.
            String id = Long.toHexString(System.currentTimeMillis());
            String user = "content" + id;
            Session session = new Session(user, true);

            // If no command handler is used, replace the listener with             // null for the following AsyncCommandClient object.
            AsyncCommandClient asyncCmdClientHelper = new                             AsyncCommandClient(session, listener);
            System.out.println("\nCreated async command client");

            // Create the command that edits the business-level application.
            String cmdName = "editBLA";
            AdminCommand cmd = cmdMgr.createCommand(cmdName);
            cmd.setConfigSession(session); // Edit an existing business-level
                                           // application using the session                                            // created.
            System.out.println("\nCreated " + cmdName);


            // Set the blaID parameter ( required).
            // Examples of valid formats for the blaID parameter are:    
            // - bName 
            // - blaname=bName  
            // - WebSphere:blaname=bName
            // This parameter accepts an incomplete ID as long as the incomplete
            // ID can resolve to a unique business-level application.
            String blaID = "bla1";   // Replace bla1 with the value of the blaID.
            cmd.setParameter("blaID", blaID); 

            System.out.println("\nSet blaID parameter to "
                    + cmd.getParameter("blaID"));

            // Call the asynchronous client helper to process parameters.
            try {
                asyncCmdClientHelper.processCommandParameters(cmd);
                System.out.println("\nCompleted process command " +
                                       "parameters");
            } catch (Throwable th) {
                System.out.println("Throwing an exception from " +
                        "asyncCmdClientHelper.processCommandParameters(cmd).");
                th.printStackTrace();
                System.exit(-1);
            }

            // Set up the step parameters for the BLAOptions step.
            // The only step parameter we can edit is description.
            String stepName = "BLAOptions";
            CommandStep step = ((TaskCommand) cmd).gotoStep(stepName);

            // Edit the business-level application description.
            String description = "bla for testing"; // Replace with the value.

            for (int i = 0; i < step.getNumberOfRows(); i++) {
                // The following lines set the description                 // step parameter.
                step.setParameter("description", description, i);
                System.out.println("\nSet description parameter to " +
                        step.getParameter("description", i));
            }

            // Run the command to edit the business-level application.
            asyncCmdClientHelper.execute(cmd);
            System.out.println("\nCompleted command execution");

            // Check the command result.
            CommandResult result = cmd.getCommandResult();
            if (result != null) {
                if (result.isSuccessful()) {
                    System.out.println("\nCommand executed successfully "
                           + "with result\n" + result.getResult());
                }
                else {
                    System.out.println("\nCommand executed with " +
                                           "Exception");
                    result.getException().printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

package com.ibm.ws.management.application.task;

import com.ibm.websphere.management.cmdframework.provider.CommandNotification;
import com.ibm.websphere.management.async.client.AsyncCommandHandlerIF;

public class AsyncCmdTaskHandler implements AsyncCommandHandlerIF {

    public void handleNotification(CommandNotification notification) {
        // Add our own code here to handle the received notification.
        System.out.println("\nEXAMPLE: notification received: " +   
                            notification);
    }
}


What to do next

After you edit the business-level application, we can continue administration of business-level applications. We can do such things as start and stop a business-level application, delete a business-level application, add a composition unit to a business-level application, and so on.


Related concepts

  • Additional APIs


    Related tasks

  • Deploy and administering business-level applications
  • Administer business-level applications using programming
  • Start a business-level application using programming
  • Stopping a business-level application using programming
  • Delete a business-level application using programming
  • Listing business-level applications using programming