where the amazing happens

          以前寫的關(guān)于apache axis的一篇文章

          大概1年多前,有個(gè)項(xiàng)目用到webservice,那時(shí)候研究axis時(shí)候的一些記錄,可以對比下現(xiàn)在的axis2或者xfire.

          ?????????????????????????????????????????????????????????WebService之a(chǎn)xis的復(fù)雜對象傳輸

          先自定義發(fā)布:
          寫一個(gè)deploy.wsdd 文件:
          <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
          <service name="mShop" provider="java:RPC">
          <parameter name="className" value="tests.shop"/>
          <parameter name="allowedMethods" value="*"/>
          <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          qname="ns1:book"
          serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
          type="java:tests.book"
          xmlns:ns1="http://127.0.0.1:8080/axis/services/mShop"/>

          </service>
          </deployment>

          服務(wù)發(fā)布后,以上的發(fā)布信息都會(huì)被添加到server-config.wsdd文件里~
          若服務(wù)發(fā)布出了什么問題(比如View里面看不到任何服務(wù)等……==!)一個(gè)考慮的就是這個(gè)server-config.wsdd~
          上面的高亮顯示,這是關(guān)鍵,它在server端定義如何序列化和反序列化complexType
          若沒有這個(gè),那么你在客戶端registry.getDefaultTypeMapping()將什么都得不到~~

          這里的<typeMapping .../>定義了一個(gè)book對象,它是服務(wù)方法 public book[] getAllBooks() 的返回類型,類定義在tests.book,namespace是服務(wù)的namespace
          具體的wsdd文件說明在axisUserguide里面,具體位置 : %axis_home%/docs/reference.html
          以此類推,服務(wù)中所有的非原子類型返回都必須typeMapping一下~~~(= =!汗)

          注冊復(fù)雜類型的客戶端代碼:


          org.apache.axis.client.Service service = new org.apache.axis.client.Service();
          TypeMappingRegistry registry = service.getTypeMappingRegistry();
          TypeMapping map = registry.getDefaultTypeMapping();
          QName qType = new QName("http://localhost/tests","book");
          Class qClass = Class.forName("tests.book");
          map.register(qClass,qType,new BeanSerializerFactory(qClass, qType),
          new BeanDeserializerFactory(qClass, qType));

          要注意,Service是org.apache.axis.client.Service,而不是javax.xml.rpc.Service,如果用錯(cuò)了axis會(huì)發(fā)出一大堆http500來抱怨的~~~

          附:自己寫的一個(gè)類來遠(yuǎn)程調(diào)用axis的服務(wù),省得一個(gè)個(gè)去service得call.
          axisGo.rar?(現(xiàn)在看來代碼十分簡陋,那時(shí)接觸java還沒半年。不過作為一個(gè)關(guān)鍵的螺絲已經(jīng)運(yùn)行在學(xué)校的xx系統(tǒng)里面了,真的是幫了我很大的忙,還寫了個(gè)遠(yuǎn)程通過WEB服務(wù)訪問數(shù)據(jù)庫的orm工具,地獄一樣的代碼,到處是反射)

          posted on 2006-04-27 22:08 where the amazing happens 閱讀(1541) 評(píng)論(1)  編輯  收藏 所屬分類: 框架類庫

          評(píng)論

          # re: 以前寫的關(guān)于apache axis的一篇文章 2006-12-15 10:31 ssad

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


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


          網(wǎng)站導(dǎo)航:
           

          公告

          點(diǎn)擊這里給我發(fā)消息

          導(dǎo)航

          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(18)

          隨筆檔案(17)

          文章分類

          相冊

          其他我的blog

          技術(shù)Blog

          最新隨筆

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 吉隆县| 吴旗县| 璧山县| 汉沽区| 吉安市| 扶风县| 驻马店市| 兴安盟| 广宁县| 扎囊县| 额济纳旗| 诸城市| 喜德县| 铜梁县| 广州市| 江安县| 广汉市| 普兰县| 广饶县| 孟州市| 广宗县| 冕宁县| 南漳县| 襄垣县| 都匀市| 彭泽县| 祁连县| 吴堡县| 敦化市| 怀柔区| 隆安县| 巴里| 临夏县| 南木林县| 永丰县| 黄梅县| 普兰县| 疏附县| 龙南县| 莱芜市| 保康县|