import javax.management.*;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.util.Set;
/**
* This class demonstrates how to list JMX namespaces and MBeans on a remote JMX server.
*/
public class ListJMXNamespaces {
/**
* The main entry point of the program.
*
* @param args Command-line arguments (not used in this example).
*/
public static void main(String[] args) {
// Press Opt+Enter with your caret at the highlighted text to see how
// IntelliJ IDEA suggests fixing it.
System.out.printf("Hello and welcome!");
// Define the JMX server URL
String jmxUrl = "service:jmx:rmi:///jndi/rmi://localhost:9010/jmxrmi";
try {
// Create a JMX connector to connect to the remote JMX server
JMXServiceURL serviceURL = new JMXServiceURL(jmxUrl);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL);
// Connect to the MBean server
MBeanServerConnection mbeanServerConnection = connector.getMBeanServerConnection();
// List all MBeans and their object names
System.out.println("Listing all MBeans and their namespaces:");
Set<ObjectName> mbeanNames = mbeanServerConnection.queryNames(null, null);
for (ObjectName mbeanName : mbeanNames) {
//System.out.println("MBean: " + mbeanName);
String namespace = mbeanName.getDomain(); // Extract the namespace
//System.out.println("Namespace: " + namespace);
System.out.println(namespace + " " + mbeanName);
}
// Close the JMX connector
connector.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} |