Eine weitere Methode, auf JDMK-Agenten zuzugreifen ist, eine Client- oder Managerapplikation zu entwickeln. Diese Applikation kann entweder in Java oder C++ geschrieben sein. Im zweiten Fall ist jedoch der Zugriff auf JDMK-Agenten über das Java Native Interface durchzuführen. Eine einfache Client-Java-Applikation kann folgende Gestalt besitzen:
package trial; import java.net.*; import java.util.*; // jaw import import com.sun.jaw.reference.common.*; import com.sun.jaw.impl.adaptor.rmi.*; import com.sun.jaw.impl.agent.services.monitor.*; import trial.monitor.ClientListener; public class Client implements Runnable { // CONSTRUCTOR //------------ public Client() { } /** * It is possible to specify on the command line the implementation to use * for the adaptor function. */ public static void main(String argv[]) { System.exit( new Client().execute(argv) ) ; } /** * When an object implementing interface Runnable is used to create a thread, * starting the thread causes the object's run method to be called in that * separately executing thread. */ public void run() { String[] s = new String[0]; execute(s); } // PRIVATE METHODS //---------------- private int execute(String argv[]) { try { // Set the host name of the remote agent. // String agentHost = InetAddress.getLocalHost().getHostName(); if (argv.length >= 1) { agentHost = argv[0]; } // Set the port number of the remote host. // int agentPort = 1096; if (argv.length >= 2) { agentPort = Integer.decode(argv[1]).intValue(); } // Create an adaptor client to enable the client to manage the remote agent // and initializes the communications with the remote agent. // trace(">>> CREATE and INITIALIZE communication with the remote agent,"); trace("HOST = " + agentHost); trace("PORT = " + agentPort); trace("PROTOCOL = RMI"); trace("SERVER = " + ServiceName.APT_RMI); AdaptorClient adaptor = new AdaptorClient(); adaptor.connect(null, agentHost, agentPort, ServiceName.APT_RMI); trace("Communication ok"); // Get the domain name from the remote agent. // String domain = "SBCS-TIS2-MIB-Impl"; // Get an instance of the GkStatistics m-bean in the // remote agent. // String NetworkParmsImplClass = "NetworkParmsImpl"; ObjectName NetworkParmsImplName = new ObjectName(domain + ":tis20.impl.NetworkParmsImpl"); System.out.println("Get an instance of NetworkParmsImpl in the remote object server"); System.out.println("with the object name -> " + NetworkParmsImplName.toString()); tis20.impl.NetworkParmsImplMO NetworkParmsImpl = (tis20.impl.NetworkParmsImplMO) ((Vector)adaptor.getObject(NetworkParmsImplName, null)).firstElement(); System.out.println("ok"); String[] test = NetworkParmsImpl.performStringTableValues("DomainSuffixTable",1,1); // Terminate communication with the remote agent. // adaptor.disconnect(); return 0; } catch(Exception e) { trace("Got an exception !"); e.printStackTrace(); return 1; } } /** * Display trace messages. */ private void trace(String msg) { System.out.println(msg); } }