我有以下服务:
@Singleton
@Startup
public class VideoFeedService {
@Inject
private Logger logger;
@PostConstruct
public void start() {
//do stuff
}
}
我在哪里注入从这个类产生的记录器:
public class Resources {
@Produces
public Logger produceLog(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()
.getName());
}
}
我在部署时遇到以下异常:
10:21:45,789 INFO [org.jboss.as.controller] (management-handler-thread - 2) JBAS014774: Service status report
JBAS014775: New missing/unsatisfied dependencies:
service jboss.deployment.unit."videofeed.ws.war".WeldBootstrapService (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldTerminalListener".WeldInstantiator, service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".WeldInstantiator, service jboss.deployment.unit."videofeed.ws.war".CdiValidatorFactoryService, service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".WeldInstantiator, JBAS014799: ... and 8 more ]
service jboss.deployment.unit."videofeed.ws.war".WeldStartService (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".WeldInstantiator, service jboss.deployment.unit."videofeed.ws.war".CdiValidatorFactoryService, service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".WeldInstantiator, service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.WeldInterceptorBindingsService, JBAS014799: ... and 4 more ]
service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.CREATE (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START]
service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.VIEW."org.proactive.rest.VideoFeedService".LOCAL (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START]
service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.WeldInstantiator (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START]
service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.WeldInterceptorBindingsService (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.WeldInstantiator]
service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.ejb.non-functional-timerservice (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START]
service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".CREATE (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".START]
service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".START (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".WeldInstantiator (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".START]
service jboss.deployment.unit."videofeed.ws.war".component."javax.faces.webapp.FacetTag".CREATE (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."javax.faces.webapp.FacetTag".START]
service jboss.deployment.unit."videofeed.ws.war".component."javax.faces.webapp.FacetTag".START (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".component."javax.faces.webapp.FacetTag".WeldInstantiator (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."javax.faces.webapp.FacetTag".START]
service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".CREATE (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START]
service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".WeldInstantiator (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START]
service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".deploymentCompleteService, service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".WeldInstantiator (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START]
service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldInitialListener".CREATE (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldInitialListener".START]
service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldInitialListener".START (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldInitialListener".WeldInstantiator (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldInitialListener".START]
service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldTerminalListener".START (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws", service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".ee.ComponentRegistry (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
service jboss.deployment.unit."videofeed.ws.war".jndiDependencyService (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".component."com.sun.faces.config.ConfigureListener".START, service jboss.deployment.unit."videofeed.ws.war".component."org.jboss.weld.servlet.WeldInitialListener".START, service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START, service jboss.deployment.unit."videofeed.ws.war".component."javax.faces.webapp.FacetTag".START, JBAS014799: ... and 2 more ]
service jboss.deployment.unit."videofeed.ws.war".moduleDeploymentRuntimeInformation (missing) dependents: [service jboss.deployment.unit."videofeed.ws.war".moduleDeploymentRuntimeInformationStart, service jboss.deployment.unit."videofeed.ws.war".component.VideoFeedService.START]
service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws"]
service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".codec (missing) dependents: [service jboss.undertow.deployment.default-server.default-host."/videofeed.ws".UndertowDeploymentInfoService]
JBAS014777: Services which failed to start: service jboss.deployment.unit."videofeed.ws.war".WeldStartService
[2014-04-09 10:21:45,854] Artifact videofeed.ws:war: Error during artifact deployment. See server log for details.
[2014-04-09 10:21:45,855] Artifact videofeed.ws:war: java.lang.Exception: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"videofeed.ws.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"videofeed.ws.war\".WeldStartService: Failed to start service
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type Logger with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private org.proactive.rest.VideoFeedService.logger
at org.proactive.rest.VideoFeedService.logger(VideoFeedService.java:0)
WELD-001475: The following beans match by type, but none have matching qualifiers:
- Producer Method [Logger] with qualifiers [@BatchProperty @Any] declared as [[UnbackedAnnotatedMethod] @Produces @BatchProperty public org.jberet.creation.BatchBeanProducer.getLogger(InjectionPoint)]
"}}
我正在使用Java 8,Java EE 7并将其部署在Wildfly服务器上。我也在使用JBoss快速启动的Kitchensink示例中使用的标准pom.xml,它基本上与Logger做同样的事情。我知道我做错了什么?
答案 0 :(得分:5)
您没有提供有关beans.xml
文件的信息。在Java EE 7(CDI 1.1)中,您不必放置一个(默认情况下激活CDI),但是,只发现具有bean defining annotations的bean。您的Resources
类没有定义注释的bean(没有明确的范围注释可以简化),因此您的生产者可能未被发现。
我建议你在@Dependent
类上放置Resources
,EJB总是被发现为CDI bean,所以不需要为VideoFeedService
添加范围。