How Tomcat works 18: JMX管理
阿新 • • 發佈:2018-12-18
1. Tomcat中的JMX概述 (1)概述 對於一個可以被管理的Java物件,我們需要建立另一個物件MBean或Managed Bean。org.apache.catalina.mbeans包中有:ConnectorMBean, StandardEngineMBean, StandardHostMBean, StandardContextMBean。 一個MBean暴露出他所管理的Java Objects的屬性和方法(可被呼叫的)。一旦有了MBean類,需要例項化它並把被管理的物件和自己註冊到Mbean Server。
(2)四種類型 Standard,Dynamic,Open,model (3)架構上三層 Agent, instrumentation,distributed service
2. MBeanServer Java.management.MBeanServer介面代表了Mbean Server。可以使用MBeanServerFactory類來建立MbeanServer的例項。使用RegisterMBean()來註冊MBean。
public ObjectInstance registerMBean(java.lang.Object object, ObjectName name) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException
可以通過 queryNames來查詢MBean
public java.util.Set queryNames(ObjectName name, QueryExp query)
3. 簡單的JMX實現 (1)MBean介面
public interface HelloMBean {
public void sayHello();
}
(2)Bean實現
public class Hello implements HelloMBean { @Override public void sayHello() { System.out.println("hello, world"); } }
(3)例項化MBeanServer, 註冊Mbean
public class TestJmx {
public static void main(String[] args) throws Exception, MBeanRegistrationException, NotCompliantMBeanException {
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("com.cisco.tomcat.jmx:type=Hello");
Hello mBean = new Hello();
mBeanServer.registerMBean(mBean, name);
System.out.println("Waiting forever...");
Thread.sleep(Long.MAX_VALUE);
}
}
(4)執行這個main執行緒,然後開啟jconsole連線到該執行緒
選中需要連線的pid
Click sayHello(), hello中的程式碼就被呼叫成功了