【发布时间】:2013-02-13 20:23:26
【问题描述】:
平台:JBoss AS 7.1.1。
我有一个无状态 bean 方法,它需要调用同一个 bean 的另一个方法,但必须通过 EJB 容器。
@Stateless
public class OrderManager {
@Resource
SessionContext ctx;
@Inject
MailUtil mm;
Logger logger = Logger.getLogger("Test");
public void method1() {
if (mm == null) {
logger.info("MailUtil is null");
}
ctx.getBusinessObject(OrderManager.class).method2();
}
@Asynchronous
public void method2() {
if (mm == null) {
logger.info("MailUtil is null");
}
}
}
不幸的是,注入的变量 mm 在 method2() 中为空。而在 method1() 中,存在一个正确注入的 mm 变量。
这是 JBOss 的缺陷,还是我做错了什么?谢谢。
【问题讨论】:
-
您是否尝试过直接注入对象而不是使用 SessionContext.getBusinessObject?
-
是的,我尝试使用@EJB 进行注入。结果相同。
-
Jin,我知道你指出的那个问题。我的代码已经在使用 EJB 代理来调用 method2()。异步行为工作得很好。这个问题的核心问题是 method2() 没有发生注入。即使我删除 @Asynchronous 也会发生这种情况。