- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- javax.management.remote.JMXConnectorServer
-
- All Implemented Interfaces:
MBeanRegistration,NotificationBroadcaster,NotificationEmitter,JMXAddressable,JMXConnectorServerMBean
- Direct Known Subclasses:
RMIConnectorServer
public abstract class JMXConnectorServer extends NotificationBroadcasterSupport implements JMXConnectorServerMBean, MBeanRegistration, JMXAddressable
Superclass of every connector server. A connector server is attached to an MBean server. It listens for client connection requests and creates a connection for each one.
A connector server is associated with an MBean server either by registering it in that MBean server, or by passing the MBean server to its constructor.
A connector server is inactive when created. It only starts listening for client connections when the
startmethod is called. A connector server stops listening for client connections when thestopmethod is called or when the connector server is unregistered from its MBean server.Stopping a connector server does not unregister it from its MBean server. A connector server once stopped cannot be restarted.
Each time a client connection is made or broken, a notification of class
JMXConnectionNotificationis emitted.- Since:
- 1.5
-
-
Field Summary
Fields Modifier and Type Field Description static StringAUTHENTICATORName of the attribute that specifies the authenticator for a connector server.
-
Constructor Summary
Constructors Constructor Description JMXConnectorServer()Constructs a connector server that will be registered as an MBean in the MBean server it is attached to.JMXConnectorServer(MBeanServer mbeanServer)Constructs a connector server that is attached to the given MBean server.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidconnectionClosed(String connectionId, String message, Object userData)Called by a subclass when a client connection is closed normally.protected voidconnectionFailed(String connectionId, String message, Object userData)Called by a subclass when a client connection fails.protected voidconnectionOpened(String connectionId, String message, Object userData)Called by a subclass when a new client connection is opened.MBeanServergetMBeanServer()Returns the MBean server that this connector server is attached to.MBeanNotificationInfo[]getNotificationInfo()Returns an array indicating the notifications that this MBean sends.voidpreDeregister()Called by an MBean server when this connector server is unregistered from that MBean server.ObjectNamepreRegister(MBeanServer mbs, ObjectName name)Called by an MBean server when this connector server is registered in that MBean server.JMXConnectortoJMXConnector(Map<String,?> env)Returns a client stub for this connector server.-
Methods declared in class javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, sendNotification
-
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods declared in interface javax.management.remote.JMXAddressable
getAddress
-
Methods declared in interface javax.management.remote.JMXConnectorServerMBean
getAddress, getAttributes, getConnectionIds, isActive, setMBeanServerForwarder, start, stop
-
Methods declared in interface javax.management.MBeanRegistration
postDeregister, postRegister
-
Methods declared in interface javax.management.NotificationBroadcaster
removeNotificationListener
-
Methods declared in interface javax.management.NotificationEmitter
removeNotificationListener
-
-
-
-
Field Detail
-
AUTHENTICATOR
public static final String AUTHENTICATOR
Name of the attribute that specifies the authenticator for a connector server. The value associated with this attribute, if any, must be an object that implements the interface
JMXAuthenticator.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JMXConnectorServer
public JMXConnectorServer()
Constructs a connector server that will be registered as an MBean in the MBean server it is attached to. This constructor is typically called by one of the
createMBeanmethods when creating, within an MBean server, a connector server that makes it available remotely.
-
JMXConnectorServer
public JMXConnectorServer(MBeanServer mbeanServer)
Constructs a connector server that is attached to the given MBean server. A connector server that is created in this way can be registered in a different MBean server, or not registered in any MBean server.
- Parameters:
mbeanServer- the MBean server that this connector server is attached to. Null if this connector server will be attached to an MBean server by being registered in it.
-
-
Method Detail
-
getMBeanServer
public MBeanServer getMBeanServer()
Returns the MBean server that this connector server is attached to.
- Returns:
- the MBean server that this connector server is attached to, or null if it is not yet attached to an MBean server.
-
toJMXConnector
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
Returns a client stub for this connector server. A client stub is a serializable object whose
connectmethod can be used to make one new connection to this connector server.A given connector need not support the generation of client stubs. However, the connectors specified by the JMX Remote API do (JMXMP Connector and RMI Connector).
The default implementation of this method uses
JMXConnectorServerMBean.getAddress()andJMXConnectorFactoryto generate the stub, with code equivalent to the following:JMXServiceURL addr =
getAddress(); returnJMXConnectorFactory.newJMXConnector(addr, env);A connector server for which this is inappropriate must override this method so that it either implements the appropriate logic or throws
UnsupportedOperationException.- Specified by:
toJMXConnectorin interfaceJMXConnectorServerMBean- Parameters:
env- client connection parameters of the same sort that could be provided toJMXConnector.connect(Map). Can be null, which is equivalent to an empty map.- Returns:
- a client stub that can be used to make a new connection to this connector server.
- Throws:
UnsupportedOperationException- if this connector server does not support the generation of client stubs.IllegalStateException- if the JMXConnectorServer is not started (seeJMXConnectorServerMBean.isActive()).IOException- if a communications problem means that a stub cannot be created.
-
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
Returns an array indicating the notifications that this MBean sends. The implementation in
JMXConnectorServerreturns an array with one element, indicating that it can emit notifications of classJMXConnectionNotificationwith the types defined in that class. A subclass that can emit other notifications should return an array that contains this element plus descriptions of the other notifications.- Specified by:
getNotificationInfoin interfaceNotificationBroadcaster- Returns:
- the array of possible notifications.
-
connectionOpened
protected void connectionOpened(String connectionId, String message, Object userData)
Called by a subclass when a new client connection is opened. Adds
connectionIdto the list returned byJMXConnectorServerMBean.getConnectionIds(), then emits aJMXConnectionNotificationwith typeJMXConnectionNotification.OPENED.- Parameters:
connectionId- the ID of the new connection. This must be different from the ID of any connection previously opened by this connector server.message- the message for the emittedJMXConnectionNotification. Can be null. SeeNotification.getMessage().userData- theuserDatafor the emittedJMXConnectionNotification. Can be null. SeeNotification.getUserData().- Throws:
NullPointerException- ifconnectionIdis null.
-
connectionClosed
protected void connectionClosed(String connectionId, String message, Object userData)
Called by a subclass when a client connection is closed normally. Removes
connectionIdfrom the list returned byJMXConnectorServerMBean.getConnectionIds(), then emits aJMXConnectionNotificationwith typeJMXConnectionNotification.CLOSED.- Parameters:
connectionId- the ID of the closed connection.message- the message for the emittedJMXConnectionNotification. Can be null. SeeNotification.getMessage().userData- theuserDatafor the emittedJMXConnectionNotification. Can be null. SeeNotification.getUserData().- Throws:
NullPointerException- ifconnectionIdis null.
-
connectionFailed
protected void connectionFailed(String connectionId, String message, Object userData)
Called by a subclass when a client connection fails. Removes
connectionIdfrom the list returned byJMXConnectorServerMBean.getConnectionIds(), then emits aJMXConnectionNotificationwith typeJMXConnectionNotification.FAILED.- Parameters:
connectionId- the ID of the failed connection.message- the message for the emittedJMXConnectionNotification. Can be null. SeeNotification.getMessage().userData- theuserDatafor the emittedJMXConnectionNotification. Can be null. SeeNotification.getUserData().- Throws:
NullPointerException- ifconnectionIdis null.
-
preRegister
public ObjectName preRegister(MBeanServer mbs, ObjectName name)
Called by an MBean server when this connector server is registered in that MBean server. This connector server becomes attached to the MBean server and its
getMBeanServer()method will returnmbs.If this connector server is already attached to an MBean server, this method has no effect. The MBean server it is attached to is not necessarily the one it is being registered in.
- Specified by:
preRegisterin interfaceMBeanRegistration- Parameters:
mbs- the MBean server in which this connection server is being registered.name- The object name of the MBean.- Returns:
- The name under which the MBean is to be registered.
- Throws:
NullPointerException- ifmbsornameis null.
-
preDeregister
public void preDeregister() throws ExceptionCalled by an MBean server when this connector server is unregistered from that MBean server. If this connector server was attached to that MBean server by being registered in it, and if the connector server is still active, then unregistering it will call the
stopmethod. If thestopmethod throws an exception, the unregistration attempt will fail. It is recommended to call thestopmethod explicitly before unregistering the MBean.- Specified by:
preDeregisterin interfaceMBeanRegistration- Throws:
IOException- if thrown by thestopmethod.Exception- This exception will be caught by the MBean server and re-thrown as anMBeanRegistrationException.
-
-