2016-04-21 21 views
0

Ich arbeite an einer Java EE 7-Webanwendung. Die Technologien, die ich benutze: Maven, JPA 2.1, EJB 3.2, JSF 2.2, WildFly 10 Finale.Abhängigkeitsinjektionsfehler bei Java EE-Projekt

Ich erhalte eine Fehlermeldung von EJB-Injektion sagen

More than one EJB found with interface of type '...InsuranceHouseDAO' for binding ...InsuranceHouseServiceBean/insuranceHouseDAO".

Hier die InsuranceHouseDAO-Klasse, die im ist Modul PM-Domain Maven:

@Local 
public interface InsuranceHouseDAO extends BaseDao<InsuranceHouse> { 

} 

Und hier ist die InsuranceHouseDAOBean Klasse , die die Schnittstelle implementiert:

@Stateless 
public class InsuranceHouseDAOBean extends BaseDAOBean<InsuranceHouse> implements InsuranceHouseDAO { 

    public InsuranceHouseDAOBean() { 
     super(InsuranceHouse.class); 
    } 

} 

Die InsuranceHouseService Schnittstelle im pm-Dienste Modul ist folgende:

@Local 
public interface InsuranceHouseService { 

    public void create(final InsuranceHouseTO insuranceHouseTO); 
    public InsuranceHouseTO find(Long id); 
    public void update(InsuranceHouseTO insuranceHouseTO); 
    public void delete(InsuranceHouseTO insuranceHouseTO); 
    public List<InsuranceHouseTO> findAll() throws Exception; 
    public void deleteAll(); 
    public boolean exists(Long id); 
    public Long count(); 

} 

Und hier ist ihre Umsetzung, die InsuranceHouseServiceBean Klasse:

@Stateless 
public class InsuranceHouseServiceBean implements InsuranceHouseService { 

    @EJB 
    private InsuranceHouseDAO insuranceHouseDAO; 

    @EJB 
    private InsuranceHouseAssembler insuranceHouseAssembler; 

    public InsuranceHouseServiceBean() { 
    } 

    @Override 
    public void create(InsuranceHouseTO insuranceHouseTO) { 
     InsuranceHouse insuranceHouse = insuranceHouseAssembler.dtoToModel(insuranceHouseTO); 
     insuranceHouseDAO.create(insuranceHouse); 
    } 

    @Override 
    public List<InsuranceHouseTO> findAll() throws Exception { 
     List<InsuranceHouseTO> dtoList = new LinkedList<>(); 
     List<InsuranceHouse> insuranceHouseList; 
     try { 
      insuranceHouseList = insuranceHouseDAO.findAll(); 
      if(insuranceHouseList != null){ 
       for (InsuranceHouse insuranceHouse : insuranceHouseList) { 
        dtoList.add(insuranceHouseAssembler.modelToDto(insuranceHouse)); 
       } 
      } 
     } catch (Exception e) { 
      // OK, the exception handling isn't perfect yet... 
      e.printStackTrace(); 
     } 

     return dtoList; 
    } 

    // +other methods, which I haven't implemented yet 

} 

Und hier ist der Stack-Trace:

