有谁知道是否可以在我的应用程序代码中启动/停止 EJB?例如。我有一些 MDB,我希望在我的应用程序运行时选择性地启动/停止?有任何想法吗?这可以通过 JMX 完成吗?
干杯!
有谁知道是否可以在我的应用程序代码中启动/停止 EJB?例如。我有一些 MDB,我希望在我的应用程序运行时选择性地启动/停止?有任何想法吗?这可以通过 JMX 完成吗?
干杯!
EJB 不是可以“启动”或“停止”的东西。当然,它有一个生命周期,但它更关心 EJB实例的创建、激活、钝化和删除,并且完全由 EJB 容器来管理生命周期。
简而言之:您不能以编程方式管理 EJB 的生命周期。
EJB 规范没有在应用程序中启动/停止单个 EJB(甚至模块)的机制。可以通过JSR 77使用 JMX 动态启动/停止应用程序。
(我看到你在使用 jboss 标签。我对 JBoss 没有专业知识,所以我不知道它是否提供支持你想做的扩展。)
每个部署的 MDB 都有一个管理 MBean。MBean 类是org.jboss.ejb3.mdb.MdbDelegateWrapper。JMX ObjectName 在 JBoss 4 的版本之间有所不同,并且取决于您如何部署它们。假设您在名为myapp.jar的 jar 中部署了一个名为MyMDB的 MDB,该 jar 位于名为myapp.ear 的耳朵中,名称可能是:
jboss.j2ee:ear=myapp.ear,jar=myapp.jar,name=MyMDB,service=EJB3
旧版本的 JBoss 4 也有一个系统哈希码。而且,如果您不使用 EJB3,我认为该服务仍然存在,只是它将是EJB2。
无论如何,一旦找到管理 bean,就可以调用停止和启动操作。我们经常使用它来暂停消息传递。