import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeData;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.io.Console;
public class check_jmx {
public static final char ESC = 27;
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// Create an RMI connector client and
// connect it to the RMI connector server
//
JMXServiceURL url =
new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
ObjectName tomcatThreadPoolObh = new ObjectName("Catalina:type=Executor,name=tomcatThreadPool");
Object activeCnt = mbsc.getAttribute(tomcatThreadPoolObh, "activeCount");
ObjectName memoryObh = new ObjectName("java.lang:type=Memory");
CompositeData memoryRes = (CompositeData) mbsc.getAttribute(memoryObh, "HeapMemoryUsage");
Console c = System.console();
if (c == null) {
System.err.println("no console");
System.exit(1);
}
// clear screen only the first time
c.writer().print(ESC + "[2J");
c.flush();
Thread.sleep(200);
for (int i = 0; i < 100000; ++i) {
// reposition the cursor to 1|1
c.writer().print(ESC + "[1;1H");
c.flush();
//c.writer().println("hello " + i);
c.writer().println("activeCount = " + activeCnt);
c.writer().println("HeapMemoryUsage committed = " + memoryRes.get("committed"));
c.writer().println("HeapMemoryUsage init = " + memoryRes.get("init"));
c.writer().println("HeapMemoryUsage max = " + memoryRes.get("max"));
c.writer().println("HeapMemoryUsage used = " + memoryRes.get("used"));
c.flush();
Thread.sleep(5000);
}
/*
echo("activeCount = " + activeCnt);
echo("HeapMemoryUsage committed = " + memoryRes.get("committed"));
echo("HeapMemoryUsage init = " + memoryRes.get("init"));
echo("HeapMemoryUsage max = " + memoryRes.get("max"));
echo("HeapMemoryUsage used = " + memoryRes.get("used"));
*/
jmxc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void echo(String msg) {
System.out.println(msg);
}
}