![]() |
|||
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
| |||||||||||||
Example 10-3 first of all obtains the SLP service Locator by calling the getLocator method of the SLP class ServiceLocationManager. Client then retrieves all the connector servers registered in the SLP service under a given agent name, or under agent names that match a certain pattern. If no agent name is specified when the Client is started, all agent names will be considered. A JMX Remote API service URL, jmxUrl, is generated for each of the agents retrieved by SLP, with each agent's SLP service URL, surl, passed as a parameter into the JMXServiceURL instance. The URL jmxUrl is then passed to the newJMXConnector() method of JMXConnectorFactory, to create a new connector client named client for each agent that is registered in the SLP service. The connector clients retrieved are stored in an array list called list. Example 10-4 Accessing the MBeans in the Remote MBean Server
In Example 10-4, a reference to the MBeanServerConnection is retrieved for every connector client that is created from the connector server address stored in the SLP service. A list of all the MBeans and their attributes is retrieved. Example 10-5 Connecting to the Remote Agents
In Example 10-5, the agent.name property is retrieved by calling the getProperty() method of the System class, and the SLP lookup service is found by calling the getLocator() method of Locator. All the agents named agentName are then looked up, and connections are made to the agents discovered. If no agent is specified, then all agents are lookup up. Connections are made to the MBean server created by Server, and all the MBeans in it are listed, before the connection is closed down. 10.2.3 Running the SLP Lookup Service ExampleIn addition to the actions you performed in 10.1 Initial Configuration, before you can run the lookup service examples that use the SLP, you must perform some further set--up actions that are specific to this example. You can then start looking up connectors using SLP in conjunction with the two connectors supported by Java DMK. When you run the examples, to help you keep track of which agent has been created with which connector and transport, the agent names include a letter suffix. For example, the agent from the example of an RMI connector over JRMP, without an external directory, is called test-server-a.
|
$ SLP_LIB=/usr/share/lib/slp |
If you are using another platform, set SLP_LIB appropriately for the platform you are using.
Define and export the classp environment variable.
This example requires a classpath that includes the Java archive (JAR) files for SLP, as well as the JARs for Java DMK, the mandatory and optional parts of the JMX Remote API, and the JMX API reference implementation.
classp=$SLP_LIB/slp.jar:classpath:. |
Start the SLP daemon.
If you are using the Solaris operating environment, type the following command, which requires you to know your superuser password:
$ su root -c "java -cp $SLP_LIB/slpd.jar com.sun.slp.slpd &" Password: [type superuser password] |
If you are not running a Solaris system, start the SLP daemon according to the implementation of SLP you are using.
This example demonstrates the use of the SLP lookup service to look up RMI connector servers that use RMI's default transport, JRMP, as well as the IIOP transport. In addition, as described in 10.1 Initial Configuration, different external directories are used to register the RMI connector stubs.
The combinations of transports and external directories demonstrated here are:
RMI connector over the JRMP transport, with:
No external directory
An RMI registry
An LDAP registry
RMI connector over the IIOP transport, with:
No external directory
A CORBA naming service
An LDAP registry
Perform the following steps to run the example:
Start the Server.
The command you use to start the Server varies according to which external directory you are using. You can start one or more of the following instances of Server with different transports and external registries before starting the Client.
RMI connector over JRMP, without an external directory:
$ java -classpath .:$classp -Ddebug=true \ -Dagent.name=test-server-a \ -Durl ="service:jmx:rmi://" \ slp.Server & |
In this command:
debug is set to true to provide more complete screen output when the Server runs
The name of the agent to be created is test-server-a
The service URL specifies that the chosen connector is an RMI connector, running over the RMI default transport JRMP.
When Server is launched, you will see confirmation of the creation of the RMI connector, and the registration of its URL in the SLP service.
RMI connector over JRMP, using an RMI registry as an external directory:
$ java -classpath .:$classp -Ddebug=true \ -Dagent.name=test-server-b \ -Durl="service:jmx:rmi:///jndi/${jndirmi}/server" \ slp.Server & |
In this command:
The name of the agent created is test-server-b
The service URL specifies the chosen connector as RMI over JRMP, and the external directory in which the RMI connector stub, server, is stored is the RMI registry you identified as jndirmi in 10.1 Initial Configuration.
When Server is launched, you will see confirmation of the creation of the RMI connector, and the registration of its URL in the SLP service.
RMI connector over JRMP, using LDAP as the external directory:
$ java -classpath .:$classp -Ddebug=true \ -Dagent.name=test-server-c \ -Durl="service:jmx:rmi:///jndi/${jndildap}/cn=x,dc=Test" \ -Djava.naming.security.principal="$principal" \ -Djava.naming.security.credentials="$credentials" \ slp.Server & |
In this command:
The name of the agent created is test-server-c
The service URL specifies the chosen connector as RMI over JRMP, and the external directory in which the RMI connector stub is stored is the LDAP server you identified as jndildap in 10.1 Initial Configuration
The stub is registered in the Test domain component in the LDAP server.
The common name attribute principal and password credentials are given to gain access to the LDAP server.
When Server is launched, you will see confirmation of the creation of the RMI connector, and the registration of its URL in the SLP service under the agent name test-server-c.
RMI connector over IIOP, without an external directory:
$ java -classpath .:$classp -Ddebug=true \ -Dagent.name=test-server-d \ -Durl="service:jmx:iiop://" \ slp.Server & |
In this command:
The name of the agent created is test-server-d
The service URL specifies the chosen connector as RMI connector over IIOP.
When the Server is launched, you will see confirmation of the creation of the RMI connector, and the registration of its automatically generated URL in the SLP service.
RMI connector over IIOP, using CORBA naming as the external directory.
$ java -classpath .:$classp -Ddebug=true \ -Dagent.name=test-server-e \ -Durl="service:jmx:iiop:///jndi/${jndiiiop}/server" \ slp.Server & |
In this command:
The name of the agent created is test-server-e
The service URL specifies the chosen connector as RMI connector over IIOP. The external directory in which the RMI connector stub server is stored is the CORBA naming service you identified as jndiiiop in 10.1 Initial Configuration.
RMI connector over IIOP, using LDAP as the external directory.
$ java -classpath .:$classp -Ddebug=true \ -Dagent.name=test-server-f \ -Durl="service:jmx:iiop:///jndi/${jndildap}/cn=x,dc=Test" \ -Djava.naming.security.principal="$principal" \ -Djava.naming.security.credentials="$credentials" \ slp.Server & |
In this command:
The name of the agent created is test-server-f
The service URL specifies the chosen connector as RMI over IIOP, and the external directory in which the RMI connector stub is stored is the LDAP server you identified as jndildap in 10.1 Initial Configuration.
The stub is registered in the Test domain component in the LDAP server.
The common name attribute principal and password credentials are given to gain access to the LDAP server.
When Server is launched, you will see confirmation of the creation of the RMI connector, and the registration of its URL in the SLP service under the agent name test-server-f.
Start the Client.
After starting the Server using the transport and external directory of your choice, start the Client:
$ java -classpath .:$classp -Ddebug=true \ -Djava.naming.security.principal="$principal" \ -Djava.naming.security.credentials="$credentials" \ slp.Client |
You will see output confirming the detection of the agents created by the Server and registered in the lookup service. You will also see the identification and confirmation of the connection made to the agents.
To look up a specific agent, type the following command:
$ java -classpath .:$classp -Ddebug=true \ -Djava.naming.security.principal="$principal" \ -Djava.naming.security.credentials="$credentials" \ -Dagent.name="agentName" \ slp.Client |
In the command shown above, agentName is the name of the agent you want to look up. You can also specify a partial agent name by using *; for example, x* for all agent names beginning with the letter x.
![]() ![]() |