2017-01-23 7 views
0

Ich habe einen Fehler bei einem kleinen Projekt, an dem ich gerade arbeite. Ich habe ein EJB-Projekt auf einem Wildfly Application Server ausgeführt. Dieser Server ist mit einer Oracle-Datenbank verbunden. Dies funktioniert über einen Test-Client, den ich in Eclipse implementiert habe. Allerdings wollte ich die Anwendung über den Webservice verfügbar machen. So implementiert ich einen WebProject und ruft, dass WebProject über einen anderen Client ich die folgende Fehlermeldung erhalten:

Exception in thread "main" com.sun.xml.internal.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: WFLYEE0042: Failed to construct component instance Please see the server log to find more detail regarding exact cause of the failure. 
at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178) 
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116) 
at com.sun.xml.internal.ws.client.sei.StubHandler.readResponse(StubHandler.java:238) 
at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:189) 
at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:276) 
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:104) 
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77) 
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147) 
at com.sun.proxy.$Proxy30.getFacilities(Unknown Source) 
at ws.WebServiceClientApp.main(WebServiceClientApp.java:9) 

Der Fehler auf dem Wildfly Application Server ist:

16:04:59,283 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (default task-5) Application {http://ws/}FacilityWebserviceService#{http://ws/}getFacilities has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: WFLYEE0042: Failed to construct component instance 
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163) 
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:267) 
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:129) 
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:232) 
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69) 
at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:151) 
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126) 
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131) 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) 
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251) 
at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:111) 
at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:136) 
at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:88) 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:293) 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:212) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:136) 
at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) 
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) 
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) 
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72) 
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282) 
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261) 
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80) 
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172) 
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) 
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

Caused by: java.lang.IllegalStateException: WFLYEE0042: Failed to construct component instance 
at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:163) 
at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:134) 
at org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:88) 
at org.jboss.as.webservices.injection.WSComponent.getComponentInstance(WSComponent.java:52) 
at org.jboss.as.webservices.deployers.WSComponentInstanceAssociationInterceptor.processInvocation(WSComponentInstanceAssociationInterceptor.java:53) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:634) 
at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195) 
at org.jboss.as.webservices.invocation.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:135) 
at org.jboss.wsf.stack.cxf.JBossWSInvoker.performInvocation(JBossWSInvoker.java:185) 
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97) 
... 48 more 

Caused by: java.lang.IllegalArgumentException: Can not set model.FacilityManagerRemote field ws.FacilityWebservice.facility to com.sun.proxy.$Proxy85 
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.as.ee.component.ManagedReferenceFieldInjectionInterceptorFactory$ManagedReferenceFieldInjectionInterceptor.processInvocation(ManagedReferenceFieldInjectionInterceptorFactory.java:106) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.as.ee.component.AroundConstructInterceptorFactory$1.processInvocation(AroundConstructInterceptorFactory.java:28) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80) 
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) 
at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161) 
... 65 more 

My Webservice im WebProject ist:

package ws; 

import java.util.Collection; 

import javax.ejb.EJB; 
import javax.jws.WebMethod; 
import javax.jws.WebService; 

import org.jboss.resteasy.logging.Logger; 

import model.*; 

@WebService 
public class FacilityWebservice { 
    public static final int MILLI_SECONDS = 1000; 

    public static final String EJBName = "java:global/PIS/FacilityManager!session.FacilityManagerRemote"; 
    private static final Logger log = Logger.getLogger(FacilityWebservice.class); 

    @EJB(mappedName = EJBName) 
    private FacilityManagerRemote facility; 

    @WebMethod 
    public Collection<Facility> getFacilities() { 
    log.info("<<<<<<<<<<<<<<<<<<<<<<<-------------getLocations"); 
    log.info("webmethod getLocations called"); 
    return facility.getAllFacilities(); 
    } 

} 

Der registrierte Name auf Wildfly:

6:04:29,019 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-2) JNDI bindings for session bean named FacilityManager in deployment unit deployment "PIS.jar" are as follows: 

java:global/PIS/FacilityManager!session.FacilityManagerRemote 
java:app/PIS/FacilityManager!session.FacilityManagerRemote 
java:module/FacilityManager!session.FacilityManagerRemote 
java:jboss/exported/PIS/FacilityManager!session.FacilityManagerRemote 
java:global/PIS/FacilityManager 
java:app/PIS/FacilityManager 
java:module/FacilityManager 

Dies ist meine Schnittstelle im WebApplication

package model; 


import java.util.Collection; 
import javax.ejb.Remote; 
import javax.ejb.Remove; 

@Remote 
public interface FacilityManagerRemote { 

