Chapter 5

Using JMX Connectors to Manage Resources
Remotely

The Java Management
Extensions Instrument and Agent Specification defines the
concept of connectors. A connector makes
a Java Management Extensions (JMX) technology MBean server
accessible to remote Java technology-based clients. The client end
of a connector exports essentially the same interface as the MBean
server.

A connector consists of a connector client and a
connector server. A connector server is attached to an MBean server
and listens for connection requests from clients. A connector
client is responsible for establishing a connection with the
connector server. A connector client will usually be in a different
Java Virtual Machine (Java VM) from the connector server, and will
often be running on a different machine.

Many different implementations of connectors are
possible. In particular, there are many possibilities for the
protocol used to communicate over a connection between client and
server.

A connector server usually has an address, used to
establish connections between connector clients and the connector
server. Alternatively, some connectors can provide connection stubs
to establish connections. The way in which connections are
established depends on the discovery and lookup technology that you
use (see Chapter 6, "Discovery and Lookup
Services").

This chapter outlines the different types of
connector defined by the JMX Remote API specification and the
protocols they use, in the following sections:

"RMI Connector": This
standard Remote Method Invocation (RMI) protocol must be supported
by every implementation that conforms to the JMX Remote API
standard.

"Generic Connector": The JMX
Remote API standard also defines an optional protocol based
directly on TCP sockets, called the JMX Messaging Protocol (JMXMP).
An implementation of the standard can omit the JMXMP connector, but
must not omit the RMI connector. The Java SE platform does not
include the optional JMXMP connector.

The RMI connector over JRMP provides a simple
mechanism for securing and authenticating the connection between a
client and a server. This mechanism provides a basic level of
security for environments using the RMI connector. Note that the
generic JMXMP connector provides a more advanced level of
security.

You can improve on the basic security mechanism of
the RMI connector over JRMP by using an RMI socket factory so that
the connection between client and server uses the Secure Socket
Layer (SSL).

Generic Connector

An optional part of the JMX Remote API, which is
not included in the Java SE platform, is a generic connector. This
connector can be configured by adding pluggable modules to define
the following:

The transport protocol used to send requests from the client to
the server, and to send responses and notifications from the server
to the clients

The object wrapping for objects that are sent from the client
to the server and whose class loader can depend on the target
MBean

The JMX Messaging Protocol (JMXMP) connector is a
configuration of the generic connector where the transport protocol
is based on TCP and the object wrapping is native Java
serialization. Security is more advanced than for the RMI
connector. Security is based on the Java Secure Socket Extension
(JSSE), the Java Authentication and Authorization Service (JAAS),
and the Simple Authentication and Security Layer (SASL).

The generic connector and its JMXMP configuration
are optional, which means that they are not always included in an
implementation of the JMX Remote API. The Java SE platform does not
include the optional generic connector.

User-Defined Protocols

While the RMI connector must be present in every
implementation of the JMX Remote API, you can also implement a
connector based on a protocol that is not defined in the JMX Remote
API standard. A typical example of this is a connector based on a
protocol that uses HTTP/S. Other protocols are also possible. The
JMX specification describes how to implement a connector based on a
user-defined protocol.