Network Deployment (Distributed operating systems), v8.0 > Reference > Administrator examples


Example: Administrative client program

This example is a complete administrative client program.

Copy the contents to a file named AdminClientExample.java. After changing the node name and server name to the appropriate values for the configuration, you can compile and run it using the instructions from Create a custom Java administrative client program using WAS administrative Java APIs

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)
        {
            .println("Exception creating admin client: " + e);
            System.exit(-1);
        }
 
        .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
            {
                .println("Node agent MBean was not found");
                System.exit(-1);
            }
        }
        catch (MalformedObjectNameException e)
        {
            .println(e);
            System.exit(-1);
        }
        catch (ConnectorException e)
        {
            .println(e);
            System.exit(-1);
        }
 
        .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)
                .println(serverName + " was launched");
            else
                .println(serverName + " was not launched");

        }
        catch (Exception e)
        {
            .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);
            .println("Registered for event notifications");
        }
        catch (InstanceNotFoundException e)
        {
            .println(e);
        }
        catch (ConnectorException e)
        {
            .println(e);
        }
    }

    public void handleNotification(Notification ntfyObj, Object handback)
    {
        // Each notification that the NodeAgent MBean generates will result in // this method being called
        ntfyCount++;
        .println("***************************************************");
        .println("* Notification received at " + new Date().toString());

       .println("* type
     = " + ntfyObj.getType());
        .println("* message   = " + ntfyObj.getMessage());
        .println("* source    = " + ntfyObj.getSource());
        .println(
        "* seqNum    = " + Long.toString(ntfyObj.getSequenceNumber()));
        .println("* timeStamp = " + new Date(ntfyObj.getTimeStamp()));
        .println("* userData  = " + ntfyObj.getUserData());
        .println("***************************************************");

    }

    private void countNotifications()
    {
        // Run until killed
        try
        {
            while (true)
            {
                Thread.currentThread().sleep(60000);
                .println(ntfyCount + " notification have been received");
            }
        }
        catch (InterruptedException e)
        {
        }
    }

}

Develop an administrative client program

+

Search Tips   |   Advanced Search