Java监控:JMX与Servlets
在过去的几年里,我学到了很多关于JMX的知识,并为我的Web应用程序构建了一些非常漂亮的MBean.但是,我不确定我对一个非常基本的问题有一个很好的答案:
为什么在简单的HTTP servlet上使用JMX? 我当前的Web应用程序提供了冗余监视选项:我可以通过JMX等客户端访问需要通过JMX监视的数据,或者我可以通过servlet访问XML格式的相同数据.我没有看到使用一种方法而不是另一种方法的强烈理由,但servlet方法确实具有可通过简单的http客户端/ Web浏览器读取的主要优点. 我可以看到JMX如何对非Web应用程序的Java应用程序非常有用,但我认为将JMX用于Web应用程序没有任何优势. 解决方法
从我的角度来看,JMX更好有三个原因: >它需要更少的代码来启用监控点. JMX为特定数据项提供了更简单的界面.您当然可以在许多servlet中编写相同的功能,但我更容易使用JMX公开它们. 例如,如果您使用的是Spring,则可以使用org.springframework.jmx.export注释(@ManagedResource,@ ManagedAttribute等)来标记您的类.我还发布了我的SimpleJmx framework,因此您可以通过几个独立于Spring的注释轻松地公开属性和操作.例如: @JmxResource(domainName = "j256",objectName = "lookupCache") public class LookupCache { // this can also be done as @JmxAttributeMethod on the getter/setters @JmxAttributeField(description = "Number of hits in the cache") private int hitCount; ... @JmxOperation(description = "Flush the cache") public void flushCache() { ... } } 我有一个fully working example program,看看它是如何工作的.因此,展示值或操作所需要做的就是为类和每个属性和/或方法添加注释.使用SimpleJmx发布它的代码如下所示. Spring虽然与bean相似但是类似: // create a new server listening on port 8000 JmxServer jmxServer = new JmxServer(8000); jmxServer.start(); // register our lookupCache object defined above jmxServer.register(lookupCache); 要在servlet中获得类似的功能,需要的代码不仅仅是注释.也就是说,可能存在一些框架,它们在servlet中提供了类似的功能,我不知道. 还有一些说明: >可能有更好的监控工具可以使用HTTP / HTML,但也有大量的分布式JMX监控应用程序.可能是一个折腾. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |