1

我正在使用 Jboss 7 并且有两个单独的部署,它们都包含单例 EJB。

我需要一个 EJB 才能访问另一个 EJB 并能够调用它的方法,但是,当应用程序服务器启动并尝试部署它们时,似乎无法保证哪个 EJB 先启动(即使您设置Dependencies: deployment.xxx.jar在一个到另一个)。

我似乎无法使用@DependsOn注释,因为它命名了一个特定的 EJB,这似乎在单独的部署中不可行,让我@EJB(lookup=JNDI_STRING)成为我唯一的选择。然而,这种注入似乎并不能保证您所依赖的 EJB 将在查找发生时实际启动,从而导致 NPE。显然,如果您只是使用InitialContextfrom@PostContruct方法通过 JNDI 查找第二个 EJB,也会发生这种情况。

所以,我基本上需要保证一个部署中的一个 EJB 将在另一个部署中的另一个 EJB 之前在同一个应用服务器上启动。我认为如果我要延迟初始化依赖的 EJB,比如HttpServlet启动时运行的集合,它可能会起作用,但这并不理想。

也许我缺少一些明智的方法来做到这一点?我真的不想在 EJB 启动之前轮询它。

4

1 回答 1

0

您可以在 jboss-deployment-structure.xml 中配置

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
       <dependencies>
           <module name="deployment.app1.ear" />
       </dependencies>
   </deployment>
</jboss-deployment-structure>

源码大师theboss

于 2015-10-22T15:56:02.153 回答