Java EE 6 生产者不工作

Java EE 6 Producer Not Working

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

我有一个像这样的记录器 Producer..

@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);  
    }  

}

在我的 class 中,我注入如下...

@Inject
Logger logger;

我在每种情况下都导入 java util 记录器

import java.util.logging.Logger;

一切都正确部署,但是记录器的注入失败,如果我尝试使用注入的记录器

,我会得到一个运行时NullPointer

感谢大家的回复。

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

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

解决方法是用 @PostConstruct 方法替换构造函数,一切正常。

@MyAnnotation
@Singleton
public class MtHammer implements Hammer {

    .....

    @Inject
    Logger logger2;


    @PostConstruct
    private void startup() {

        initialise();

    }

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