这个问题不是关于JMX的工作原理或JMX所做的事情。这个问题是关于在生产环境中使用JMX的应用程序服务器的应用。它也不是针对特定的服务器。
在运行Java EE服务标准堆栈的生产环境中,您使用JMX监视什么内容:数据库访问(JDBC和JPA)、会话EJB、JMS、Web服务器、Web服务、启用AJAX的服务?
这个问题不是关于JMX的工作原理或JMX所做的事情。这个问题是关于在生产环境中使用JMX的应用程序服务器的应用。它也不是针对特定的服务器。
在运行Java EE服务标准堆栈的生产环境中,您使用JMX监视什么内容:数据库访问(JDBC和JPA)、会话EJB、JMS、Web服务器、Web服务、启用AJAX的服务?
在JVM级别,我监测每分钟的垃圾回收时间。
在Servlet容器级别,我监测请求数量,异常数量(4xx和5xx代码),每分钟请求持续时间之和。
在SOAP级别,我监测每个操作和每分钟调用的次数、异常次数和调用总次数。
在Web MVC框架级别,我监测每个动作和每分钟调用的次数、异常次数和调用总次数。
对于池(数据源、线程池/执行器服务),我监测活动计数。
对于JMS连接,我监测每分钟发送和接收的消息数量以及活动接收器的数量。
对于EhCache,我监测缓存中的条目数量,每分钟的命中率和未命中率。
在业务应用程序级别,我开发了@Profiled注释来监测每分钟的调用次数、异常次数和总持续时间。
如果您对此类指标感兴趣,我们开发了许多JMX附加功能(dbcp、util.concurrent、jms、@profiled注释),并将所有这些与Spring XML命名空间基于配置打包,Hyperic HQ插件,监视jsp页面等。
详细信息请参见:http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras。
所有这些代码都在商业友好的开源Apache Software License 2下许可,部署在Maven中央仓库,可作为jar下载,并在Google Code子版本控制器上提供,以便根据您的需要进行集成。
希望这可以帮助到您,
Cyrille(Xebia)
我使用JMX来暴露一个MBean,可以动态地调整Log4J Logger的级别。这对于我们不想在所有节点上修改log4j配置文件以更改指定记录器的日志级别的集群应用程序非常有用。
有点离题,但您可以使用JMX来实现更多功能。目前我正在使用JMX进行热部署/热修复组件。动态地向现有组件添加功能(过滤器等)。JMX非常适合在同一JVM上的组件之间进行通信。我创建的每个组件都被仪表化以使用JMX。