If you want to monitor if JBoss is running via JMX (Remoting JMX). This article is for you.
Update JBoss Configuration File for Remoting JMX
First, you need to add the following into $JBOSS_HOME/standalone/configuration/standalone.xml,<server xmlns="urn:jboss:domain:1.2"> <extensions> <extension module="org.jboss.as.jmx"/> </extensions> <profile> <subsystem xmlns="urn:jboss:domain:jmx:1.1"> <show-model value="true"/> <remoting-connector/> </subsystem> </profile> </server>
Then, run the server in the STANDALONE mode.
Dependent Jars for Maven or Normal Java Projects
Next, in your Maven project, add the following dependencies,<dependency> <groupId>org.jboss.remotingjmx</groupId> <artifactId>remoting-jmx</artifactId> <version>1.0.2.Final</version> </dependency> <dependency> <groupId>org.jboss.marshalling</groupId> <artifactId>jboss-marshalling-river</artifactId> <version>1.3.11.GA</version> </dependency> <dependency> <groupId>org.jboss.sasl</groupId> <artifactId>jboss-sasl</artifactId> <version>1.0.0.Final</version> </dependency> <dependency> <groupId>org.jboss.xnio</groupId> <artifactId>xnio-nio</artifactId> <version>3.0.3.GA</version> </dependency>
If the project is a basic Java project, add the following to the classpath:
remoting-jmx-1.0.2.Final.jar
jboss-logmanager-1.2.2.GA.jar
jboss-logging-3.1.0.GA.jar
jboss-marshalling-1.3.9.GA.jar
jboss-remoting-3.2.2.GA.jar
xnio-api-3.0.3.GA.jar
jboss-marshalling-river-1.3.11.GA.jar
jboss-sasl-1.0.0.Final.jar
xnio-nio-3.0.3.GA.jar
remoting-jmx-1.0.2.Final.jar
jboss-logmanager-1.2.2.GA.jar
jboss-logging-3.1.0.GA.jar
jboss-marshalling-1.3.9.GA.jar
jboss-remoting-3.2.2.GA.jar
xnio-api-3.0.3.GA.jar
jboss-marshalling-river-1.3.11.GA.jar
jboss-sasl-1.0.0.Final.jar
xnio-nio-3.0.3.GA.jar
You can find the locations of these jars in $JBOSS_HOME/bin/jconsole.sh or jconsole.bat.
Keep in mind that JBoss does not use standard JMX and use its own remoting JMX instead. So make sure you have include the remoting jmx jars. The shortcoming for doing this is your project will depend on some JBoss jars.
Keep in mind that JBoss does not use standard JMX and use its own remoting JMX instead. So make sure you have include the remoting jmx jars. The shortcoming for doing this is your project will depend on some JBoss jars.
Code Snippet for JBoss Monitoring via JMX
To test it, use the code snippet://the remoting JMX service URL; port 9999 is the default one. String serverUrl = "service:jmx:remoting-jmx://localhost:9999"; JMXServiceURL url = new JMXServiceURL(serverUrl); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); //find the object to be monitored ObjectName objectName = new ObjectName("jboss.as:management-root=server"); //serverState has a couple of possible values, like running, starting, stopping and stopped. Object response = mbsc.getAttribute(objectName, "serverState"); jmxc.close();