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

3

我需要在JMX和Java EE方面得到一些指导。

我了解(经过几周的研究)JMX规范在部署方面存在缺失。虽然有一些供应商特定的实现,但没有跨供应商的实现。我希望能够自动化MBeans的部署和与服务器的注册。我需要服务器在应用程序部署时加载和注册我的MBean,并在应用程序取消部署时将其删除。

我使用的开发工具是:NetBean 6.7.1、GlassFish 2.1、Java EE 5、EJB 3。

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

非常感谢您的帮助。 Gadi。

1个回答

5

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

  1. 特定于Glassfish的JMX。Glassfish有AMX自定义MBean可供部署。据我所知,这些bean旨在监视服务器本身,而不是与特定应用程序紧密交互。这样的bean可以被设置为持久化,并且Glassfish将在重启后将它们的值存储在某个地方。也许可以看一下。

  2. 注册和查找。您可以使用MBeanPlatformMBeanServer随时从应用程序中注册MBean。请参见this链接,我记不清了。您还可以查找其他JMX bean并对其进行操作。查找的名称有点奇怪。您可以在ServletContextListener内部启动应用程序时注册MBean。

  3. 类加载器和部署。 MBeans和EJB实例位于不同的Classloader中。我认为您需要将具有MBean实现的.jar文件放置在Glassfish部署目录结构中,或通过管理控制台将其添加到.jar列表中的类路径中。您可以相对容易地设法从EJB模块内部注册bean,但是从我的经验来看,bean无法轻松地访问EJB。

我曾经使用纯JMX从我的EJB应用程序中公开统计信息,效果还不错。但是我不知道是否需要更多交互式的内容,比如您想要根据使用JMX配置的计时器更改EJB行为的情况。我担心这种方法会有问题。
希望这可以帮到您,尽管我记得的内容有些模糊。

谢谢您,ewernli。非常感谢您花时间回答我的问题。也许您可以基于您的经验,建议一种以灵活的方式管理/配置定时器服务的方法,这样它就不会硬编码到产品中了?非常感谢,Gadi。 - Gadi
其他选项包括:(1)使用带有“env-entry”的部署描述符,(2)使用数据库存储配置信息,(3)使用外部配置文件。 - ewernli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接