Remote method invokation via JMX showed below:
package com.test; import java.util.Arrays; import java.util.Map; import java.util.Map.Entry; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; public class JmxInvokeExample { public static void main(String[] args) { try { // Define settings final String JMX_SERVICE_URL = "service:jmx:rmi:///jndi/rmi://ServerIP:Port/jmxrmi"; // Preparing JMXServiceURL serviceURL = new JMXServiceURL(JMX_SERVICE_URL); JMXConnector connector = JMXConnectorFactory.connect(serviceURL); MBeanServerConnection connection = connector.getMBeanServerConnection(); // Create object to invoke ObjectName objectName = new ObjectName("org.hornetq:module=JMS,type=Queue,name=\"Some.Queue.Name\""); // Compose invoking params String opName = "listMessages"; String filter = ""; // filter = "propKey1 = 'some value'"; // filter += " AND "; // filter = "propKey2 = 'some next'"; Object opParams[] = { filter }; String opSig[] = { String.class.getName() }; // Make invoking operation via JMX! Object object = connection.invoke(objectName, opName, opParams, opSig); // Check and out result if (object != null) { for (Map<String, Object> map : Arrays.asList((Map<String, Object>[]) object)) { System.out.println("\nMESSAGE:\n--------"); for (Entry<String, Object> entry : map.entrySet()) { System.out.println(entry.getKey() + " = " + entry.getValue()); } } } // Close connection connector.close(); } catch (Exception e) { e.printStackTrace(); } } }
See also,
Standard MBeans and JMX
Basic Example of JMX Technology
Standard MBeans
Invoking MBean Operations