啓用Jetty 6.1.24的JMX支持並添加自定義MBean

    Jetty是一個高效的Servlet容器,它由純Java寫成,以體積小而著稱。它與Tomcat的一個顯著的不同是它可以嵌入到其他的Java代碼中。這就是說,Jetty可以作爲一組Jar文件提供,因此開發者可以在自己的代碼中將Servlet容器實例化成一個對象並可以操縱這個對象。Jetty被設計成了可插拔和可擴展的特性,開發者可以容易地修改Jetty以滿足自己的需要。由於Jetty的諸多優異特性,Google AppEngine已放棄Tomcat轉而採用Jetty作爲其Servlet容器。目前Jetty的最新穩定版本是7。本文基於Jetty 6.1.24。

 

    我們先啓用Jetty的JMX支持。打開jetty安裝目錄下的etc/jetty-jmx.xml,將圍繞下面兩個塊的註釋去掉:

 

    <Call id="rmiRegistry" class="java.rmi.registry.LocateRegistry" name="createRegistry">
      <Arg type="int">2099</Arg>
    </Call>

 

    <Call id="jmxConnectorServer" class="javax.management.remote.JMXConnectorServerFactory" name="newJMXConnectorServer">
      <Arg>
        <New  class="javax.management.remote.JMXServiceURL">
          <Arg>service:jmx:rmi://localhost:2100/jndi/rmi://localhost:2099/jmxrmi</Arg>
        </New>
      </Arg>
      <Arg/>
      <Arg><Ref id="MBeanServer"/></Arg>
      <Call name="start"/>
    </Call>

 

    啓動jetty要使用這樣的命令行:java -jar start.jar etc/jetty-jmx.xml etc/jetty.xml,其中“etc/jetty-jmx.xml”要放在“etc/jetty.xml”前面。

 

    我們有時需要將Jetty中更多的信息暴露出來,或者向Jetty中添加了自己的代碼,而自己的代碼中有一些需要通過JMX暴露出來的。這就需要我們自己註冊一些MBeans到Jetty使用的MBeanServer中。在自己的代碼中用ManagementFactory.getPlatformMBeanServer()方法獲得MBeanServer,這個MBeanServer就是Jetty使用的MBeanServer,將自己的MBean註冊到它裏面去就可以了。

 

    而後,打開JConsole,填入地址service:jmx:rmi://localhost:2100/jndi/rmi://localhost:2099/jmxrmi,就可以看到Jetty的MBeans和自己註冊的MBeans了。這種做法非常簡單,不需要自己建立MBean連接服務器。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章