如何以编程方式启动/停止EJB

时间:2012-05-14 09:48:32

标签: java java-ee jboss ejb jmx

有谁知道在我的应用程序代码中是否可以启动/停止EJB?例如。我有一些MDB,我希望在我的应用程序运行时有选择地启动/停止?有任何想法吗?这可以通过JMX完成吗?

干杯!

3 个答案:

答案 0 :(得分:1)

EJB规范没有在应用程序中启动/停止单个EJB(甚至模块)的机制。可以通过JSR 77使用JMX动态启动/停止应用程序。

(我看到你正在使用jboss标签。我没有JBoss的专业知识,所以我不知道它是否提供了支持你想要做的扩展。)

答案 1 :(得分:1)

EJB不是可以“启动”或“停止”的东西。当然,它有一个life cycle但更关注EJB 实例的创建,激活,钝化和删除,而这完全取决于EJB容器来管理生命周期。

简而言之:您无法以编程方式管理EJB的生命周期。

答案 2 :(得分:0)

每个部署的MDB都有一个管理MBean。 MBean类是 org.jboss.ejb3.mdb.MdbDelegateWrapper 。 JMX ObjectName因JBoss 4版本而异,具体取决于您部署它们的方式。假设您在名为 myapp.ear 的名为 myapp.jar 的jar中部署了一个名为 MyMDB 的MDB,其名称可能是:

jboss.j2ee:ear=myapp.ear,jar=myapp.jar,name=MyMDB,service=EJB3

旧版本的JBoss 4也有一个系统哈希码。如果您没有使用EJB3,我认为该服务仍将存在,只有 EJB2

无论如何,一旦找到管理bean,就可以调用停止启动操作。我们经常使用它来暂停消息传递。