Jakarta ee Java EE 6生产者不工作
我正在使用JBossAS7和JavaEE6。我有一个空的beans.xml文件 我有一个像这样的伐木制作人Jakarta ee Java EE 6生产者不工作,jakarta-ee,nullpointerexception,cdi,inject,Jakarta Ee,Nullpointerexception,Cdi,Inject,我正在使用JBossAS7和JavaEE6。我有一个空的beans.xml文件 我有一个像这样的伐木制作人 @Singleton @Startup public class LoggerProducer { private static Logger logger = Logger.getLogger(LoggerProducer.class.getName()); @Produces public Logger produceLogger(final Inject
@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
,感谢所有回复
我把beans.xml放在了正确的位置(WEB-INF)。它被包装成一场战争
问题是我自己在将记录器注入的类(bean)中的编码错误。我错误地使用了构造函数
来初始化该类,因此在CDI有机会注入该类之前,该类试图使用记录器
修复方法是用@PostConstruct
方法替换构造函数,所有方法都运行良好
@MyAnnotation
@Singleton
public class MtHammer implements Hammer {
.....
@Inject
Logger logger2;
@PostConstruct
private void startup() {
initialise();
}
private void initialise() {
logger.info("logger...Initialising ...");
....
}
..您必须修改log4j.xml文件。。根据您的要求,Shi@idotduffer,谢谢您的回复。我没有使用log4j,但我使用的是javautil日志。这将使用/standalone/configuration/logging.properties中自动生成的logging.properties文件您的beans.xml放在正确的位置了吗?你有WAR或EAR文件吗?您还注入了其他有效的对象吗?。将bean.xml放在META-INF文件夹中,对于war文件,它应该在META-INF中,对于EAR文件,它应该在WEB-INF中。