问题描述
在项目中编程发现,原来WebService能够正常返回结果,但是后续改变查询条件,导致服务端检索时间过长,客户端抛出:org.apache.cxf.interceptor.Fault: Could not send Message 错误。
解决方案
在客户端延长超时时间,代码如下:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(IEvalService.class);//注册WebService接口
factory.setAddress(CoreConst.PATENT_URL);//设置WebService地址
factory.getOutInterceptors().add(new ClientLoginInterceptor(CoreConst.PARENT_USERNAME,CoreConst.PARENT_PASSWORD));
IEvalService client = (IEvalService)factory.create();//客户端对象
//设置客户端的配置信息,超时等.
Client proxy = ClientProxy.getClient(client);
HTTPConduit conduit = (HTTPConduit) proxy.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(30000); //连接超时时间
policy.setReceiveTimeout(180000);//请求超时时间.
conduit.setClient(policy);
ResultData info = client.loadDataFromSearch(pa,ipc, api_key, sign);//调用服务
如上,设置请求超时时间为3分钟,能正常返回结果了。