現在作業中の小さなプロジェクトでエラーが発生しました。私は、Wildflyアプリケーションサーバー上で実行されているEJBプロジェクトを取得しました。このサーバーはOracle Databaseに接続されています。これはEclipseで実装したTest-Clientを介してうまく動作します。しかし、私はWebサービス経由でアプリケーションを利用できるようにしたかったのです。だから私はWebProjectを実装し、私は次のエラーを取得する別のクライアントを経由してWebProjectことを呼び出すに:
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)
Wildflyアプリケーションサーバー上のエラーがある:
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
WebProjectで私のWebサービスは、次のとおりです。
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();
}
}
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
これはこれは、EJBプロジェクトでの私のインタフェースであるの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();
}
です:
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();
}
これは、EJBプロジェクトでの私のセッションBeanです:
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);
}
}
私は、javaのwsimportツールキットを介してWebApplicationClientの追加クラスを生成しました。私は問題が何であるか把握していないようです。私はすでにこの投稿をチェックしました: Can not set field to com.sun.proxy.$Proxy しかし私の場合、FacilityManagerRemoteはクラスではなくインターフェースです。私はこの事柄をさらにどのように解決するかについては考えていません。誰も助けることができますか?