如何为 JAX-WS Web 服务客户机设置超时?
2022-08-31 10:06:03
我使用 JAXWS-RI 2.1 为我的 Web 服务创建了一个基于 WSDL 的接口。我可以毫无问题地与 Web 服务交互,但无法指定向 Web 服务发送请求的超时。如果由于某种原因它没有响应,客户似乎只是永远旋转它的轮子。
四处寻找已经发现,我可能应该尝试做这样的事情:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
我还发现,根据您拥有的 JAXWS-RI 版本,您可能需要设置以下属性:
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);
((BindingProvider)myInterface).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 10000);
我遇到的问题是,无论上述哪一个是正确的,我不知道我在哪里可以做到这一点。我所拥有的只是一个服务
子类,它实现了自动生成的Web服务接口,并且在它被实例化的时候,如果WSDL没有响应,那么设置属性已经太晚了:
MyWebServiceSoap soap;
MyWebService service = new MyWebService("http://www.google.com");
soap = service.getMyWebServiceSoap();
soap.sendRequestToMyWebService();
任何人都可以给我指出正确的方向吗?!