xylz,imxylz

          關注后端架構、中間件、分布式和并發編程

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            111 隨筆 :: 10 文章 :: 2680 評論 :: 0 Trackbacks

          4.3 Guice與JMX

          Guice官方提供一個JMX的插件guice-jmx-2.0.jar。在這個插件中我們可以很方便的將我們的服務發不成JMX可管理的MBean。本教程中我們繼續探討這個話題。

          老套了,我們的HelloWorld服務,注意這個服務為了滿足JMX的規范,接口名稱以MBean結尾,而實現類必須不帶MBean。

          1 public interface HelloWorldMBean {
          2     String sayHello();
          3 }

           

          然后是實現類HelloWorld。


           1 public class HelloWorld implements HelloWorldMBean {
           2 
           3     @Override
           4     public String sayHello() {
           5         return "Hello, guice";
           6     }
           7     @Inject
           8     public void register(MBeanServer server) {
           9         try {
          10             server.registerMBean(thisnew ObjectName("xylz guice demo:type=HelloWorld"));
          11         } catch (Exception e) {
          12             e.printStackTrace();
          13         }
          14     }
          15 }
          16 

          這里比較關鍵的是我們要將我們的服務注入到JMX服務器中。

          然后寫一個JMX的服務端例子。


           1 public class JMXDemo {
           2 
           3     public static void main(String[] args) throws Exception{
           4        Injector inj= Guice.createInjector(new Module() {
           5             @Override
           6             public void configure(Binder binder) {
           7                 binder.bind(MBeanServer.class).toInstance(ManagementFactory.getPlatformMBeanServer());
           8                 binder.bind(HelloWorldMBean.class).to(HelloWorld.class);
           9             }
          10         });
          11        //
          12        Manager.manage("guice-jmx-demo", inj);
          13        //
          14        Thread.sleep(10000*600);//sleep for ten minute
          15     }
          16 
          17 }
          18 

          在這個例子中我們綁定MBeanServer到Guice中,然后通過Guice的JMX插件將我們的HelloWorldMBean服務到JMX中。最后暫停10分鐘阻止我們的程序立即退出,當然你可以寫一個while的死循環。

          特別注意,在eclipse中需要設置JVM的參數才能正確啟動我們的JMX服務。見下面。

          -Dcom.sun.management.jmxremote
          -Dcom.sun.management.jmxremote.port=4321
          -Dcom.sun.management.jmxremote.authenticate=false
          -Dcom.sun.management.jmxremote.ssl=false

          然后使用我們的jconsole來查看我們的JMX服務。

          image

          在這里我們就可以看到我們的JMXDemo的進程了。然后選擇連接。

          下面的圖顯示了我們執行sayHello方法的結果。

          image

          當然了我們可以自己寫一個client的程序來處理我們的服務。


           1 public class JMXClientDemo {
           2 
           3     public static void main(String[] args) throws Exception{
           4         JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:4321/jmxrmi");
           5         JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
           6         MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
           7         //
           8         ObjectName mbeanName = new ObjectName("xylz guice demo:type=HelloWorld");
           9         //
          10         HelloWorldMBean helloWorld = JMX.newMBeanProxy(mbsc, mbeanName, HelloWorldMBean.classtrue);
          11         String msg=helloWorld.sayHello();
          12         System.out.println(msg);
          13     }
          14 
          15 }
          16 
          上一篇:Google Guice 入門教程07 - 整合第三方組件(1)
          下一篇:待續

          ©2009-2014 IMXYLZ |求賢若渴
          posted on 2009-12-31 15:35 imxylz 閱讀(19865) 評論(3)  編輯  收藏 所屬分類: J2EEGoogle Guice

          評論

          # re: Google Guice 入門教程08 - 整合第三方組件(2) 2009-12-31 21:29 凡客誠品羽絨服
          阿開始大世界頂級  回復  更多評論
            

          # re: Google Guice 入門教程08 - 整合第三方組件(2) 2010-01-02 18:30 在線詞典
          不錯....  回復  更多評論
            

          # re: Google Guice 入門教程08 - 整合第三方組件(2) 2015-11-16 21:49 rfbingo
          nice,謝謝樓主,最近在使用guice,學習了  回復  更多評論
            


          ©2009-2014 IMXYLZ
          主站蜘蛛池模板: 新乐市| 昭平县| 宜兴市| 天全县| 凤山县| 泗水县| 伊宁市| 贡嘎县| 伊通| 二手房| 伽师县| 安宁市| 申扎县| 鄂温| 攀枝花市| 舟山市| 通州市| 潼南县| 抚松县| 宿松县| 甘孜| 祁连县| 汨罗市| 广灵县| 安徽省| 垫江县| 孟村| 定陶县| 黔江区| 白河县| 称多县| 敖汉旗| 环江| 紫阳县| 乐业县| 衡南县| 长宁区| 河曲县| 伊吾县| 东阿县| 开化县|