com.j256.simplejmx.server
Class JmxServer

java.lang.Object
  extended by com.j256.simplejmx.server.JmxServer

public class JmxServer
extends Object

JMX server which allows classes to publish and un-publish themselves as JMX beans.

Author:
graywatson

Constructor Summary
JmxServer()
          Create a JMX server that will be set with the port using setters.
JmxServer(InetAddress inetAddress, int registryPort)
          Create a JMX server running on a particular address and registry-port.
JmxServer(InetAddress inetAddress, int registryPort, int serverPort)
          Create a JMX server running on a particular registry and server port pair.
JmxServer(int registryPort)
          Create a JMX server running on a particular registry-port.
JmxServer(int registryPort, int serverPort)
          Create a JMX server running on a particular registry and server port pair.
JmxServer(MBeanServer mbeanServer)
          Create a JmxServer wrapper around an existing MBeanServer.
 
Method Summary
 int getRegisteredCount()
          Number of registered objects.
 int getRegistryPort()
           
 int getServerPort()
           
 void register(Object obj)
          Register the object parameter for exposure with JMX.
 void register(Object obj, JmxResourceInfo resourceInfo, JmxAttributeFieldInfo[] attributeFieldInfos, JmxAttributeMethodInfo[] attributeMethodInfos, JmxOperationInfo[] operationInfos)
          Register the object parameter for exposure with JMX with user defined field-attribute, method-attribute, and operation information.
 void register(Object obj, ObjectName objectName, JmxAttributeFieldInfo[] attributeFieldInfos, JmxAttributeMethodInfo[] attributeMethodInfos, JmxOperationInfo[] operationInfos)
          Register the object parameter for exposure with JMX with user defined field-attribute, method-attribute, and operation information.
 void register(Object obj, ObjectName objectName, String description, JmxAttributeFieldInfo[] attributeFieldInfos, JmxAttributeMethodInfo[] attributeMethodInfos, JmxOperationInfo[] operationInfos)
          Register the object parameter for exposure with JMX with user defined field-attribute, method-attribute, and operation information.
 void setInetAddress(InetAddress inetAddress)
          Not required.
 void setPort(int port)
          This is actually calls setRegistryPort(int).
 void setRegistryPort(int registryPort)
          Set our port number to listen for JMX connections.
 void setServerPort(int serverPort)
          Chances are you should be using setPort(int) or setRegistryPort(int) unless you know what you are doing.
 void setServerSocketFactory(RMIServerSocketFactory serverSocketFactory)
          Optional server socket factory that can will be used to generate our registry and server ports.
 void setServiceUrl(String serviceUrl)
          Optional service URL which is used to specify the connection endpoints.
 void start()
          Start our JMX service.
 void stop()
          Same as stopThrow() but this ignores any exceptions.
 void stopThrow()
          Stop the JMX server by closing the connector and unpublishing it from the RMI registry.
 void unregister(Object obj)
          Same as unregisterThrow(Object) except this ignores exceptions.
 void unregister(ObjectName objName)
          Same as unregisterThrow(ObjectName) except this ignores exceptions.
 void unregisterThrow(Object obj)
          Un-register the object parameter from JMX but this throws exceptions.
 void unregisterThrow(ObjectName objName)
          Un-register the object name from JMX but this throws exceptions.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JmxServer

public JmxServer()
Create a JMX server that will be set with the port using setters. Used with spring. You must at least specify the port number with setPort(int).


JmxServer

public JmxServer(int registryPort)
Create a JMX server running on a particular registry-port.

Parameters:
registryPort - The "RMI registry port" that you specify in jconsole to connect to the server. See setRegistryPort(int).

JmxServer

public JmxServer(InetAddress inetAddress,
                 int registryPort)
Create a JMX server running on a particular address and registry-port.

Parameters:
inetAddress - Address to bind to. If you use on the non-address constructors, it will bind to all interfaces.
registryPort - The "RMI registry port" that you specify in jconsole to connect to the server. See setRegistryPort(int).

JmxServer

public JmxServer(int registryPort,
                 int serverPort)
Create a JMX server running on a particular registry and server port pair.

Parameters:
registryPort - The "RMI registry port" that you specify in jconsole to connect to the server. See setRegistryPort(int).
serverPort - The RMI server port that jconsole uses to transfer data to/from the server. See setServerPort(int). The same port as the registry-port can be used.

JmxServer

public JmxServer(InetAddress inetAddress,
                 int registryPort,
                 int serverPort)
Create a JMX server running on a particular registry and server port pair.

Parameters:
inetAddress - Address to bind to. If you use on the non-address constructors, it will bind to all interfaces.
registryPort - The "RMI registry port" that you specify in jconsole to connect to the server. See setRegistryPort(int).
serverPort - The RMI server port that jconsole uses to transfer data to/from the server. See setServerPort(int). The same port as the registry-port can be used.

JmxServer

public JmxServer(MBeanServer mbeanServer)
Create a JmxServer wrapper around an existing MBeanServer. You may want to use this with ManagementFactory.getPlatformMBeanServer() to use the JVM platform's default server.

Method Detail

start

public void start()
           throws JMException
Start our JMX service. The port must have already been called either in the JmxServer(int) constructor or the setRegistryPort(int) method before this is called.

