JMX - 应用程序部署的MBean自动注册

时间:2010-05-13 14:52:08

标签: java java-ee glassfish ejb-3.0 jmx

我需要JMX和Java EE的一些指导。

我知道(经过几周的研究)在部署方面缺少JMX规范。对于我正在寻找的东西,很少有供应商特定的实现,但没有一个是跨供应商。我想自动部署MBean并注册Server。我需要服务器在部署应用程序时加载和注册我的MBeand,并在应用程序未部署时删除。

我发展: NetBean 6.7.1,GlassFish 2.1,Java EE 5,EJB 3

更具体地说,我需要一种管理计时器服务运行的方法。我的应用程序需要运行不同的归档代理和批量报告。我希望JMX能够让我远程访问以创建和管理计时器服务,并使用户能够创建自己的计划。如果JMX在应用程序部署时自动注册,则用户可以立即连接和管理计划。 另一方面,EJB如何连接/访问MBean?

非常感谢提前。 迦底。

1 个答案:

答案 0 :(得分:4)

几年前我在Glassfish中调查了JMX和EJB,所以我不记得所有的细节。但这可能仍有帮助。

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

  2. 注册和查找 。您可以使用MBeanPlatformMBeanServer随时在应用程序中注册MBean。请参阅this链接,我不记得确切。您还可以查找其他JMX bean并对其进行调用操作。查找的名称虽然有点疯狂。您可以在应用程序时注册MBean。从ServletContextListener

  3. 开始
  4. 类加载器和部署 。 MBean和EJB实例位于不同的Classloader中。我认为您需要将.jar与MBean实现放在Glassfish部署目录结构中,或者通过管理控制台在类路径中添加.jar列表。您可以相对轻松地管理从EJB模块中注册bean,但是bean不能轻易地访问EJB,至少从我的经验来看。

  5. 我设法使用普通的JMX来公开我的EJB应用程序的统计信息,并且效果相对较好。但我不知道是否有足够的交互性,就像你希望让EJB根据配置了JMX的计时器改变行为一样。我担心你会遇到这种方法的麻烦。

    希望它有所帮助,尽管我记得的含糊不清。