Java 如何在web服务中正确注入单例EJB
我在Web服务中使用EJB时遇到问题。当我试图在客户端应用程序中调用webmethod时,出现了NullPointerException错误,表明我的EJB为null。 我使用的是wildfly-10.1.0-Final服务器 我的EJB类:Java 如何在web服务中正确注入单例EJB,java,web-services,intellij-idea,soap,jboss,Java,Web Services,Intellij Idea,Soap,Jboss,我在Web服务中使用EJB时遇到问题。当我试图在客户端应用程序中调用webmethod时,出现了NullPointerException错误,表明我的EJB为null。 我使用的是wildfly-10.1.0-Final服务器 我的EJB类: @Singleton @Startup public class ParkEJB { private Map<Integer,Spot> zone; public ParkEJB(){ zone = new HashMap
@Singleton
@Startup
public class ParkEJB {
private Map<Integer,Spot> zone;
public ParkEJB(){
zone = new HashMap<Integer,Spot>();
zone.put(1, new Spot());
}
public void takePlaceAtIndex(int placeID){
Spot spot;
if((spot = zone.get(placeID)) != null)
spot.setFree(false);
}
}
网络服务:
@WebService()
public class Service {
@EJB
private ParkEJB park;
@WebMethod
public void takePlace(int placeID){
park.takePlaceAtIndex(placeID);
}
}
web服务客户端:
public class ServiceClient {
public static void main(String[] argv) {
Service service = new ServiceService().getServicePort();
service.takePlace(1);
}
}
运行ServiceClient.main时,我有:
Exception in thread "main" com.sun.xml.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: java.lang.NullPointerException Please see the server log to find more detail regarding exact cause of the failure.
at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:193)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:126)
at com.sun.xml.ws.client.sei.StubHandler.readResponse(StubHandler.java:252)
at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:181)
at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:262)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:128)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:102)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:154)
at com.sun.proxy.$Proxy34.takePlace(Unknown Source)
at example.ServiceClient.main(ServiceClient.java:8)
我做错了什么?为什么我的EJB是空的?你检查过wildfly日志(stdout/stderr)有没有进一步的线索?@Bajal日志没有说太多。当我使用intellij debbuger时,它只显示ParkEJB为空。@agaha您能发布新ServiceService()的代码吗?getServicePort()请?
Exception in thread "main" com.sun.xml.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: java.lang.NullPointerException Please see the server log to find more detail regarding exact cause of the failure.
at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:193)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:126)
at com.sun.xml.ws.client.sei.StubHandler.readResponse(StubHandler.java:252)
at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:181)
at com.sun.xml.ws.db.DatabindingImpl.deserializeResponse(DatabindingImpl.java:262)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:128)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:102)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:154)
at com.sun.proxy.$Proxy34.takePlace(Unknown Source)
at example.ServiceClient.main(ServiceClient.java:8)