Verwaltungsclientprogramm entwickeln
Sie können ein Verwaltungsclientprogramm entwickeln, das die Verwaltungs-APIs von WebSphere Application Server und Java™ Management Extensions (JMX) verwendet.
Informationen zu diesem Vorgang
Mit den Verwaltungs-APIs des Produkts können Sie nicht nur den Betrieb Ihres verteilten Systems steuern, sondern auch die Konfiguration aktualisieren. Informationen zur Schnittstelle "AdminClient" finden Sie in der Dokumentation zu den Anwendungsprogrammierschnittstellen.
Sehen Sie sich die Beispiele für MBean-Operationen an. Informationen zur Programmierung von MBeans finden Sie in der MBean-Java-API-Dokumentation. Klicken Sie in diesem Information Center auf .
Vorgehensweise
Ergebnisse
Der Verwaltungsclient kann Ereignisbenachrichtigungen verarbeiten, die von einer MBean ausgegeben werden.

Beispiel: Verwaltungsclientprogramm
Kopieren Sie den Inhalt in eine Datei mit dem Namen AdminClientExample.java. Nachdem
Sie den Knotennamen und den Servernamen in die für Ihre Konfiguration geeigneten Werte
geändert haben, können Sie eine Kompilierung durchführen und die Anweisungen im
Artikel Angepassten Java-Verwaltungsclient
mit Java-Administrations-APIs von
WebSphere Application Server erstellen verwenden.
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();
// Einen AdminClient erstellen
ace.createAdminClient();
// Eine NodeAgent-MBean lokalisieren
ace.getNodeAgentMBean("ellington");
// launchProcess aufrufen
ace.invokeLaunchProcess("server1");
// Registrierung für NodeAgent-Ereignisse durchführen
ace.registerNotificationListener();
// Ausführen bis Unterbrechung
ace.countNotifications();
}
private void createAdminClient()
{
// Properties-Objekt für die Attribute des JMX-Connector konfigurieren
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");
// AdminClient basierend auf den Connector-Eigenschaften abrufen
try
{
adminClient = AdminClientFactory.createAdminClient(connectProps);
}
catch (ConnectorException e)
{
System.out.println("Ausnahme beim Erstellen des Admin-Client: " + e);
System.exit(-1);
}
System.out.println("Connected to DeploymentManager");
}
private void getNodeAgentMBean(String nodeName)
{
// ObjectName von NodeAgent-MBean auf angegebenem Knoten abfragen
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)
{
// launchProcess-Operation auf NodeAgent-MBean ausführen, um
// den angegebenen Server zu starten
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("Ausnahme beim Aufrufen von launchProcess: " + e);
}
}
private void registerNotificationListener()
{
// Dieses Objekt als Listener für Benachrichtigungen der
// NodeAgent-MBean registrieren. Keinen Filter und kein
// Handback-Objekt verwenden.
try
{
adminClient.addNotificationListener(nodeAgent, this, null, null);
System.out.println("Registered for event notifications");
}
catch (InstanceNotFoundException e)
{
System.out.println(e);
e.printStackTrace();
}
catch (ConnectorException e)
{
System.out.println(e);
e.printStackTrace();
}
}
public void handleNotification(Notification ntfyObj, Object handback)
{
// Jede Beachrichtigung, die von der NodeAgent-MBean generiert wird,
// führt dazu, dass diese Methode aufgerufen wird.
ntfyCount++;
System.out.println("***************************************************");
System.out.println("* Benachrichtigung empfangen am " + 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()
{
// Ausführen, bis Abbruch mit Befehl KILL erfolgt
try
{
while (true)
{
Thread.currentThread().sleep(60000);
System.out.println(ntfyCount + " notification have been received");
}
}
catch (InterruptedException e)
{
}
}
}