由于要从另一个系统的WebService读取大量的数据,因此要修改连接WebService的超时参数。WebService的客户端代码是通过XFire的Ant任务生成的。Google一下,没找到答案,但最后还是在XFire官方找到了答案。
假设生成的客户端代码中的服务接口和Client的类分别为TestService和TestServiceClient,修改连接超时参数代码如下:
//创建Service对象
TestServiceClient testClient = new TestServiceClient();
TestService testService = testClient.getTestServicePort();
//设置连接参数
HttpClientParams params = new HttpClientParams();
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE, Boolean.FALSE);
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, setting.getTimeout() * 1000);//单位是毫秒
Client client = Client.getInstance(testService);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS, params);
XFire是基于Apache的HttpClient,所以实际上连接超时的参数是就是设置在HttpClient上的