Java EE 6生产者不工作

时间:2017-09-19 10:39:48

标签: java-ee nullpointerexception cdi inject

我正在使用JBoss As 7和Java EE 6.我有一个空的beans.xml

我有一个像这样的记录器制作人..

@Singleton
@Startup
public class LoggerProducer {

     private static Logger logger = Logger.getLogger(LoggerProducer.class.getName());

    @Produces
    public Logger produceLogger(final InjectionPoint injectionPoint) {  
        final String injectingClass = injectionPoint.getMember().getDeclaringClass().getName();
        return Logger.getLogger(injectingClass);  
    }  

}

在我的班级中我注入如下......

@Inject
Logger logger;

我在每种情况下导入java util logger

import java.util.logging.Logger;

所有内容都正确部署但是注册器的注入失败,如果我尝试使用注入的记录器,我得到运行时NullPointer

1 个答案:

答案 0 :(得分:1)

感谢大家的回复。

我在正确的位置(WEB-INF)有beans.xml。它打包为.war。

问题是我自己在类(bean)中的编码错误,我注入了记录器。我错误地使用constructor来初始化类,因此在CDI有机会注入它之前尝试使用记录器

修复方法是用@PostConstruct方法替换构造函数,并且一切运行良好。

@MyAnnotation
@Singleton
public class MtHammer implements Hammer {

    .....

    @Inject
    Logger logger2;


    @PostConstruct
    private void startup() {

        initialise();

    }

     private void initialise() {
            logger.info("logger...Initialising ...");
      ....
        }