启用Jetty 6.1.24的JMX支持并添加自定义MBean
Jetty是一个高效的Servlet容器,它由纯Java写成,以体积小而著称。它与Tomcat的一个显著的不同是它可以嵌入到其他的Java代码中。这就是说,Jetty可以作为一组Jar文件提供,因此开发者可以在自己的代码中将Servlet容器实例化成一个对象并可以操纵这个对象。Jetty被设计成了可插拔和可扩展的特性,开发者可以容易地修改Jetty以满足自己的需要。由于Jetty的诸多优异
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连接服务器。
更多推荐
所有评论(0)