我正在使用 Jboss 7 并且有两个单独的部署,它们都包含单例 EJB。
我需要一个 EJB 才能访问另一个 EJB 并能够调用它的方法,但是,当应用程序服务器启动并尝试部署它们时,似乎无法保证哪个 EJB 先启动(即使您设置Dependencies: deployment.xxx.jar
在一个到另一个)。
我似乎无法使用@DependsOn
注释,因为它命名了一个特定的 EJB,这似乎在单独的部署中不可行,让我@EJB(lookup=JNDI_STRING)
成为我唯一的选择。然而,这种注入似乎并不能保证您所依赖的 EJB 将在查找发生时实际启动,从而导致 NPE。显然,如果您只是使用InitialContext
from@PostContruct
方法通过 JNDI 查找第二个 EJB,也会发生这种情况。
所以,我基本上需要保证一个部署中的一个 EJB 将在另一个部署中的另一个 EJB 之前在同一个应用服务器上启动。我认为如果我要延迟初始化依赖的 EJB,比如HttpServlet
启动时运行的集合,它可能会起作用,但这并不理想。
也许我缺少一些明智的方法来做到这一点?我真的不想在 EJB 启动之前轮询它。