EJB依赖于另一个EJB?

时间:2013-01-22 16:15:09

标签: java ejb jboss7.x jndi ejb-3.1

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

我需要一个EJB才能访问另一个EJB并能够调用其方法,但是,当应用服务器启动并尝试部署它们时,似乎无法保证首先启动哪个EJB(即使你将Dependencies: deployment.xxx.jar设置为另一个也是如此。

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

因此,我基本上需要保证一个部署中的一个EJB将在同一个应用程序服务器上的另一个部署中的另一个EJB之前启动。我认为如果我懒惰地将依赖EJB从HttpServlet设置为run-on-startup,那么它可能会起作用,但这并不理想。

也许有一些明智的做法让我失去了?我真的不想在它启动之前轮询 EJB。

1 个答案:

答案 0 :(得分: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>

来源mastertheboss