我第一次阅读 JMX,并试图看看它是否是解决我们在生产中遇到的问题的可行解决方案。
我们的架构不断访问远程 Web 服务(由不同团队在他们自己的服务器上管理)并从中请求数据(我们也从该服务缓存,但这是一个棘手的问题,缓存不是非常有效)。
我们希望能够在代码中的某个特定点动态打开/关闭日志记录,就在我们点击 Web 服务之前,我们可以在其中看到我们发送到服务的确切 URL/查询。如果我们只是盲目地设置日志级别并记录所有 Web 服务请求,我们将拥有天文数字般的大日志文件。
JMX 似乎是解决方案,我们在本节中使用托管 bean 控制日志记录,然后可以setLoggingEnabled(boolean)
通过某个管理器(可能只是基本的 HTML 适配器)远程设置该 bean 的状态(等)。
我的问题都与部署有关:
- 如果我编写 MBean 接口和实现,以及代理(将 MBean 和 HTML 适配器注册到平台 MBean 服务器),我是在我的主 Web 应用程序 (WAR) 中编译、打包和部署它们,还是它们有编译成自己的,比如 JAR 并坐在我的应用程序旁边的 JVM 上?
- 我们有一个 Dev、QA、Demo 和 Prod 环境;是否可以有 1 个单一的 HTML 适配器指向一个 MBean 服务器,该服务器注册了不同的 MBean,每个环境 1 个?如果有一个 URL 可以访问您可以在不同环境中管理 bean 的位置,那就太好了
- 如果我上面第一个问题的答案是 MBean 接口、impl 和代理都部署在您的应用程序中,那么是否可以将启用 JMX 的应用程序部署在一个服务器上(例如 Demo),但要从另一个服务器监视它服务器?
提前致谢!