This example is a complete administrative client program.
This example shows how to connect to the node agent server, which is not available for your product. However, you can connect to your server by changing the host and port values. Substitute your server for the node agent server references. Since the NodeAgent MBean is not available for your product, substitute the queryNames string to search for another MBean.
import java.util.Date; import java.util.Properties; import java.util.Set; import javax.management.InstanceNotFoundException; import javax.management.MalformedObjectNameException; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.ObjectName; import com.ibm.websphere.management.AdminClient; import com.ibm.websphere.management.AdminClientFactory; import com.ibm.websphere.management.exception.ConnectorException; public class AdminClientExample implements NotificationListener { private AdminClient adminClient; private ObjectName nodeAgent; private long ntfyCount = 0; public static void main(String[] args) { AdminClientExample ace = new AdminClientExample(); // Create an AdminClient ace.createAdminClient(); // Find a NodeAgent MBean ace.getNodeAgentMBean("ellington"); // Invoke launchProcess ace.invokeLaunchProcess("server1"); // Register for NodeAgent events ace.registerNotificationListener(); // Run until interrupted ace.countNotifications(); } private void createAdminClient() { // Set up a Properties object for the JMX connector attributes Properties connectProps = new Properties(); connectProps.setProperty( AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP); connectProps.setProperty(AdminClient.CONNECTOR_HOST, "localhost"); connectProps.setProperty(AdminClient.CONNECTOR_PORT, "8879"); // Get an AdminClient based on the connector properties try { adminClient = AdminClientFactory.createAdminClient(connectProps); } catch (ConnectorException e) { System.out.println("Exception creating admin client: " + e); System.exit(-1); } System.out.println("Connected to DeploymentManager"); } private void getNodeAgentMBean(String nodeName) { // Query for the ObjectName of the NodeAgent MBean on the given node try { String query = "WebSphere:type=NodeAgent,node=" + nodeName + ",*"; ObjectName queryName = new ObjectName(query); Set s = adminClient.queryNames(queryName, null); if (!s.isEmpty()) nodeAgent = (ObjectName)s.iterator().next(); else { System.out.println("Node agent MBean was not found"); System.exit(-1); } } catch (MalformedObjectNameException e) { System.out.println(e); System.exit(-1); } catch (ConnectorException e) { System.out.println(e); System.exit(-1); } System.out.println("Found NodeAgent MBean for node " + nodeName); } private void invokeLaunchProcess(String serverName) { // Use the launchProcess operation on the NodeAgent MBean to start // the given server String opName = "launchProcess"; String signature[] = { "java.lang.String" }; String params[] = { serverName }; boolean launched = false; try { Boolean b = (Boolean)adminClient.invoke( nodeAgent, opName, params, signature); launched = b.booleanValue(); if (launched) System.out.println(serverName + " was launched"); else System.out.println(serverName + " was not launched"); } catch (Exception e) { System.out.println("Exception invoking launchProcess: " + e); } } private void registerNotificationListener() { // Register this object as a listener for notifications from the // NodeAgent MBean. Don't use a filter and don't use a handback // object. try { adminClient.addNotificationListener(nodeAgent, this, null, null); System.out.println("Registered for event notifications"); } catch (InstanceNotFoundException e) { System.out.println(e); } catch (ConnectorException e) { System.out.println(e); } } public void handleNotification(Notification ntfyObj, Object handback) { // Each notification that the NodeAgent MBean generates will result in // this method being called ntfyCount++; System.out.println("***************************************************"); System.out.println("* Notification received at " + new Date().toString()); System.out.println("* type = " + ntfyObj.getType()); System.out.println("* message = " + ntfyObj.getMessage()); System.out.println("* source = " + ntfyObj.getSource()); System.out.println( "* seqNum = " + Long.toString(ntfyObj.getSequenceNumber())); System.out.println("* timeStamp = " + new Date(ntfyObj.getTimeStamp())); System.out.println("* userData = " + ntfyObj.getUserData()); System.out.println("***************************************************"); } private void countNotifications() { // Run until killed try { while (true) { Thread.currentThread().sleep(60000); System.out.println(ntfyCount + " notification have been received"); } } catch (InterruptedException e) { } } }