我正在使用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。
答案 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>