2012-04-12 81 views
0

我正在阅读关于JMX的第一次,并试图查看它是否可行,以解决我们生产中遇到的问题。JMX远程部署体系结构

我们有一个架构,不断打远程Web服务(由不同的团队在自己的服务器上托管),并要求从它的数据(我们也缓存从这项服务,但它是一个棘手的问题,其中的缓存ISN非常有效)。

我们希望的能力在代码中的一个特定点动态地打开/关闭记录,就在我们打开Web服务之前,我们可以看到我们发送给Web服务的确切URL /查询服务。如果我们只是盲目设置日志记录级别并记录所有Web服务请求,我们就会有天文数字大的日志文件。

JMX似乎是解决方案,我们用托管bean来控制本节中的日志记录,然后可以通过某个管理器(可能只是基本的HTML适配器)远程设置该bean的状态(setLoggingEnabled(boolean)等)。

我的问题是所有部署相关:

  • 如果我写的MBean接口并实现了一套,以及代理(其中注册的MBean,并与平台MBean服务器HTML适配器),做我编译,包&在我的主Web应用程序(WAR)中部署这些应用程序,还是必须编译为自己的应用程序,例如JAR,并且位于应用程序旁边的JVM上?
  • 我们有Dev,QA,Demo和Prod envrionment;是否有可能有1个单一的HTML适配器指向一个MBean服务器,它有不同的MBean注册,每个环境1个?如果有一个URL可以到达可以在不同环境中管理bean的地方,那将是非常不错的。
  • 如果我上面第一个问题的答案是MBean接口,impl和agent全部部署在应用程序内部,那么是否有可能让您的JMX应用程序部署在一台服务器上(比如说Demo),但要从另一台服务器上监控它?

在此先感谢!

回答

0

你如何包装的MBean在很大程度上便携性的问题。这些特定的服务在这个webapp的范围之外是否有任何实际的用处?如果不是的话,我会简单地声明你的web应用程序“JMX Manageable”并将其构建。否则,组装MBean,将它们放入jar中,将jar放入WEB-INF/lib中,并使用在您的web应用程序中配置的启动servlet进行初始化web.xml中。

对于单个HTML适配器,是的,这是可能的。将其视为具有Dev,QA,Demo和Prod MBeanServers,然后一个MBeanServer。您的HTML适配器应呈现主控。然后,您可以使用OpenDMK cascading service在主站中注册Dev,QA,Demo和Prod的级联。现在,您将在HTML适配器显示中看到全部5个MBeanServer的bean。

这会回答你的第三个问题吗?

0

JMX是一种用于远程管理您的应用程序的技术,例如当您想要更改配置而不重新启动是最恰当的用法。

但在你的情况下,我不明白你为什么需要JMX。例如,如果您使用Log4j进行日志记录,则可以配置文件监视程序并将日志记录更改为尽可能低的级别。即进行调试。这不需要重新启动,恕我直言,本应该是你的初始设计,即工作arround记录器和水平。目前,还不清楚你的意思,setLoggingEnable会发生什么情况。

在任何情况下,托管bean都应该与您的应用程序一起部署,如果您使用的是Spring,那么您很幸运,因为它提供了与JMX的非常好的集成,并且可以将Spring bean部署为托管的bean。

最后,当您连接到进程时,您将看到为该JVM运行的托管bean。所以我不确定你在第二点的意思。

无论如何,我希望这有助于有点

+0

为了响应你的第一个项目,不管我们设置log4j的日志级别是什么,当它登录时,它会记录数十万条,数百万条消息 - 太多我们无法处理的,所以日志级别-based解决方案不适用于我们的情况 – IAmYourFaja 2012-04-12 14:22:59

+0

作为对第二项的回应,假设我们在blah.example.com上有一个演示服务器。该服务器正在运行Tomcat,其中部署了我们的WAR文件(Web应用程序)。现在让我们假设我们将WAR的托管bean配置为使用HTML适配器,以便我们可以通过Web URL对它们进行监听/管理。该URL是否会关闭blah.example.com,或者我们可以将JMX的监控设置为从第二台服务器提供,如fizz.example.com? – IAmYourFaja 2012-04-12 14:24:59