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