我应该如何使用JMX监视tomcat上的Web应用程序?

时间:2009-08-17 12:23:03

标签: tomcat jmx

我想使用JMX监视在tomcat下运行的Web应用程序。

我不想只使用Tomcat的内置JMX实现,我想为实际的Web应用程序实现一个mbean,这样我就可以获得有关特定于应用程序的设置的信息并对其进行监控。

Web应用程序和在线监视的问题在于Web应用程序并不总是处于活动状态,而是“唤醒”以处理服务器的请求,因此监视它们不仅仅是插入JMX,就像我正常运行的进程一样。 / p>

如何让Tomcat在后台运行应用程序(如Singleton),以便我可以随时连接它?

有没有办法做到这一点很常见而且我不知道?

谢谢!

3 个答案:

答案 0 :(得分:3)

在您的应用程序中,您需要在部署应用程序时向MBean服务器注册MBean。部署Web应用程序时,将公开MBean。我已经使用Spring Framework JMX support在Tomcat中执行此操作 - 但是如果没有Spring,有很多方法可以做到这一点。

答案 1 :(得分:2)

您可以创建一个实现ServletContextListener的类,然后在您的web.xml中加载该侦听器。

班级:

public class ServerListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent pSce) {
    }

    public void contextInitialized(ServletContextEvent pSce) {
        // TODO Register MBean here.
    }
}

web.xml:

<listener>
  <listener-class>com.example.ServerListener</listener-class>
</listener>

答案 2 :(得分:0)

如果您熟悉Nagios并且您的公司正在使用它,那么这可能是更好的选择

这些插件看起来很有帮助 https://exchange.nagios.org/directory/Plugins/Java-Applications-and-Servers/Apache-Tomcat

另外,正如@teabot所说,使用Spring JMX支持。使它变得非常容易。