[英]@Inject Logger (CDI) in EJB with jBoss
我试图将我的Logger注入我的EJB中:
@Inject
Logger logger;
但我收到以下错误
Caused by: org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318 Cannot resolve an ambiguous dependency between
[Producer Method [Logger] with qualifiers [@Any @Default] declared as [[method] @Produces public be.fgov.health.ecad.Resource.createLogger(InjectionPoint)],
Producer Method [Logger] with qualifiers [@Any @Default] declared as [[method] @Produces public be.fgov.health.ecad.Resource.createLogger(InjectionPoint)]]
我真的不知道这可能是什么吗? 从我看来,下课没有错吗? 我不明白为什么jBoss说存在不明确的依赖关系。
@Dependent
public class Resource {
@Produces
public Logger createLogger(final InjectionPoint ip) {
return Logger.getLogger(ip.getMember().getDeclaringClass());
}
}
您不必自己实现,此用例有一个焊接扩展:
从文档中 :
现在,只需将记录器对象简单地注入到任何CDI bean中,就可以更加轻松地向应用程序中添加记录。 只需使用@Logger限定符注释对org.jboss.weld.log.Log类型成员进行注释,就会将适当的logger对象注入到任何bean实例中。
import org.jboss.weld.annotation.Logger;
import org.jboss.weld.log.Log;
public class Checkout {
private @Inject @Logger Log log;
public void invoiceItems() {
ShoppingCart cart;
...
log.debug("Items invoiced for {0}", cart);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.