Java 如何在web服务中正确注入单例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

我在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<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)