【问题标题】:How to @Inject two similar implementations in a class?如何在一个类中@Inject 两个类似的实现?
【发布时间】:2015-06-22 06:42:40
【问题描述】:

我有一个接口,有两个实现它的类。我尝试使用 List 将所有实现注入其中。但我遇到了 WELD 异常。

之前我使用javax.enterprise.inject.Instance 并且所有实现都被正确注入。

我只是想知道如果javax.enterprise.inject.Instance 不存在怎么办,我该如何解决我的问题,所以我做了这个实验。

下面是堆栈跟踪

16:31:41,157 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.deployment.unit."ejb-beginner-sessions-ear.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."ejb-beginner-sessions-ear.ear".WeldStartService: Failed to start service
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1936) [jboss-msc-1.1.5.Final-redhat-1-bz-1093654.jar:1.1.5.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
    at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [List<StudentService>] with qualifiers [@Default] at injection point [[field] @Inject private com.ejb.beginner.sessions.web.StudentController.studentServices]
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:315)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:284)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:147)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:167)
    at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:386)
    at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:371)
    at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379)
    at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc-1.1.5.Final-redhat-1-bz-1093654.jar:1.1.5.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) [jboss-msc-1.1.5.Final-redhat-1-bz-1093654.jar:1.1.5.Final]
    ... 3 more

