当前位置:  开发笔记 > 运维 > 正文

如果bean是Java EE 7(CDI 1.1)中的EJB bean,则injectPoint.getBean()返回null

如何解决《如果bean是JavaEE7(CDI1.1)中的EJBbean,则injectPoint.getBean()返回null》经验,为你挑选了0个好方法。

我想从producer方法获取bean以读取其属性.在某些情况下,bean是一个EJB Singletonbean.

我简化了我的代码以专注于这个问题.

我的简单限定符:

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface InjectMe {}

简单生产者:

@Dependent
public class SimpleProducer {

    @Produces
    @InjectMe
    public String getInjectMe(InjectionPoint ip) {
        // ip.getBean() returns null for some reason   
        return "ip=" + ip + ", bean=" + ip.getBean();
    }
}

EJB(Singleton):

@Singleton
@Startup
public class SimpleSingleton {

    @Inject
    @InjectMe
    private String injectMe;

    @PostConstruct
    public void init() {
        System.out.println(injectMe);
   }

}

控制台输出:

信息:ip = [BackedAnnotatedField] @Inject @InjectMe private com.test.ejb.SimpleSingleton.injectMe, bean=null

当我将Singletonbean 更改为CDIbean时,一切正常(ip.getBean()返回非null).它Java EE 6甚至可以用于Singleton豆类,但它没有Java EE 7.我正在使用Glassfish 4应用程序服务器.

是否在某处指定了此行为?

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有