Accessing WildFly JMX Bus Remotely with novaordis-jmx: Difference between revisions
No edit summary |
|||
Line 10: | Line 10: | ||
=Classpath= | =Classpath= | ||
== | ==EAP 6 Classpath== | ||
EAP 6 exposes the JMX bus over its remoting protocol, so the JMX client needs JBoss remoting support in its classpath, which is available in <tt>${JBOSS_HOME}/bin/client/jboss-cli-client.jar</tt>. | |||
<pre> | <pre> | ||
Line 18: | Line 18: | ||
</pre> | </pre> | ||
== | ==EAP 7 Classpath== | ||
=URL= | =URL= | ||
The protocol to use for | The protocol to use for EAP 6 is "remoting-jmx". novaordis-jmx builds a <tt>javax.management.remote.JMXServiceURL</tt> which in turn prepends automatically "service:imx" and sends "service:jmx:remoting-jmx://<host>:<port>" to the underlying JMX logic. | ||
<pre> | <pre> |
Revision as of 03:34, 19 June 2017
Internal
Overview
The WildFly JMX bus can be accessed programmatically using standard JMX remoting API, as described in the Remote Access to a JMX Server section. novaordis-jmx is a library that provides a thin layer of functionality in top of the client-side JMX remoting API, with the intention to facilitate programmatic JMX access to a remote JMX bus. Note that novaordis-imx is NOT necessary for programmatic JMX access, but its code introduces a certain degree of convenience, and it can be used as an example for direct use of the JMX remote API.
Classpath
EAP 6 Classpath
EAP 6 exposes the JMX bus over its remoting protocol, so the JMX client needs JBoss remoting support in its classpath, which is available in ${JBOSS_HOME}/bin/client/jboss-cli-client.jar.
java ... -cp ...:${JBOSS_HOME}/bin/client/jboss-cli-client.jar:...
EAP 7 Classpath
URL
The protocol to use for EAP 6 is "remoting-jmx". novaordis-jmx builds a javax.management.remote.JMXServiceURL which in turn prepends automatically "service:imx" and sends "service:jmx:remoting-jmx://<host>:<port>" to the underlying JMX logic.
JMXServiceURL jmxServiceURL = new JMXServiceURL("remoting-jmx", host, port);
novaordis-jmx API
JmxAddress address = new JmxAddress("jmx://localhost:9999"); address.setJmxServiceUrlProtocol("remoting-jmx"); JmxClient client = new JmxClient(address); client.connect(); MBeanServerConnection mBeanServerConnection = client.getMBeanServerConnection(); mBeanServerConnection.getMBeanCount();
Example: {{External|
Underlying JMX API
JMXServiceURL jmxServiceURL = new JMXServiceURL("remoting-jmx", host, port); JMXConnector jmxConnector = JMXConnectorFactory.connect(jmxServiceURL); MBeanServerConnection mBeanServerConnection = jmxConnector.getMBeanServerConnection(); mBeanServerConnection.getMBeanCount();
Alternative JMX API
A more generic way to connect to a JMX server, where it is assumed that an implementation of ClientProvider class is available in classpath:
TODO