簡體   English   中英

CDI記錄器注入異常

[英]CDI Logger Injection Exception

我有以下服務:

@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基本上具有相同的作用。 知道我在做什么錯嗎?

您沒有提供有關beans.xml文件的信息。 在Java EE 7(CDI 1.1)中,您不必放一個(默認情況下CDI是激活的),但是,僅發現具有bean定義注釋的bean 您的Resources類沒有定義定義注釋的Bean(沒有明確的作用域注釋要簡短),因此可能未發現您的生產者。

我建議您在自己的Resources類上放置一個@ @Dependent ,EJB總是作為CDI bean被發現,因此無需向您的VideoFeedService添加范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM