我需要 JMX 和 Java EE 方面的指导。
我知道(经过几周的研究)就部署而言缺少 JMX 规范。我正在寻找的供应商特定实现很少,但没有一个是跨供应商的。我想自动部署 MBean 并向服务器注册。我需要服务器在部署应用程序时加载和注册我的 MBeand,并在应用程序未部署时删除它。
我开发: NetBean 6.7.1、GlassFish 2.1、Java EE 5、EJB 3
更具体地说,我需要一种管理计时器服务运行的方法。我的应用程序需要运行不同的归档代理和批处理报告。我希望 JMX 能让我远程访问以创建和管理计时器服务,并使用户能够创建自己的日程安排。如果 JMX 在应用程序部署时自动注册,用户可以立即连接并管理计划。 另一方面,EJB 如何连接/访问 MBean?
非常感谢。 加迪。
最佳答案
我几年前在 Glassfish 中研究过 JMX 和 EJB,所以我不记得所有细节了。但这可能仍有帮助。
Glassfish 特定的 JMX。 Glassfish 有 AMX和 custom MBean可以部署。 AFAIK,此类 bean 旨在监视服务器本身,而不是与特定应用程序密切交互。这样的 bean 可以持久化,Glassfish 将在重启时将它们的值存储在某个地方。也许看看。
注册和查找。您可以随时使用
MBeanPlatform
或MBeanServer
在应用程序中注册 MBean。参见 this链接,记不太清了。您还可以查找其他 JMX bean 并对它们调用操作。虽然查找的名称有点疯狂。您可以在应用程序时注册 MBean。从ServletContextListener
开始。类加载器和部署。 MBean 和 EJB 实例位于不同的
Classloader
中。我认为您需要将带有 MBean 实现的.jar
放在 Glassfish 部署目录结构中,或者通过管理控制台将其添加到类路径中的.jar
列表中。您可以相对轻松地设法从 EJB 模块中注册一个 bean,但至少根据我的经验,bean 无法轻松访问 EJB。
我设法使用纯 JMX 公开来 self 的 EJB 应用程序的统计信息,并且效果相对较好。但是我不知道拥有更具交互性的东西是否足够,就像您希望让 EJB 根据使用 JMX 配置的计时器更改其行为的情况一样。我担心这种方法会给您带来麻烦。
希望它有所帮助,尽管我记得很模糊。
关于java - JMX - MBean 在应用程序部署时自动注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827749/