我使用JBoss作为7和Java 6。
我有这样一个伐木制作人..。
@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记录器。
import java.util.logging.Logger;所有的部署都是正确的,但是记录器的注入失败了,如果我尝试使用注入的记录器,我将得到一个运行时NullPointer。
发布于 2017-09-19 16:45:50
感谢大家的回复。
我把beans.xml放在正确的位置(WEB)。它被打包成一个.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 ...");
....
}https://stackoverflow.com/questions/46298316
复制相似问题