我爱新博文

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"));  

posted @ 2016-09-20 10:27  52newblog  阅读(2186)  评论(0编辑  收藏  举报
www.52newblog.com 我爱新博文