CXF 客户端超时时间设置(非Spring配置方式)

最近一直在找CXF客户端超时时间设置的例子,但是网上搜出来的都是通过Spring配置。找了很久,也琢磨了很久。终于可以不用Spring配置来实现客户端超时时间的设置了。

例子:我这个是java 调用Asp.net的Webservice例子

       

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import javax.xml.namespace.QName;
import org.tempuri.DHLServiceSoap;

public String invokeIPEXService(String data, String dataType) {
   //创建WebService客户端代理工厂
   JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
   //注册WebService接口
   factory.setServiceClass(DHLServiceSoap.class);  
   //设置WebService地址 
   factory.setAddress(url); 
   //QName函数的两个参数,第一个是命名空间,第二个是webservice的服务名  
   //第一个参数在.net服务发布时可以找到,也就是targetnamespace,  
   //第二个参数在java的接口实现类中可以找到,也就是serviceName。 
   factory.setServiceName(new QName("http://tempuri.org/", "DHLServiceSoap"));
   DHLServiceSoap dhlService = (DHLServiceSoap)factory.create();  
   // 设置客户端等待服务端响应时间
   Client proxy = ClientProxy.getClient(dhlService );  
   HTTPConduit conduit = (HTTPConduit) proxy.getConduit();  
   HTTPClientPolicy policy = new HTTPClientPolicy();  
   policy.setAllowChunking(false);
   // 连接服务器超时时间 3分钟
   policy.setConnectionTimeout(180*1000);
   // 等待服务器响应超时时间 5分钟
   policy.setReceiveTimeout(300*1000); conduit.setClient(policy);

   // 调用asp.net Webservice
   String wsMsg = dhlService.ifIPEXInterface(data, dataType);
}

你可能感兴趣的:(Java,WebServices,CXF)