我在使用JBoss AS7 / JEE 6时遇到问题,同时使用生产器作为WildFly和JEE 7工作正常的记录器。
我创建了一个限定符:
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface BpeLogger {
}
生产者类:
public class LoggerProducer{
@Produces
@BpeLogger
public Logger produceLogger(InjectionPoint injectionPoint) {
return LoggerFactory.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}
}
现在我试图用另一个CDI Bean注入记录器:
@Inject
@BpeLogger
private Logger logger;
部署失败,出现以下异常:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@BpeLogger] at injection point [[field] @Inject @BpeLogger private de.ulc.bpe.web.process.Domino.logger]
这里有什么问题?
答案 0 :(得分:0)
确保META-INF文件夹中有beans.xml文件。
您也可以尝试直接将LoggerProducer类注释为CDI bean。例如。添加@Named注释,可能还有合适的范围。在你的情况下,@ Singleton可能会做得很好。
padding-top