我是新来玩的!框架和使用 wsdl2java 工具。我正在开发一个游戏!需要与 SOAP Web 服务交互的应用程序。我有 WSDL 并使用 jaxws 从它创建对象。它正在创建一堆 java 类和 1 个接口。一旦我尝试进行 web 服务调用,我就会收到一个错误,即类加载器找不到接口。这是我的代码:
MyWebserviceBeanService service = new MyWebserviceBeanService();
MyWebserviceRemote mwr = service.getMyWebserviceBeanPort();
LoginResponse response = mwr.loginUser("xxx", "xxx");
请注意,“MyWebserviceRemote”是接口。的代码getMyWebserviceBeanPort
很常见,因为它是自动生成的,但这里是:
@WebEndpoint(name = "MyWebserviceBeanPort")
public MyWebserviceRemote getMyWebserviceBeanPort() {
return super.getPort(new QName("http://xxxxxxxxxx/", "MyWebserviceBeanPort"), MyWebserviceRemote.class);
}
当我尝试调用一个方法时,例如loginUser
上面的方法,我得到以下堆栈跟踪:
play.exceptions.JavaExecutionException: interface xxxx.xxxx.xxxx.MyWebserviceRemote is not visible from class loader
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:237)
at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: interface xxxx.xxxxx.xxxx.MyWebserviceRemote is not visible from class loader
at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:736)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:408)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:384)
at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:366)
at javax.xml.ws.Service.getPort(Service.java:119)
at xxxx.xxxx.xxxx.MyWebserviceBeanService.getMyWebserviceBeanPort(MyWebserviceBeanService.java:72)
at controllers.MyController.index(MyController.java:26)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
... 1 more
我真的不知道如何解决这个问题,甚至不知道如何调试它。我在哪里看?我从哪里开始?我使用 SoapUI 测试了 web 服务,它工作正常。
谢谢!