java - JMX - MBean 在应用程序部署时自动注册

标签 java jakarta-ee glassfish ejb-3.0 jmx

我需要 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,所以我不记得所有细节了。但这可能仍有帮助。

  1. Glassfish 特定的 JMX。 Glassfish 有 AMXcustom MBean可以部署。 AFAIK,此类 bean 旨在监视服务器本身,而不是与特定应用程序密切交互。这样的 bean 可以持久化,Glassfish 将在重启时将它们的值存储在某个地方。也许看看。

  2. 注册和查找。您可以随时使用 MBeanPlatformMBeanServer 在应用程序中注册 MBean。参见 this链接,记不太清了。您还可以查找其他 JMX bean 并对它们调用操作。虽然查找的名称有点疯狂。您可以在应用程序时注册 MBean。从 ServletContextListener 开始。

  3. 类加载器和部署。 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/

相关文章:

java - 评论树,回复回复即可显示

jakarta-ee - 将Grails应用程序作为一个war文件部署在另一个Java EE Web应用程序中

maven - 部署 Maven 项目抛出 java.util.zip.ZipException : invalid LOC header (bad signature)

jakarta-ee - JAX-RS 应用程序子类未注册

java - Glassfish - 无法更新 http 端口。服务器关闭

java - doFilter 调用了两次,预期的行为?

java - TreeMap,如何获取Key来获取其信息

java - 接口(interface)或抽象类

java - Eclipse 内存分析器 : java. lang.OutOfMemoryError: Java 堆空间

java - 为什么 Glassfish 4.1 中出现此证书错误?