一、前言
在IDEA中创建完webservice后,就可以发起请求了,但是没有设置设置超时时间,网上查了很多资料,关于这方面的比较少,先总结下来,代码经过了生产检验。
二、代码
1)依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.3.3</version>
</dependency>
// webServiceUrl为请求的webservice地址
CallServiceFactory.setURL(webServiceUrl);
CallServiceFactory factory = new CallServiceFactory();
CallService callService = factory.getCallServicePort();
// 连接参数设定
Client proxy = ClientProxy.getClient(callService);
HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
// 连接超时时间
policy.setConnectionTimeout(webServiceConfig.getConnectionTimeout());
// 请求超时时间,设置太短会出现核心还没返回就请求异常
policy.setReceiveTimeout(webServiceConfig.getReceiveTimeout());
conduit.setClient(policy);
// 获取返回结果
callResult = callService.invoke(args1, args2, args3, args4, args5);
连接超时时间和请求超时时间我都是配置在了配置文件中,自行设定。
如何在IDEA中生成webservice客户端,可以参看我的博客,地址:
在IDEA中生成webservice客户端