jmx

 

一 jmx joncole 鏈接html

 

2種方式:java

方式一:spring

        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
        ObjectName objectName = new ObjectName("jmxBean:name=hello");
        server.registerMBean(new Hello(), objectName);

        // 方式一,啓動時指定,代碼到此爲止
        /**
         * -Djava.rmi.server.hostname=192.168.57.234
         * -Dcom.sun.management.jmxremote.port=8288
         * -Dcom.sun.management.jmxremote.authenticate=false
         * -Dcom.sun.management.jmxremote.ssl=false
         */
        // 放大用
        Thread.sleep(100000000);

 

方式二:dom

        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
        ObjectName objectName = new ObjectName("jmxBean:name=hello");
        server.registerMBean(new Hello(), objectName);

        /**
         * 方式二 代碼註冊
         * 但啓動時仍然須要指定 -Djava.rmi.server.hostname=192.168.57.234,不然客戶端jconsole沒法鏈接
         */
        Registry registry = LocateRegistry.createRegistry(8288);
        JMXServiceURL jmxServiceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8288/jmxrmi");
        JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(jmxServiceURL, null, server);
        cs.start();

 

以後jconsole能夠函數

固然也能夠本身寫client獲取jmx connector,並展現HelloMBean的一些信息,屬性,及調用其方法,並經過jmx通知感應屬性的變動,結合後可作可視化配置中心):spa

 

訪問屬性值orm

給屬性賦值server

調用其中的方法,可輸入參數htm

 

注意:「屬性」取決於接口HelloMBean中的get set函數,而不是其實現類,由jmx自動識別;其它函數識別爲「操做」blog

 

屬性        讀           接口HelloMBean get開頭的函數

               寫           接口HelloMBean set開頭的函數

操做         接口HelloMBean其它函數

通知         實現類  Hello 去繼承 extends NotificationBroadcasterSupport

 

 

http://www.cnblogs.com/dongguacai/p/5900507.html

http://www.cnblogs.com/trust-freedom/p/6842332.html

 

 

 

二  MXBean

當xxxMBean中有自定義類型時,jconsole提示不可用

此時應當用xxxMXBean

 https://www.cnblogs.com/duanxz/p/4474824.html

 

 

三  通知

 

1. JMX中要定義接口必須以xxxMBean的規範定義

2. 得有類實現xxxMBean接口

3. 在實現類中能夠繼承NotificationBroadcasterSupport來支持通知機制

4. 能夠經過n個jconsole client來驗證server的通知,驗證經過

 

https://www.cnblogs.com/duanxz/p/4493445.html

http://www.cnblogs.com/dongguacai/p/5900507.html

 

 

四   spring

如今,要把任意一個Spring bean轉變爲MBean,咱們所須要作的僅僅是使 用@ManagedResource註解標註bean並使用@ManagedOperation 或@ManagedAttribute註解標註bean的方法。

 

在類級別使用了@ManagedResource註解來標識這個bean應該被導出爲 MBean。objectName屬性標識了域(Spitter)和MBean的名稱(SpittleController)。 spittlesPerPage屬性的存取器方法都使用了@ManagedAttribute註解來進行標註,這 表示該屬性應該暴露爲MBean的託管屬性。注意,其實並不須要使用註解同時標註這兩個存取 器方法。若是咱們選擇僅標註setSpittlesPerPage()方法,那咱們仍能夠經過JMX設置 該屬性,但這樣的話咱們將不能查看該屬性的值。相反,若是僅僅標註 getSpittlesPerPage()方法,那咱們能夠經過JMX查看該屬性的值,但沒法修改該屬性 的值。

一樣須要提醒一下,咱們還可使用@ManagedOperation註解替換@ManagedAttribute 註解來標註存取器方法。這會將方法暴露爲MBean的託管操做可是並不會把spittlesPerPage屬性暴露爲MBean 的託管屬性。這是由於在暴露MBean功能時,使用@ManagedOperation註解標註方法是嚴 格限制方法的,並不會把它做爲JavaBean的存取器方法。所以,使用@ManagedOperation可 以用來把bean的方法暴露爲MBean託管操做,而使用@ManagedAttribute能夠把bean的屬 性暴露爲MBean託管屬性。

 

 ManagedResource

屬性        讀           ManagedAttribute註解get方法

               寫           ManagedAttribute註解set方法

操做         ManagedOperation註解的方法

通知         實現NotificationPublisherAware接口

 

 

https://www.cnblogs.com/duanxz/p/3968308.html

https://www.cnblogs.com/duanxz/p/4036619.html

一如既往,spring搞得很複雜

相關文章
相關標籤/搜索