[ERROR] Failed to execute goal org.wildfly.plugins:wildfly-maven-plugin:1.1.0.Alpha7:deploy (default) on project pm-ear: Deployment failed: Operation failed: {"WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => { 
[ERROR] "WFLYCTL0080: Failed services" => {"jboss.deployment.subunit.\"patient-manager.ear\".\"pm-services-0.0.1-SNAPSHOT.jar\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"patient-manager.ear\".\"pm-services-0.0.1-SNAPSHOT.jar\".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of subdeployment \"pm-services-0.0.1-SNAPSHOT.jar\" of deployment \"patient-manager.ear\" 
[ERROR] Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0052: Failed to install component InsuranceHouseServiceBean 
[ERROR] Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEJB0408: More than one EJB found with interface of type 'edu.sapientia.patientmanager.domain.dao.InsuranceHouseDAO' for binding edu.sapientia.patientmanager.service.local.InsuranceHouseServiceBean/insuranceHouseDAO. Found: [View of type edu.sapientia.patientmanager.domain.dao.InsuranceHouseDAO for org.jboss.as.ejb3.component.stateless.StatelessComponentDescription{serviceName=service jboss.deployment.subunit.\"patient-manager.ear\".\"pm-web-0.0.1-SNAPSHOT.war\".component.InsuranceHouseDAOBean}@5764b8ee, View of type edu.sapientia.patientmanager.domain.dao.InsuranceHouseDAO for org.jboss.as.ejb3.component.stateless.StatelessComponentDescription{serviceName=service jboss.deployment.subunit.\"patient-manager.ear\".\"pm-domain-0.0.1-SNAPSHOT.jar\".component.InsuranceHouseDAOBean}@77e9c91c]"}, 
[ERROR] "WFLYCTL0180: Services with missing/unavailable dependencies" => [ 
[ERROR] "jboss.deployment.subunit.\"patient-manager.ear\".\"pm-services-0.0.1-SNAPSHOT.jar\".weld.weldClassIntrospector is missing [jboss.deployment.subunit.\"patient-manager.ear\".\"pm-services-0.0.1-SNAPSHOT.jar\".beanmanager]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean.ORB is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean.HandleDelegate is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantAssemblerBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean.InAppClientContainer is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean.ORB is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".PatientServiceBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".PatientServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean.ORB is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean]", 
[ERROR] "jboss.deployment.unit.\"patient-manager.ear\".deploymentCompleteService is missing [jboss.deployment.subunit.\"patient-manager.ear\".\"pm-services-0.0.1-SNAPSHOT.jar\".deploymentCompleteService]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AdminServiceBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AdminServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseServiceBean.ORB is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean.ValidatorFactory is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean.HandleDelegate is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".PatientServiceBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".PatientServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AdminServiceBean.HandleDelegate is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AdminServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".PatientAssemblerBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".PatientAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AdminServiceBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AdminServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean.HandleDelegate is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantAssemblerBean.ValidatorFactory is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean.Validator is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorServiceBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorServiceBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean.ValidatorFactory is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantAssemblerBean.ORB is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".AssistantAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean.ValidatorFactory is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".UserAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean.InstanceName is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".InsuranceHouseAssemblerBean]", 
[ERROR] "jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorServiceBean.HandleDelegate is missing [jboss.naming.context.java.comp.patient-manager.\"pm-services-0.0.1-SNAPSHOT\".DoctorServiceBean]" 

Ich habe auch mit @Inject Annotation statt versucht @EJB, aber in diesem Fall gibt es ein interessantes Verhalten: Die Kompilierung ist erfolgreich, aber bei jeder zweiten Bereitstellung gibt es eine Ausnahme.

Wenn ich versuche, eine bestimmte Seite zu öffnen, die die findAll() Methode aus der InsuranceHouseServiceBean Klasse aufrufen, der folgende Fehler auftritt:

Can not set ...InsuranceHouseService field to ...InsuranceHouseService$2112160917$Proxy$_$$_Weld$EnterpriseProxy$.

Und es funktioniert gut von jedem zweiten deploy.

Ich habe die beans.xml in die Ordner META-INF und WEB-INF gelegt.

Hier ist meine Backing Bean, wo ich die findAll() Methode der Service-Bean aufrufen:

@Named 
@RequestScoped 
public class InsuranceHouseController { 

    @Inject 
    private InsuranceHouseService insuranceHouseService; 

    private InsuranceHouseTO insuranceHouseTO; 

    @Inject 
    private NavigationController navigationController; 

    private List<InsuranceHouseTO> insuranceHouses; 

    @PostConstruct 
    public void init(){ 
     insuranceHouseTO = new InsuranceHouseTO(); 
     insuranceHouses = new ArrayList<InsuranceHouseTO>(); 

     try { 
      insuranceHouses = insuranceHouseService.findAll(); 
     } catch (Exception e) { 
      // TODO: make exception handling... 
      e.printStackTrace(); 
     } 
    } 

    public InsuranceHouseTO getInsuranceHouseTO() { 
     return insuranceHouseTO; 
    } 

    public void setInsuranceHouseTO(InsuranceHouseTO insuranceHouseTO) { 
     this.insuranceHouseTO = insuranceHouseTO; 
    } 

    public List<InsuranceHouseTO> getInsuranceHouses() { 
     return insuranceHouses; 
    } 

    public void setInsuranceHouses(List<InsuranceHouseTO> insuranceHouses) { 
     this.insuranceHouses = insuranceHouses; 
    } 

    public void registerInsuranceHouse(){ 
     insuranceHouseService.create(insuranceHouseTO); 
     navigationController.moveToAdminCreateInsuranceHouse(); 
    } 

} 

Und der Stack-Trace, der dem Fehler gehört:

SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (default task-118) Error Rendering View[/admin/insurancehousemanagement.xhtml]: java.lang.IllegalArgumentException: Can not set edu.sapientia.patientmanager.service.InsuranceHouseService field edu.sapientia.patientmanager.web.backingbeans.InsuranceHouseController.insuranceHouseService to edu.sapientia.patientmanager.service.local.InsuranceHouseService$2112160917$Proxy$_$$_Weld$EnterpriseProxy$ 
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) 
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) 
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81) 
    at java.lang.reflect.Field.set(Field.java:764) 
    at org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:94) 
    at org.jboss.weld.util.Beans.injectBoundFields(Beans.java:378) 
    at org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:389) 
    at org.jboss.weld.injection.producer.ResourceInjector$1.proceed(ResourceInjector.java:70) 
    at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48) 
    at org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:72) 
    at org.jboss.weld.injection.producer.BasicInjectionTarget.inject(BasicInjectionTarget.java:121) 
    at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:159) 
    at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96) 
    at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101) 
    at org.jboss.weld.bean.ContextualInstanceStrategy$CachingContextualInstanceStrategy.get(ContextualInstanceStrategy.java:178) 
    at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50) 
    at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:742) 
    at org.jboss.weld.el.AbstractWeldELResolver.lookup(AbstractWeldELResolver.java:107) 
    at org.jboss.weld.el.AbstractWeldELResolver.getValue(AbstractWeldELResolver.java:90) 
    at org.jboss.as.jsf.injection.weld.ForwardingELResolver.getValue(ForwardingELResolver.java:46) 
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:188) 
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
    at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:116) 
    at com.sun.el.parser.AstValue.getBase(AstValue.java:150) 
    at com.sun.el.parser.AstValue.getValue(AstValue.java:199) 
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226) 
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) 
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) 
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 
    at javax.faces.component.UIData.getValue(UIData.java:732) 
    at org.primefaces.component.api.UIData.getDataModel(UIData.java:759) 
    at javax.faces.component.UIData.getRowCount(UIData.java:356) 
    at org.primefaces.component.api.UIData.calculateFirst(UIData.java:210) 
    at org.primefaces.component.datatable.DataTableRenderer.preRender(DataTableRenderer.java:115) 
    at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) 
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) 
    at org.omnifaces.facesviews.FacesViewsForwardingFilter.filterExtensionLess(FacesViewsForwardingFilter.java:128) 
    at org.omnifaces.facesviews.FacesViewsForwardingFilter.doFilter(FacesViewsForwardingFilter.java:89) 
    at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108) 
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) 
    at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) 
    at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) 
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) 
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) 
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) 
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) 
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 

