1. 程式人生 > >How Tomcat works 18: JMX管理

How Tomcat works 18: JMX管理

    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中的程式碼就被呼叫成功了