| Java Dynamic Management Kit 3.2 Programming Guide | ||||
|---|---|---|---|---|
![]() | ![]() | Chapter 2. Tutorial Example | ![]() | |
The SimpleClient example shows the code required in a manager for:
Instantiating an adaptor client
Connecting an adaptor client
Creating an m-bean remotely
Performing management operations
Disconnecting an adaptor client
The Java source code of this example is shown in Example 2-7.
Example 2-7. SimpleClient.java
// Copyright (c) 03/12/99, by Sun Microsystems, Inc.
// All rights reserved.
// "@(#)SimpleClient.java 3.3 99/03/12 SMI"
import java.net.* ;
import java.util.* ;
import com.sun.jaw.reference.common.* ;
import com.sun.jaw.impl.adaptor.rmi.* ;
public class SimpleClient {
public static void main(String argv[]) {
try {
String agentHost = InetAddress.getLocalHost().getHostName() ;
if (argv.length >= 1)
agentHost = argv[0] ;
System.out.println(">>> Connecting to " + agentHost + "...") ;
// Set up the RMI AdaptorClient.
//
AdaptorClient adaptor = new AdaptorClient() ;
// Initialize communication with the remote RMI managed object server.
//
adaptor.connect(null, agentHost, 1099, ServiceName.APT_RMI) ;
// Create an instance of the SimpleBean m-bean in the
// remote object server.
//
String simpleClass = "SimpleBean" ;
ObjectName simpleName = new ObjectName("defaultDomain:SimpleBean.id=1") ;
SimpleBeanMO simple = (SimpleBeanMO)adaptor.cb_newMO(
simpleClass, simpleName, null) ;
// Access and modify the properties of the SimpleBean m-bean remotely.
//
System.out.println("\nsimple.state = " + simple.getState()) ;
System.out.println("simple.nbChanges = " + simple.getNbChanges()) ;
System.out.println("\n>>> Changing state...") ;
simple.setState("New state") ;
System.out.println("simple.state = " + simple.getState()) ;
System.out.println("simple.nbChanges = " + simple.getNbChanges()) ;
System.out.println("\n>>> Resetting change counters...") ;
simple.performReset() ;
System.out.println("simple.state = " + simple.getState()) ;
System.out.println("simple.nbChanges = " + simple.getNbChanges()) ;
// Terminates the communication with the remote managed object server.
//
adaptor.disconnect() ;
System.exit(0) ;
}
catch(Exception e) {
System.out.println("Got an exception !") ;
e.printStackTrace() ;
System.exit(1) ;
}
}
} |
For a Java manager to be able to manage a Java Dynamic Management agent, it must contain an adaptor client. An adaptor client is an instance of a Java class that implements the com.sun.jaw.reference.client.adaptor.AdaptorMO interface. The adaptorMO interface provides a means for accessing remote m-beans through the adaptor in an agent. Example 2-8 shows code for creating and initializing an instance of the com.sun.jaw.impl.adaptor.rmi.AdaptorClient class. This class implements the AdaptorMO interface based on the RMI system.
Example 2-8. Instantiating an Adaptor Client
// Set up the RMI AdaptorClient. // AdaptorClient adaptor = new AdaptorClient() ; |
To connect an adaptor client to an adaptor, invoke the connect() method of the adaptor client as shown in Example 2-9. In this example, the host name, port number and object name of the remote adaptor are specified.
Example 2-9. Connecting an Adaptor Client
// Initialize communication with the remote RMI managed object server. // adaptor.connect(null, agentHost, 1099, ServiceName.APT_RMI) ; |
To create an m-bean remotely, instantiate its object name and use this instance to create an m-bean in the agent, as shown in Example 2-10.
Example 2-10. Creating an M-Bean Remotely
// Create an instance of the SimpleBean m-bean in the
// remote object server.
//
String simpleClass = "SimpleBean" ;
ObjectName simpleName = new ObjectName("defaultDomain:SimpleBean.id=1") ;
SimpleBeanMO simple = (SimpleBeanMO)adaptor.cb_newMO(
simpleClass, simpleName, null) ; |
Example 2-11 shows how to use a handle on an m-bean to perform management operations on the m-bean. In this example, the manager is able to change the state of the m-bean by invoking the setState() method and reset the number state changes by invoking the performReset() method.
Example 2-11. Performing Management Operations on an M-Bean
// Access and modify the properties of the SimpleBean m-bean remotely.
//
System.out.println("\nsimple.state = " + simple.getState()) ;
System.out.println("simple.nbChanges = " + simple.getNbChanges()) ;
System.out.println("\n>>> Changing state...") ;
simple.setState("New state") ;
System.out.println("simple.state = " + simple.getState()) ;
System.out.println("simple.nbChanges = " + simple.getNbChanges()) ;
System.out.println("\n>>> Resetting change counters...") ;
simple.performReset() ;
System.out.println("simple.state = " + simple.getState()) ;
System.out.println("simple.nbChanges = " + simple.getNbChanges()) ; |
To disconnect an adaptor client from an adaptor, invoke the disconnect() method of the adaptor client as shown in Example 2-12.
Example 2-12. Disconnecting an Adaptor Client
// Terminates the communication with the remote managed object server. // adaptor.disconnect() ; |
![]() | ![]() | ![]() |
| Generating a C-Bean | ![]() | Further Examples |