xylz,imxylz

          關(guān)注后端架構(gòu)、中間件、分布式和并發(fā)編程

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

          4.3 Guice與JMX

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

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

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

           

          然后是實現(xiàn)類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 

          這里比較關(guān)鍵的是我們要將我們的服務注入到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的死循環(huán)。

          特別注意,在eclipse中需要設置JVM的參數(shù)才能正確啟動我們的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的進程了。然后選擇連接。

          下面的圖顯示了我們執(zhí)行sayHello方法的結(jié)果。

          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)
          下一篇:待續(xù)

          ©2009-2014 IMXYLZ |求賢若渴
          posted on 2009-12-31 15:35 imxylz 閱讀(19886) 評論(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
          主站蜘蛛池模板: 陵川县| 黑河市| 呼和浩特市| 黑龙江省| 广德县| 航空| 东丽区| 福州市| 贵阳市| 曲周县| 五家渠市| 沭阳县| 德庆县| 松潘县| 怀安县| 台东县| 中阳县| 沭阳县| 金华市| 三河市| 云南省| 仪陇县| 甘孜县| 龙江县| 濉溪县| 克山县| 昭平县| 梨树县| 仁怀市| 东宁县| 呈贡县| 介休市| 团风县| 称多县| 砀山县| 凤凰县| 新疆| 福鼎市| 大竹县| 德钦县| 西昌市|