webservice client setTimeOut
Posted 52NewBlog-正能量
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice client setTimeOut相关的知识,希望对你有一定的参考价值。
一:eclipse生成的client,基于axis
client_sub.getOptions().setTimeOutInMilliSeconds(1000*60);
client_sub表示一个客户端上的存根对象。
如:org.apache.axis.client.Call _call=createCall();
二:基于XFire
Service model = new ObjectServiceFactory().create(TaskService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
TaskService service = (TaskService) factory.create(model, url);
Client client =Client.getInstance(service);
client.setTimeout(10000);
client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, String.valueOf(10000));
client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");
//另一种
SimpleServiceServiceClient serviceClient= new SimpleServiceServiceClient();
SimpleService servicePort = serviceClient.getSimpleServicePort();
HttpClientParams params = new HttpClientParams();
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE, Boolean.FALSE);
// set connection timeout
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 2L);
//set response timeout
params.setIntParameter(HttpClientParams.SO_TIMEOUT,2);
Client client = Client.getInstance(servicePort);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS, params);
System.out.println(servicePort.concatenate("xfire1", "xfire2"));
三:基于CXF
//1,在CXF生成的stub的客户端,方式如下(CXF2.1.1):
//其中SimpleServiceService是自动生成的stub类.
SimpleServiceService srv = new SimpleServiceService();
SimpleService servicePort = srv.getSimpleServicePort();
//timeout setting
Client cl = ClientProxy.getClient(servicePort);
HTTPConduit http = (HTTPConduit) cl.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(10000);
httpClientPolicy.setReceiveTimeout(1000);
http.setClient(httpClientPolicy);
servicePort.concatenate("111", "2222");
四:jax-ws
//3,jax-ws的客户端:同样利用CXF的ClientProxy控制http连接:
URL wsdlURL = new URL("file:///D:/JAVAWorkspace/Repository/prjCXFWS/src/wsdl/prjCXFWS.wsdl");
QName serviceQName = new QName("http://test.cxfws.com/", "SimpleServiceService");
QName portQName = new QName("http://test.cxfws.com/", "SimpleServicePort");
Service service = Service.create(wsdlURL, serviceQName);
//set handler
service.setHandlerResolver(new RequestOrderHandlerResolver()); SimpleService port = (SimpleService) service.getPort(portQName, SimpleService.class);
//timeout setting
Client cl = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) cl.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(10000);
httpClientPolicy.setReceiveTimeout(1000);
http.setClient(httpClientPolicy);
System.out.println(port.concatenate("srt1", "srt2"));
以上是关于webservice client setTimeOut的主要内容,如果未能解决你的问题,请参考以下文章
Java - 在WebService中使用Client调用三方的RestAPI
Webservice-Client:Spring WS、JAXB 和一个 WSDL 文件的常用方法?