2010-05-13 35 views
2

我需要JMX和Java EE的一些指导。JMX-MBean应用程序部署自动注册

我知道(经过几周的研究),就部署而言,JMX规范是丢失的。针对我所寻找的供应商特定的实现有几个,但没有一个是跨供应商。我想自动部署MBeans并在服务器上注册。我需要服务器在应用程序部署时加载和注册我的MBeand,并在应用程序未部署时除去。

我开发出: NetBean 6.7.1,GlassFish的2.1,Java EE 5中,EJB 3

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

非常感谢提前。 嘎迪。

回答

4

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

  1. Glassfish的特定JMX。 Glassfish有AMXcustom MBean可以部署。 AFAIK,这些bean意味着监视服务器本身,而不是与特定的应用程序密切相互作用。这样的bean可以持久化,并且Glassfish将在重新启动的某个地方存储它们的值。也许看看。

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

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

我设法使用纯JMX从我的EJB应用程序公开统计数据,并且工作得相当好。但是我不知道是否足够让一些更具交互性的东西,比如你想让EJB根据配置了JMX的计时器改变它们的行为。我担心你会遇到这种方法的麻烦。

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

+0

谢谢ewernli,我很欣赏你回答我的问题的时间。也许你可以从你的经验中建议一种灵活的方式来管理/配置定时器服务,以便它不会被硬编码到产品中?非常感谢,Gadi。 – Gadi 2010-05-14 05:01:32

+0

其他选项(1)在'env-entry'中使用部署描述符(2)使用数据库存储配置信息(3)使用外部配置文件。 – ewernli 2010-05-14 07:14:42