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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章