Throws:
IllegalStateException - If the registry port has not already been set.
JMException

stop

public void stop()
Same as stopThrow() but this ignores any exceptions.


stopThrow

public void stopThrow()
               throws JMException
Stop the JMX server by closing the connector and unpublishing it from the RMI registry. This throws a JMException on any issues.

Throws:
JMException

register

public void register(Object obj)
              throws JMException
Register the object parameter for exposure with JMX. The object passed in must have a JmxResource annotation or must implement JmxSelfNaming.

Throws:
JMException

register

public void register(Object obj,
                     ObjectName objectName,
                     JmxAttributeFieldInfo[] attributeFieldInfos,
                     JmxAttributeMethodInfo[] attributeMethodInfos,
                     JmxOperationInfo[] operationInfos)
              throws JMException
Register the object parameter for exposure with JMX with user defined field-attribute, method-attribute, and operation information.

Parameters:
obj - Object that we are registering.
objectName - Name of the object most likely generated by one of the methods from the ObjectNameUtil class.
attributeFieldInfos - Array of attribute information for fields that are exposed through reflection. Can be null if none.
attributeMethodInfos - Array of attribute information for fields that are exposed through get/set/is methods.
operationInfos - Array of operation information for methods.
Throws:
JMException

register

public void register(Object obj,
                     ObjectName objectName,
                     String description,
                     JmxAttributeFieldInfo[] attributeFieldInfos,
                     JmxAttributeMethodInfo[] attributeMethodInfos,
                     JmxOperationInfo[] operationInfos)
              throws JMException
Register the object parameter for exposure with JMX with user defined field-attribute, method-attribute, and operation information.

Parameters:
obj - Object that we are registering.
objectName - Name of the object most likely generated by one of the methods from the ObjectNameUtil class.
description - Optional description of the object for jconsole debug output. Default is "Information about class".
attributeFieldInfos - Array of attribute information for fields that are exposed through reflection. Can be null if none.
attributeMethodInfos - Array of attribute information for fields that are exposed through get/set/is methods.
operationInfos - Array of operation information for methods.
Throws:
JMException

register

public void register(Object obj,
                     JmxResourceInfo resourceInfo,
                     JmxAttributeFieldInfo[] attributeFieldInfos,
                     JmxAttributeMethodInfo[] attributeMethodInfos,
                     JmxOperationInfo[] operationInfos)
              throws JMException
Register the object parameter for exposure with JMX with user defined field-attribute, method-attribute, and operation information.

Parameters:
obj - Object that we are registering.
resourceInfo - Resource information used to build the object-name.
attributeFieldInfos - Array of attribute information for fields that are exposed through reflection. Can be null if none.
attributeMethodInfos - Array of attribute information for fields that are exposed through get/set/is methods.
operationInfos - Array of operation information for methods.
Throws:
JMException

unregister

public void unregister(Object obj)
Same as unregisterThrow(Object) except this ignores exceptions.


unregister

public void unregister(ObjectName objName)
Same as unregisterThrow(ObjectName) except this ignores exceptions.


unregisterThrow

public void unregisterThrow(Object obj)
                     throws JMException
Un-register the object parameter from JMX but this throws exceptions. Use the unregister(Object) if you want it to be silent.

Throws:
JMException

unregisterThrow

public void unregisterThrow(ObjectName objName)
                     throws JMException
Un-register the object name from JMX but this throws exceptions. Use the unregister(Object) if you want it to be silent.

Throws:
JMException

setInetAddress

public void setInetAddress(InetAddress inetAddress)
Not required. Default is to bind to local interfaces.


setPort

public void setPort(int port)
This is actually calls setRegistryPort(int).


getRegistryPort

public int getRegistryPort()
See Also:
setRegistryPort(int)

setRegistryPort

public void setRegistryPort(int registryPort)
Set our port number to listen for JMX connections. This is the "RMI registry port" but it is the port that you specify in jconsole to connect to the server. This must be set either here or in the JmxServer(int) constructor before start() is called.


getServerPort

public int getServerPort()
See Also:
setServerPort(int)

setServerPort

public void setServerPort(int serverPort)
Chances are you should be using setPort(int) or setRegistryPort(int) unless you know what you are doing. This sets what JMX calls the "RMI server port". By default this does not have to be set and the registry-port will be used also as the server-port. Both the registry and the server can be the same port. When you specify a port number in jconsole this is not the port that should be specified -- see the registry port.


setServerSocketFactory

public void setServerSocketFactory(RMIServerSocketFactory serverSocketFactory)
Optional server socket factory that can will be used to generate our registry and server ports. This is not necessary if you are specifying addresses or ports.


setServiceUrl

public void setServiceUrl(String serviceUrl)
Optional service URL which is used to specify the connection endpoints. You should not use this if you are setting the address or the ports directly. The format is something like:

 service:jmx:rmi://your-server-name:server-port/jndi/rmi://registry-host:registry-port/jmxrmi
 

your-server-name could be an IP of an interface or just localhost. registry-host can also be an interface IP or blank for localhost.


getRegisteredCount

public int getRegisteredCount()
Number of registered objects.



This content is licensed by Gray Watson under the Creative Commons Attribution-Share Alike 3.0 License.