我想知道在使用Jboss 7.1的web应用程序中将org.slf4j.Logger注入REST服务的问题在哪里。我也添加了beans.xml。
那是我的制作人类:
import javax.enterprise.inject.spi.InjectionPoint;
import javax.ws.rs.Produces;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerProducer {
@Produces
public Logger producer(InjectionPoint ip) {
return LoggerFactory.getLogger(ip.getMember().getDeclaringClass().getName());
}
}
我是如何尝试使用Logger的:
import javax.inject.Inject;
import javax.ws.rs.Path;
import org.jboss.resteasy.spi.validation.ValidateRequest;
import org.slf4j.Logger;
@ValidateRequest
@RolesAllowed("admin")
@Path("domains")
public class DomainRestService {
@Inject
private DomainBean domainService;
@Inject
private Logger log;
但是当我尝试部署我的应用程序时,部署失败并出现以下异常:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field] @Inject private com.gbs.acc.service.rest.DomainRestService.log]
我见过很多Logger CDI注射的例子,但我不明白为什么不起作用?
答案 0 :(得分:4)
您应该使用javax.enterprise.inject.Produces
代替javax.ws.rs.Produces
来注释producer
类中的LoggerProducer
制作人方法。