我是FE,也是Fe

          前端來源于不斷的點(diǎn)滴積累。我一直在努力。

          統(tǒng)計(jì)

          留言簿(15)

          閱讀排行榜

          評(píng)論排行榜

          Spring+CXF配置HTTP代理訪問Internet

          一個(gè)典型的CXF Webservice項(xiàng)目部署到正式環(huán)境后,服務(wù)器不能訪問外網(wǎng),只能通過代理訪問外網(wǎng),找了很多資料,剛開始想法是不用Spring的配置文件,直接用java編程訪問webservice。在java的Http請(qǐng)求中使用代理的方法如下:

          String authentication="username:password";//用戶+”:”+密碼
                  String encodedLogin= new BASE64Encoder().encode(authentication.getBytes());
                  Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("IP", PORT));
                  
                  HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(proxy );
                  conn.setRequestProperty("Proxy-Authorization", " Basic " + encodedLogin);

          使用JaxWsProxyFactoryBean創(chuàng)建client

          System.setProperty("http.proxySet", "true");
                  System.setProperty("http.proxyHost", "IP");
                  System.setProperty("http.proxyPort", "PORT");
                  
                  JaxWsProxyFactoryBean f = new JaxWsProxyFactoryBean();
                  f.setAddress("THE URL OF WEBSERVICE");
                  f.setServiceClass(IService.class);
                  IService client = (IService) f.create();

          可以使用代理,但是用戶名密碼是不能像第一種方法中那樣設(shè)置到HttpConnection里面去的。

          又在網(wǎng)上找了很多資料,終于找到了一個(gè)配置的方法。

          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:cxf="http://cxf.apache.org/core" 
                  xmlns:sec="http://cxf.apache.org/configuration/security" 
                  xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" 
                  xsi:schemaLocation=" 
                          http://www.springframework.org/schema/beans
                          http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                          http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
                          http://cxf.apache.org/configuration/security
                          http://cxf.apache.org/schemas/configuration/security.xsd
                          http://cxf.apache.org/transports/http/configuration
                          http://cxf.apache.org/schemas/configuration/http-conf.xsd"> 
                  <http-conf:conduit name="*.http-conduit"> 
                      <http-conf:proxyAuthorization>
                      
                              <!-- 用戶名 -->
                              <sec:UserName>***</sec:UserName>
                              <!-- 密碼 -->
                              <sec:Password>***</sec:Password>
                              
                       </http-conf:proxyAuthorization>
                      <!--
                          ProxyServer IP                ProxyServerPort PORT
                          ProxyServerType: HTTP or SOCKS
                       -->
                      <http-conf:client
                              ProxyServer="192.168.1.4" 
                              ProxyServerPort="808"
                              ProxyServerType="HTTP"
                              Connection="Keep-Alive" 
                              AllowChunking="false"
                              ConnectionTimeout="50000" 
                              ReceiveTimeout="120000"
                              /> 
              </http-conf:conduit> 
          
              <!-- Client   -->
              </beans>

          <http-conf:conduit name="*.http-conduit"> 這里的name為”*.http-conduit”時(shí),將會(huì)對(duì)所有的client類啟用這個(gè)代理,如果要配置某個(gè)client類使用代理,可以這么寫

          <http-conf:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-conduit>
              ...
            </http-conf:conduit>

          {}里面的內(nèi)容是webservice的wsdl的<wsdl:definitions name="serviceName" targetNamespace="{}之后.之前的內(nèi)容是

          <wsdl:port name="BasicHttpBinding_IService" binding="i0:BasicHttpBinding_IService">

          <soap:address location="the address" />

          </wsdl:port>

          的name屬性。

          上述wsdl對(duì)應(yīng)的配置是

          <http-conf:conduit name="{http://hafeyang.blogjava.net}BasicHttpBinding_IService.http-conduit> ... </http-conf:conduit>

          參考資料

          http://fusesource.com/docs/framework/2.2/bind_trans/HTTPConsumerConfig.html

          http://topic.csdn.net/u/20090331/09/f3ce02e0-29be-40cc-a534-9f2e5ac23f9e.html

          http://old.nabble.com/http:conduit-Proxy-td20462360.html

          http://mail-archives.apache.org/mod_mbox/servicemix-users/200807.mbox/<4885FCBB.5070506@gmail.com>

          posted on 2010-01-12 17:10 衡鋒 閱讀(2861) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: Spring+CXF配置HTTP代理訪問Internet 2011-01-30 11:15 張見

          好  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 集贤县| 房山区| 临夏市| 永丰县| 涞源县| 合川市| 巴彦淖尔市| 黄龙县| 阿鲁科尔沁旗| 宜昌市| 饶阳县| 建湖县| 北碚区| 新兴县| 井研县| 南昌市| 株洲县| 平原县| 阿尔山市| 航空| 石渠县| 婺源县| 右玉县| 越西县| 永康市| 高雄县| 九龙坡区| 晋中市| 兴宁市| 察哈| 建宁县| 新巴尔虎右旗| 班戈县| 乾安县| 南城县| 上林县| 那坡县| 邛崃市| 平远县| 合阳县| 壤塘县|