    public Collection<Permission> getAllPermissions(); 
    public Collection<Staff> getAllStaff(); 
    public Collection<User> getAllUsers(); 
    public Collection<Sequence> getAllSequences(); 
    public Collection<Facility> getAllFacilities(); 
    public Collection<MachineMasterData> getAllMachines(); 
    public Collection<Productline> getAllProductlines(); 
    public Collection<MachineDayData> getAllMachineDayData(); 
    public Collection<GpsPoint> getAllGpsPoints(); 
    public Collection<Facility> getFacilitiesByPrecedingFacility(Facility precedingFacility); 
    public Collection<Facility> getHighestTierFacilities(); 
    public Facility getFacilityById(Facility facility); 

    @Remove 
    public void remove(); 
} 

Diese meine Schnittstelle im EJB-Projekt ist:

package session; 

import java.util.Collection; 

import javax.ejb.Remote; 
import javax.ejb.Remove; 

import exceptions.NoSuchRow; 
import model.*; 

@Remote 
public interface FacilityManagerRemote { 

    public Collection<Permission> getAllPermissions(); 
    public Collection<Staff> getAllStaff(); 
    public Collection<User> getAllUsers(); 
    public Collection<Sequence> getAllSequences(); 
    public Collection<Facility> getAllFacilities(); 
    public Collection<MachineMasterData> getAllMachines(); 
    public Collection<Productline> getAllProductlines(); 
    public Collection<MachineDayData> getAllMachineDayData(); 
    public Collection<GpsPoint> getAllGpsPoints(); 
    public Collection<Facility> getFacilitiesByPrecedingFacility(Facility precedingFacility); 
    public Collection<Facility> getHighestTierFacilities(); 
    public Facility getFacilityById(Facility facility); 

    @Remove 
    public void remove(); 
} 

Dies ist meine Session Bean im EJB-Projekt:

package session; 

import java.util.Collection; 

import javax.ejb.EJB; 
import javax.ejb.Remote; 
import javax.ejb.Stateful; 

import exceptions.NoSuchRow; 
import model.*; 

@Stateful 
@Remote(FacilityManagerRemote.class) 
public class FacilityManager implements java.io.Serializable { 

    private static final long serialVersionUID = 4460916846265144595L; 

    @EJB 
    private DefaultManager dm; 

    public FacilityManager() { 

    } 

    public Collection<Facility> getHighestTierFacilities(){ 
     return (Collection<Facility>)dm.findByNamedQuery("Facility.findHighestTierFacilities"); 
    } 

    public Collection<Facility> getFacilitiesByPrecedingFacility(Facility precedingFacility){ 
     return (Collection<Facility>)dm.findByParameter 
      ("Facility.findByPrecedingFacility", "precedingFacility", precedingFacility); 
    } 

    public Facility getFacilityById(Facility facility)throws NoSuchRow{ 
     return (Facility)dm.findByPrimaryKey(Facility.class, facility.getFacilityID()); 
    } 




    //TODO for testing 
    public Collection<Permission> getAllPermissions() { 
     return (Collection<Permission>) dm.list(Permission.class); 
    } 

    public Collection<Staff> getAllStaff() { 
     return (Collection<Staff>) dm.list(Staff.class); 
    } 

    public Collection<User> getAllUsers() { 
     return (Collection<User>) dm.list(User.class); 
    } 

    public Collection<Sequence> getAllSequences() { 
     return (Collection<Sequence>) dm.list(Sequence.class); 
    } 

    public Collection<MachineMasterData> getAllMachines() { 
     return (Collection<MachineMasterData>) dm.list(MachineMasterData.class); 
    } 

    public Collection<Facility> getAllFacilities() { 
     return (Collection<Facility>) dm.list(Facility.class); 
    } 

    public Collection<Productline> getAllProductlines() { 
     return (Collection<Productline>) dm.list(Productline.class); 
    } 

    public Collection<MachineDayData> getAllMachineDayData() { 
     return (Collection<MachineDayData>) dm.list(MachineDayData.class); 
    } 

    public Collection<GpsPoint> getAllGpsPoints() { 
     return (Collection<GpsPoint>) dm.list(GpsPoint.class); 
    } 
} 

Ich habe zusätzliche Klassen für den WebApplicationClient über das wsimport toolkit von Java generiert. Ich kann nicht herausfinden, was das Problem ist. Ich habe diesen Beitrag bereits überprüft: Can not set field to com.sun.proxy.$Proxy aber in meinem Fall FacilityManagerRemote ist eine Schnittstelle und keine Klasse. Ich habe keine Ahnung, wie ich diese Angelegenheit weiter angehen soll. Kann jemand helfen?

Antwort

Verwandte Themen