Was ist das Problem ?

UPDATE:

Mutter pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>edu.sapientia.patientmanager</groupId> 
    <artifactId>pm</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>pm-ear</module> 
     <module>pm-web</module> 
     <module>pm-services</module> 
     <module>pm-domain</module> 
     <module>pm-common</module> 
    </modules> 
</project> 

POM aus pm-domain Modul:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>edu.sapientia.patientmanager</groupId> 
     <artifactId>pm</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>pm-domain</artifactId> 
    <packaging>ejb</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-common</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
    </dependencies> 
</project> 

POM aus pm-services Modul:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>edu.sapientia.patientmanager</groupId> 
     <artifactId>pm</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>pm-services</artifactId> 
    <packaging>ejb</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-domain</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-common</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
    </dependencies> 
</project> 

pom von pm-web Modul:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>edu.sapientia.patientmanager</groupId> 
     <artifactId>pm</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>pm-web</artifactId> 
    <packaging>war</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-services</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-common</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</project> 

pom von pm-common Modul:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>edu.sapientia.patientmanager</groupId> 
    <artifactId>pm</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <artifactId>pm-common</artifactId> 
    <packaging>jar</packaging> 
</project> 

und pom von pm-ear Modul:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>edu.sapientia.patientmanager</groupId> 
     <artifactId>pm</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>pm-ear</artifactId> 
    <packaging>ear</packaging> 

    <build> 
     <finalName>patient-manager</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <configuration> 
        <finalName>patient-manager</finalName> 
        <defaultLibBundleDir>lib/</defaultLibBundleDir> 
        <skinnyWars>true</skinnyWars> 
        <modules> 
         <webModule> 
          <groupId>edu.sapientia.patientmanager</groupId> 
          <artifactId>pm-web</artifactId> 
         </webModule> 
         <ejbModule> 
          <groupId>edu.sapientia.patientmanager</groupId> 
          <artifactId>pm-services</artifactId> 
         </ejbModule> 
         <ejbModule> 
          <groupId>edu.sapientia.patientmanager</groupId> 
          <artifactId>pm-domain</artifactId> 
         </ejbModule> 
         <jarModule> 
          <groupId>edu.sapientia.patientmanager</groupId> 
          <artifactId>pm-common</artifactId> 
         </jarModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-web</artifactId> 
      <version>${project.version}</version> 
      <type>war</type> 
     </dependency> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-services</artifactId> 
      <version>${project.version}</version> 
      <type>ejb</type> 
     </dependency> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-domain</artifactId> 
      <version>${project.version}</version> 
      <type>ejb</type> 
     </dependency> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-common</artifactId> 
      <version>${project.version}</version> 
      <type>jar</type> 
     </dependency> 
    </dependencies> 
