WAS v8.5 > Administer applications and their environment > Administer business-level applications using programmingStopping a business-level application using programming
We can stop a business-level application, which stops each composition unit in that business-level application. Each composition unit is stopped on the respective targets on which the business-level application is deployed. Before we can stop a business-level application, you must have created an empty business-level application, imported an asset, added a composition unit to the business-level application, and started the business-level application. We can stop a business-level application using programming, the dmgr console, or wsadmin. This topic describes how to stop a business-level application using programming.
Stop a business-level application using programming
- 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.
- Create the command manager.
The command manager provides the functionality to create a new administrative command or query existing administrative commands.
- Optionally create the asynchronous command handler for listening to command notifications.
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 the command generates.
- 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.
- Use the command manager created in a previous step Create and set up the command that stops a business-level application.
The command name is stopBLA. The blaID parameter is a required parameter to specify the business-level application to stop.
- Call the processCommandParameters method in the asynchronous command client to process the command parameters.
The command framework asynchronous command model requires this call.
- Call the asynchronous command client to run the command that stops a business-level application.
You might 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.
- 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 stopped.
Example
The following example shows how to stop 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 stopBLA { public static void main(String [] args) { try { // Connect to the application server. // This step is optional if we use the local command // manager. Comment out the lines to and including // CommandMgr cmdMgr = CommandMgr.getClientCommandMgr(soapClient); // to get the soapClient soap client if // we use the local command manager. String host = "localhost"; String port = "8880"; // Change to your 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 the 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 manage:. // // CommandMgr cmdMgr = CommandMgr.getCommandMgr(); System.out.println("\nCreated command manager"); // Optionally create an asynchronous command handler // for listening to command notifications. // 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. 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 AsyncCommandClient object that follows. AsyncCommandClient asyncCmdClientHelper = new AsyncCommandClient(session, listener); System.out.println("\nCreated async command client"); // Create the command that stops the business-level application. String cmdName = "stopBLA"; AdminCommand cmd = cmdMgr.createCommand(cmdName); cmd.setConfigSession(session); // Stop a business-level //application that is using the session created. System.out.println("\nCreated " + cmdName); // (required) Set the blaID parameter. // 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"; cmd.setParameter("blaID", blaID); System.out.println("\nSet blaID parameter to " + cmd.getParameter("blaID")); // Call asynchronous client helper to process parameters. try { asyncCmdClientHelper.processCommandParameters(cmd); System.out.println("\nCompleted process command " + "parameters"); } catch (Throwable th) { System.out.println("Failed from " + "asyncCmdClientHelper.processCommandParameters(cmd)."); th.printStackTrace(); System.exit(-1); } // Call the asynchronous command client to run the command command. asyncCmdClientHelper.execute(cmd); System.out.println("\nCompleted running of command"); // Check the command result. CommandResult result = cmd.getCommandResult(); if (result != null) { if (result.isSuccessful()) { System.out.println("\nCommand ran successfully " + "with result\n" + result.getResult()); } else { System.out.println("\nCommand ran 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); }}
Complete administrative tasks on the business-level application, such as editing an asset or a composition unit contained in the business-level application.
Related concepts:
Additional Application Programming Interfaces (APIs)
Related
Administer business-level applications using programming
Deploy business-level applications
Create an empty business-level application using programming
Delete a business-level application using programming
Start a business-level application using programming
List business-level applications using programming
Stopping business-level applications using scripting
Reference:
BLAManagement command group for AdminTask using wsadmin.sh