我第一次阅读了JMX,并试图看看它是否是解决我们正在生产的一个问题的可行方法。
我们有一个体系结构,它不断地访问一个远程web服务(由不同的团队在他们自己的服务器上管理)并向它请求数据(我们也从这个服务缓存数据,但是缓存不是非常有效的一个棘手问题)。
我们希望能够在代码的某个特定点动态地打开/关闭日志,就在我们访问web服务之前,在那里我们可以看到我们发送给服务的确切的URL/查询。如果我们只是盲目地设置一个日志级别并记录所有的web服务请求,我们就会有大量的日志文件。
JMX似乎是解决方案,在这里,我们使用托管bean控制本节中的日志记录,然后可以设置该bean的状态(setLoggingEnabled(boolean)等)。远程通过某个管理器(可能只是基本的HTML适配器)。
我的问题都与部署有关:
如果我编写application?
。
提前感谢!
发布于 2012-04-12 21:08:29
如何打包MBeans在很大程度上取决于可移植性。这些特定的服务在这个webapp的范围之外会有什么实际的用处吗?如果不是,我将简单地声明您的and应用程序"JMX可管理“并在其中构建它。否则,将MBeans组件化,将它们放在jar中,将jar放在web.xml /lib中,并使用在web.xml中配置的启动servlet初始化它们。
对于单个HTML适配器,是的,这是可能的。把它想象成拥有Dev、QA、Demo和Prod MBeanServers,然后是一个Master MBeanServer。您的HTML适配器应该呈现母版。然后,您可以使用OpenDMK cascading service在主目录中注册开发、QA、演示和Prod的级联。现在,您将在HTML适配器显示中看到所有5 MBeanServer的bean。
这回答了你的第三个问题吗?
发布于 2012-04-12 14:12:27
JMX是一种用于远程管理应用程序的技术,例如,在不重新启动的情况下更改配置是最恰当的使用。
但在你的情况下,我不明白你为什么需要JMX。例如,如果您使用Log4j进行日志记录,您可以配置一个文件看门狗,并将日志记录更改为尽可能低的级别。也就是调试。这不需要重新启动和IMHO,这应该是您最初的设计,即工作周围的记录器和级别。现在,还不清楚您的意思以及setLoggingEnable会发生什么。
在任何情况下,托管bean都应该与应用程序一起部署,如果您正在使用Spring,那么幸运的是,它提供了与JMX非常好的集成,并且可以将spring部署为托管bean。
最后,当您连接到您的进程时,您将看到托管bean为该JVM运行。所以我不知道第2点到底是什么意思。
不管怎么说,我希望这能帮点忙
https://stackoverflow.com/questions/10125080
复制相似问题