天天看點

CXF 用戶端逾時時間設定(非Spring配置方式)

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