在单例启动EJB中注入本地无状态EJB

3
这种情况有可能吗?以下场景:
  • 名称为A的无状态本地EJB
  • 名称为B的单例启动EJB
  • B包含对A的引用
我尝试过,但我的应用服务器(WAS)在应用程序启动时失败,并出现错误,指出A未找到。控制台日志还清楚地表明,在加载B时并没有启动A,而是在启动其他一些无状态EJB之前启动了B。将A也变成单例EJB,并通过注释@DependsOn({"A"})让B依赖于A会产生错误,错误消息显示找不到依赖的bean A。在Web模块中使用A可以正常工作。
有什么想法吗?感谢您的帮助! Steffen Harbich

在GlassFish中我遇到了同样的错误。如果从A中删除本地接口,该错误将消失。为什么需要本地接口?似乎在EJB 3.1中不应该需要它。 - perissf
1
这应该可以工作。A和B是否在同一个模块/应用程序中,还是分开的?如果是分开的,A的模块是否配置为在B的模块之前启动(在application.xml中初始化顺序或在管理控制台中使用模块启动权重)? - Brett Kail
A和B位于同一应用程序中的另一个ejb模块中。有什么想法如何在Websphere中设置起始权重? - Steffen Harbich
N1!启动顺序解决了问题。如果您将此作为答案发布,我可以将其标记为答案。非常感谢! - Steffen Harbich
有没有办法通过ejb-jar.xml或注释@bkail来指定模块启动的权重/顺序? - Steffen Harbich
显示剩余2条评论
1个回答

1
如果A和B在不同的模块/应用程序中,那么您需要确保A的模块在B的模块之前配置启动。您可以在application.xml中使用initialize-in-order,或在管理控制台中使用模块启动权重。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接