我正在使用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
答案 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 ...");
....
}