webservice客户端超时设置
(2022-04-25 16:45:34)
标签:
webservicetimeout |
分类: J2EE笔记 |
1 CXF
JaxWsProxyFactoryBean jwpfb = new
JaxWsProxyFactoryBean();
jwpfb.setServiceClass(IWebService.class);
String address =
"http://192.168.0.7:8989/WS_Server/Webservice";
jwpfb.setAddress(address);
IWebService wsImpl = (IWebService) jwpfb.create();
// CXF设置超时时间
Client proxy = ClientProxy.getClient(wsImpl);
HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(5000); // 连接超时
policy.setReceiveTimeout(5000);// 读超时
conduit.setClient(policy);
//调用WebService的sayHello方法
String resResult = wsImpl.sayHello("你好");
2 JAX-WS
//创建一个用于产生WebServiceImpl实例的工厂,WebServiceImplService类是wsimport工具生成的
WebServiceImplService factory = new
WebServiceImplService();
//通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的
WebServiceImpl wsImpl = factory.getWebServiceImplPort();
((BindingProvider)wsImpl).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout",
5 * 1000);
((BindingProvider)wsImpl).getRequestContext().put("com.sun.xml.internal.ws.request.timeout",
5 * 1000);
//调用WebService的sayHello方法
String resResult = wsImpl.sayHello("你好");
注意
如果看到类似两个类具有相同的 XML
类型名称这个bug的话
可以定位到这两个类,namespace = "http://namespace.thats.not.the.same.as.the.generated"。
可以定位到这两个类,namespace = "http://namespace.thats.not.the.same.as.the.generated"。
参考
后一篇:查看支付宝的UserId