<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-124  評論-194  文章-0  trackbacks-0
    最近想用PERL通過SOAP與JAVA通信,想到了XFIRE,現在叫CXF提供的服務。但總是差一點成功。

    第一步,
    由于用了SPRING,所以最先看了這篇文章:Writing a service with Spring
    服務是建成功了,PERL和JAVA是可以正常通信了,詳見上篇文章
    可是CXF自己的CLIENT生成代碼卻訪問“自定義結構數組”的函數不成功:
     public List<DeviceValue> sendAlarmArr (List<DeviceValue> arr);

    第二步,
    左試右試不成功,甚至去試了Axis2,但那個生成的WSDL把上面的結構變成AnyType,估計不對。
    又回來,看了Aegis綁定,我還找到將它用到SPRING里的方法:
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:jaxws
    ="http://cxf.apache.org/jaxws"
     xsi:schemaLocation
    ="
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
    >

     
    <import resource="classpath:META-INF/cxf/cxf.xml" />
     
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
     
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

       
    <bean id="serviceClass" class="com.exchangebit.nms.magic.NotifyServiceImpl"/>
      
        
    <bean id="aegisDatabinding" class="org.apache.cxf.aegis.databinding.AegisDatabinding"/>
              
        
    <bean id="serviceFactory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
            
    <property name="dataBinding" ref="aegisDatabinding"/>
        
    </bean>
        
        
    <bean id="serverBeanFactory" class="org.apache.cxf.frontend.ServerFactoryBean" init-method="create">
            
    <property name="address" value="/NotifyService"/>
            
    <property name="bindingId" value="http://schemas.xmlsoap.org/soap/"/>
            
    <property name="serviceBean" ref="serviceClass"/>
            
    <property name="serviceFactory" ref="serviceFactory"/>
        
    </bean>

        
    <jaxws:endpoint 
          
    id="notifyService" 
          implementor
    ="com.exchangebit.nms.magic.NotifyServiceImpl" 
          address
    ="/NotifyService">
             
    <!--jaxws:serviceFactory>
                <ref bean="serviceFactory"/>
             </jaxws:serviceFactory
    -->
         
    </jaxws:endpoint>
       
    </beans>


    其實,跟前一種JAX-WS的方式轉換非常簡單,把其中的注釋去掉就是Aegis綁定,注釋掉就是JAX-WS。
    客戶端沒有在SPRING里試成功,但寫代碼也相當簡單,Aegis真好:
            getBean ("notifyClient");
            
            ClientProxyFactoryBean factory 
    = new ClientProxyFactoryBean();
            factory.setServiceClass(NotifyService.
    class);
            factory.setAddress(
    "http://127.0.0.1:8080/ebnms/NotifyService");
            factory.getServiceFactory().setDataBinding(
    new AegisDatabinding());
            NotifyService client 
    = (NotifyService) factory.create();
            DoTest (client);


    這次,到是CXF的SERVER和CLIENT都可以正常通信了。但我不說也知道啦,PERL又出問題了!

     

    第三步,
    又進一步搜,才知道Document, Literal, RPC, Encoding對SOAP消息的影響,這篇文章(中文的)相當好!
    大義是RPC/Encoding將方法名稱放入了operation節中,并且消息里含有類型信息,不方便檢驗。
    而Document/Literal通過增加WSDL復雜度,將方法名、參數類型全部放入了types一節,方便了處理。
    而SOAP::Lite只支持RPC/Encoding的方式,但也有辦法讓它形成Doc/Lit的消息:點這里
    但,這種方法只支持JAX-WS的服務,Aegis的PERL就會出錯了。

    所以,不管用哪種要么JAVA的CLIENT和SERVER通信有問題,不然就是把PERL拒之門外。我懷疑是不是CXF的JAX-WS的數組處理有問題,不然Aegis為何不出錯?另外,Aegis對PERL的消息不夠寬容,本已是Doc/Lit格式,只是帶有TYPE信息也會出錯。
    不知如何解,先記在此,以后回過頭來再研究了。
    posted on 2007-08-07 21:39 我愛佳娃 閱讀(2920) 評論(1)  編輯  收藏 所屬分類: Perlweb技術

    評論:
    # re: CXF:咋總差一點呢? 2011-05-10 22:58 | lty
    請問您cxf返回復雜類型怎么做呢?  回復  更多評論
      
    主站蜘蛛池模板: 亚洲 暴爽 AV人人爽日日碰| 久久久久无码精品亚洲日韩 | 中文字幕亚洲综合久久男男| 高潮内射免费看片| 国产免费无遮挡精品视频| 亚洲av中文无码乱人伦在线观看 | 在线成人a毛片免费播放| 亚洲三级在线播放| 大地资源在线观看免费高清| 亚洲娇小性xxxx色| 无码视频免费一区二三区| 亚洲AV无码AV日韩AV网站| 日本成人在线免费观看| 精品亚洲成a人在线观看| 亚洲成网777777国产精品| 一本到卡二卡三卡免费高| 亚洲啪啪AV无码片| 57pao一国产成视频永久免费| 亚洲国产高清视频在线观看| 在人线av无码免费高潮喷水| 亚洲中文字幕AV每天更新| 免费一级特黄特色大片在线| 久久最新免费视频| 99久久亚洲综合精品成人网| 最近免费中文字幕大全视频| 色吊丝免费观看网站| 亚洲伊人久久精品影院| 3344免费播放观看视频| 亚洲中文字幕乱码熟女在线| 国产免费私拍一区二区三区| xxxx日本在线播放免费不卡| 亚洲高清无在码在线无弹窗 | 亚洲av无码片在线观看| 免费永久看黄在线观看app| 丝袜足液精子免费视频| 亚洲一级在线观看| 亚洲一区精品伊人久久伊人| 久久综合国产乱子伦精品免费| 久久亚洲国产成人影院| 亚洲中文字幕不卡无码| 在线精品一卡乱码免费|