2014-04-09 158 views
2

我有以下服務:CDI記錄儀注射異常

@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 Server上。我還使用了JBoss快速入門的Kitchensink示例中使用的標準pom.xml,它基本上和Logger一樣。任何想法我做錯了什麼?

+0

您是否以任何方式標記了「資源」?它應該可以通過焊接來發現,所以儘量標記爲'ManagedBean'。 –

回答

5

您沒有提供關於您的beans.xml文件的信息。在Java EE 7(CDI 1.1)中,您不必添加一個(默認情況下啓用CDI),但是隻有發現了bean defining annotations的豆。您的Resources類沒有定義註釋的bean(沒有明確的範圍註釋來縮短註釋),所以您的生產者可能未被發現。

我建議你在你的Resources類上放一個@Dependent,EJB總是被發現爲CDI bean,因此不需要向你的VideoFeedService添加範圍。

+0

是的,我沒有一個beans.xml文件,因爲我正在使用CDI 1.1。 @依賴很好地工作。 – ChrisGeo