import com.hazelcast.config.Config;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.net.InetAddress;
import java.util.Set;
import java.util.TreeSet;
public class ConnectToJMXBeans {
private static final int PORT = 9999;
public static void main(String[] args) throws Exception {
// parameters for connecting to the JMX Service
String hostname = InetAddress.getLocalHost().getHostName();
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://" + hostname + ":" + PORT
+ "/jndi/rmi://" + hostname + ":" + PORT + "/jmxrmi");
// starting a Hazelcast member
Config config = new Config();
config.setProperty("hazelcast.jmx", "true");
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
// create and populate a distributed map
IMap<Integer, Integer> map = hz.getMap("trial");
for (int i = 0; i < 10; i++) {
map.put(i, i * 3);
}
// connect to the JMX Service
JMXConnector jmxConnector = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxConnector.getMBeanServerConnection();
// See all Beans available
Set<ObjectName> names = new TreeSet<ObjectName>(mbsc.queryNames(null, null));
for (ObjectName name : names) {
System.out.println("\tBean name: " + name);
}
// Bean name for the map
ObjectName mapMBeanName = new ObjectName("com.hazelcast:instance=" + hz.getName() + ",type=IMap,name=trial");
// usage of Getter methods
System.out.println("\nTotal entries on map " + mbsc.getAttribute(mapMBeanName, "name") + ": "
+ mbsc.getAttribute(mapMBeanName, "localOwnedEntryCount"));
// usage of invoking methods
// get all map entries
String[] params = {""};
String[] signatures = {"java.lang.String"};
String mapValues = (String) mbsc.invoke(mapMBeanName, "values", params, signatures);
System.out.print("\nValues in the map: ");
System.out.println(mapValues);
// clear Map
System.out.println("\nClearing the map...");
mbsc.invoke(mapMBeanName, "clear", null, null);
System.out.println("\nTotal entries on map " + mbsc.getAttribute(mapMBeanName, "name") + ": "
+ mbsc.getAttribute(mapMBeanName, "localOwnedEntryCount"));
}
}