@Inject不工作EJB调用自己的方法

时间:2013-02-27 20:48:08

标签: jboss7.x cdi ejb-3.1

平台: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");
        }
    }
}

不幸的是,在method2()中注入的变量mm为null。而在method1()中,存在正确注入的mm变量。

这是JBOss中的缺陷,还是我做错了什么?感谢。

2 个答案:

答案 0 :(得分:1)

使用WebSphere 8.5.5.5发生了同样的事情。自注入bean在注入的 bean中为空。

解决方案是将第二种方法从private更改为public

答案 1 :(得分:0)

根据Pete Muir的说法,这是一个错误,但是,我们不确定它是否已修复。尝试更新版本的JBoss(从源代码构建)将起作用。如果仍有问题,请创建bug report