16:31:41,189 INFO  [org.jboss.weld.deployer] (MSC service thread 1-7) JBAS016009: Stopping weld service for deployment ejb-beginner-sessions-ear.ear
16:31:41,184 ERROR [org.jboss.as.server] (HttpManagementService-threads - 1) JBAS015870: Deploy of deployment "ejb-beginner-sessions-ear.ear" was rolled back with the following failure message: 
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"ejb-beginner-sessions-ear.ear\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"ejb-beginner-sessions-ear.ear\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [List<StudentService>] with qualifiers [@Default] at injection point [[field] @Inject private com.ejb.beginner.sessions.web.StudentController.studentServices]"}}
16:31:41,215 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment null (runtime-name: ejb-beginner-sessions-impl.jar) in 31ms
16:31:41,219 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015877: Stopped deployment null (runtime-name: restful-webservices-beginner.war) in 35ms
16:31:41,220 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment null (runtime-name: ejb-beginner-sessions-war.war) in 36ms
16:31:41,226 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015877: Stopped deployment ejb-beginner-sessions-ear.ear (runtime-name: ejb-beginner-sessions-ear.ear) in 42ms
16:31:41,237 INFO  [org.jboss.as.controller] (HttpManagementService-threads - 1) JBAS014774: Service status report
JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".deploymentCompleteService, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".moduleDeploymentRuntimeInformationStart] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.VIEW."com.ejb.beginner.sessions.api.StudentService".LOCAL (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".deploymentCompleteService (missing) dependents: [service jboss.deployment.unit."ejb-beginner-sessions-ear.ear".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".jndiDependencyService (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".moduleDeploymentRuntimeInformation (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".moduleDeploymentRuntimeInformationStart, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.MyRestfulService".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.MyRestfulService".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.MyRestfulService".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.MyRestfulService".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.MyRestfulService".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.StudentController".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.StudentController".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.StudentController".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.StudentController".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.StudentController".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.sun.faces.config.ConfigureListener".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.sun.faces.config.ConfigureListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.sun.faces.config.ConfigureListener".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.sun.faces.config.ConfigureListener".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.sun.faces.config.ConfigureListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.faces.webapp.FacetTag".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.faces.webapp.FacetTag".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.faces.webapp.FacetTag".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.faces.webapp.FacetTag".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.faces.webapp.FacetTag".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.catalina.servlets.DefaultServlet".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.catalina.servlets.DefaultServlet".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.catalina.servlets.DefaultServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.jasper.servlet.JspServlet".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.jasper.servlet.JspServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.jasper.servlet.JspServlet".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.jasper.servlet.JspServlet".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.apache.jasper.servlet.JspServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService (missing) dependents: [service jboss.deployment.unit."ejb-beginner-sessions-ear.ear".deploymentCompleteService] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".jndiDependencyService (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."com.ejb.beginner.sessions.web.StudentController".START, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".component."javax.faces.webapp.FacetTag".START, service jboss.web.deployment.default-host./ejb-beginner-sessions-war, JBAS014799: ... and 4 more ] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."com.sun.faces.config.ConfigureListener".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."com.sun.faces.config.ConfigureListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."com.sun.faces.config.ConfigureListener".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."com.sun.faces.config.ConfigureListener".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."com.sun.faces.config.ConfigureListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.faces.webapp.FacetTag".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.faces.webapp.FacetTag".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.faces.webapp.FacetTag".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.faces.webapp.FacetTag".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.faces.webapp.FacetTag".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.servlet.jsp.jstl.tlv.ScriptFreeTLV".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.ws.rs.core.Application".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.ws.rs.core.Application".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.ws.rs.core.Application".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.ws.rs.core.Application".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."javax.ws.rs.core.Application".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.catalina.servlets.DefaultServlet".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.catalina.servlets.DefaultServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.catalina.servlets.DefaultServlet".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.catalina.servlets.DefaultServlet".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.catalina.servlets.DefaultServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.jasper.servlet.JspServlet".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.jasper.servlet.JspServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.jasper.servlet.JspServlet".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.jasper.servlet.JspServlet".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.apache.jasper.servlet.JspServlet".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".CREATE (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".WeldInstantiator (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".component."org.jboss.as.weld.webtier.jsp.JspInitializationListener".START] 
      service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService (missing) dependents: [service jboss.deployment.unit."ejb-beginner-sessions-ear.ear".deploymentCompleteService] 
      service jboss.naming.context.java.comp.ejb-beginner-sessions-ear.ejb-beginner-sessions-impl.StudentServiceBean (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-impl.jar".component.StudentServiceBean.START] 
      service jboss.web.deployment.default-host./ejb-beginner-sessions-war (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.web.deployment.default-host./ejb-beginner-sessions-war.realm (missing) dependents: [service jboss.web.deployment.default-host./ejb-beginner-sessions-war, service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."ejb-beginner-sessions-war.war".deploymentCompleteService] 
      service jboss.web.deployment.default-host./restful-webservices-beginner (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService] 
      service jboss.web.deployment.default-host./restful-webservices-beginner.realm (missing) dependents: [service jboss.deployment.subunit."ejb-beginner-sessions-ear.ear"."restful-webservices-beginner.war".deploymentCompleteService, service jboss.web.deployment.default-host./restful-webservices-beginner] 
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."ejb-beginner-sessions-ear.ear".WeldStartService

我们对一个接口有不同的实现,在运行时我们想解决使用哪一个。所以我们使用了javax.enterprise.inject.Instance。我们将自定义注解传递给 Instance 的 select 方法并返回相应的实现。实现使用自定义注释进行注释。这就是我们注入所有实例并使用适当实例的方式。下面是一个示例 sn-p

@Inject
@Any
private Instance<SoftwarePackageDescriptorProvider> descriptorProviders;
descriptorProviders.select(new PlatformQualifier(platformType)).get();

【问题讨论】:

  • 你能发布错误日志跟踪吗?
  • 如果没有堆栈跟踪、给出错误的确切代码以及以前的代码没有显示它,这个问题不清楚,可以关闭
  • @SergeBallesta 我更新了我的帖子

标签: java dependency-injection java-ee-6 inject


【解决方案1】:

不确定是否有办法获取所有实现类的动态列表,但您可以使用限定符来说明您想要哪个特定类:

@Inject 
@Named("ClassB")
private ClassB impl;

【讨论】:

  • @goblinggift 谢谢,但我不想声明 @Qualifier@Named。因为如果有新的实现或现有的实现被删除,我必须再次修改代码。
  • 是的,这不是动态解决方案。如果有解决方案,我很感兴趣,好问题.. :)
猜你喜欢
  • 1970-01-01
  • 2019-06-27
  • 2012-09-28
  • 2023-03-06
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
相关资源
最近更新 更多