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