1

我在理解如何将 JMX 代理链接到我的 TJWS(Tiny java Web 服务器)时遇到了一些麻烦

Web 服务器配备了动态 MBean,这些 MBean 在运行时公开其管理接口(属性和操作)。我们将一组组件标识为 TJWS 的一部分,并为每个组件创建了一个相应的 MBean。ThreadPool 或 HTTP Session 就是这类组件。创建时,相应的 MBean 通过它们的构造函数接收对这些组件的引用。创建时,相应的 MBean 通过它们的构造函数接收对这些组件的引用。对于每个组件,我们选择了一组重要的属性进行监控

那么这是否意味着我必须修改服务器代码以便它在组件创建事件上创建 MBean?还是有别的意思?:)

如果有人能指出我正确的方向,我会很高兴

4

1 回答 1

0

我看了你发给我的链接。我只能阅读它的前 3 页(无需付费)。然而,TJWS的文档没有提到任何关于 JMX 或 MBeans 的内容,所以我认为这篇论文的作者一定是自己实现了 JMX 钩子。

话虽如此,概述的三个模型中的每一个都引用了“托管应用程序”,这意味着应用程序本身应该提供“挂钩”来公开管理接口。(以下主要是我的猜测工作,因为论文的可访问部分在描述开始时就结束了......)

守护程序模型 MBeanServer 及其 MBean 对托管应用程序是远程的,因此应用程序需要提供一种远程调用公开的管理功能的方法。这可能是 RMI、REST、WebServices 等。

组件模型 与守护程序模型相同,但暴露的函数可以在本地调用,不需要远程处理。

驱动模型 与组件模型相同。

老实说,除非这是一个学术练习,否则我会坚持使用简化的组件模型,其中现有的 TJWS 组件被检测并实现 MBean 接口。例如,您的 ThreadPools 将实现 MBean 接口并提供 JMX 属性,例如MaxThreadCountActiveThreadCount。然后这些 MBean 应该在本地 VM 的平台 MBeanServer 中注册。(假设 Java 1.5+)

MBeanServers 的远程处理和联合将得到处理,因为远程处理内置于 JVM(RMI、IIOP、WebServices 和 REST 都可用),并且可以使用OpenDMK实现联合。

于 2012-05-03T16:59:14.747 回答