</project> 

ich nur die relevanten Teile der Poms enthalten sind, hauptsächlich die Abhängigkeiten der Module.

+0

Es scheint aus dem ersten Fehler, dass die 'InsuranceHouseDAOBean' ist sowohl in pm-web-0.0.1-SNAPSHOT.war als auch in pm-domain-0.0.1-SNAPSHOT.jar enthalten. Sie sollten Ihren Build überprüfen, um sicherzustellen, dass er nur in einem Punkt enthalten ist. Es ist möglich, dass du eine Abhängigkeit vom Krieg zum Krug erklärst und der Krug in den Krieg aufgenommen wird, zusätzlich dazu, dass er im Ohr enthalten ist. –

+0

Ja, ich habe überprüft, und es ist wahr: die pm-web-0.0.1-SNAPSHOT.war und die pm-domain-0.0.1-SNAPSHOT.jar enthält auch InsuranceHouseDAOBean. Aber ich bin ein wenig verwirrt, wie sollten die Abhängigkeiten in den einzelnen Modulen deklariert werden? Ich habe ein Elternteil (pm), pm-domain, pm-services, pm-web, pm-common (dies wird von pm-domain, pm-services und pm-web verwendet) und pm-ear. –

+0

Ich bin kein Experte Maven, aber, in der POM der * WAR * versuchen, die Abhängigkeit von der JAR als ' vorausgesetzt,'. –

Antwort

0

Ich lese alle Kommentare und ich denke @ Nikos Paraskevopoulos zeigt Ihnen die richtige Richtung.

Bitte beachten Sie, dass die ejb-Module "pm-Dienste", "pm-Domain" und "pm-common" in Ohr-Datei enthält Patienten-manager.ear an der Wurzel der Datei.

Außerdem "Uhr-Dienstleistungen" und "pm-common" sind Kompilierung Abhängigkeiten von "pm-web" und werden in pm-web.war/WEB-INF/lib/

So enthalten sein, bei Kompilierung keine Fehler vorhanden sind, aber in Runtime zwei Instanzen von InsuranceHouseDAO, ein geladen:

  • ein von der ejb Uhr-Domain-0.0.1-SNAPSHOT.jar bei „Patienten-Manager befindet .ear "." pm-domain-0.0.1-SNAPSHOT.jar "
  • die andere durch "Patienten-manager.ear". "Pm-web-0.0.1-SNAPSHOT.war" \ WEB-INF \ lib \ pm-domain-0.0.1-SNAPSHOT.jar

Das erste Protokoll ist in diesem Aspekt selbsterklärend, wie Sie sehen können.

So wäre die Lösung zu erklären, wie die Abhängigkeiten zur Verfügung gestellt "pm-Dienste" und "pm-common" von Uhr-web pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>edu.sapientia.patientmanager</groupId> 
     <artifactId>pm</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>pm-web</artifactId> 
    <packaging>war</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-services</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>edu.sapientia.patientmanager</groupId> 
      <artifactId>pm-common</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 
</project>