cuixx1985

          2009年4月21日 #

          axis處理自定義對象

          最近的一個項目又要用到webservice(axis),上次為了趕時間完成任務,簡單的找了些例子然后就這樣用了,還好項目里本來就有對象和xml之間轉換的接口,所以要傳的對象一律轉換成xml,然后傳字符串。
                  嘗試了N久才搞定了傳輸屬性不是基本數據類型的問題。簡單帖個代碼:

          1.server-config.wsdd

           <service name="sendUser" provider="java:RPC">
                 
          <!-- 發布特定的方法,多個方法用逗號隔開 -->
                
          <parameter name="allowedMethods" value="getUserByUserId"/>
                
          <parameter name="className" value="cn.gov.zjport.suzhou.webservice.GetUser4WebServiceImpl"/>
                
          <beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomUser"  qname="ns:CustomUser" xmlns:ns="urn:GetUser4WebService"/>
                
          <beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomRole"  qname="ns:CustomRole" xmlns:ns="urn:GetUser4WebService"/>
                
          <beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomUserRole"  qname="ns:CustomUserRole" xmlns:ns="urn:GetUser4WebService"/>
           
          </service>
          2.客戶端測試代碼
          QName qn = new QName("urn:GetUser4WebService","CustomUser");
                       QName qn1 
          = new QName("urn:GetUser4WebService","CustomRole");
                       QName qn2 
          = new QName("urn:GetUser4WebService","CustomUserRole");
                       call.setTargetEndpointAddress(
          new URL("http://localhost:8080/suzhouPlatform/webServices/sendUser") ); 
                       call.setOperationName(
          new QName("http://localhost:8080/suzhouPlatform/webServices/sendUser","getUserByUserId"));
                       call.registerTypeMapping(CustomUser.
          class, qn,new BeanSerializerFactory(CustomUser.class, qn),new BeanDeserializerFactory(CustomUser.class, qn));
                       call.registerTypeMapping(CustomRole.
          class, qn1,new BeanSerializerFactory(CustomRole.class, qn1),new BeanDeserializerFactory(CustomRole.class, qn1));
                       call.registerTypeMapping(CustomUserRole.
          class, qn2,new BeanSerializerFactory(CustomUserRole.class, qn2),new BeanDeserializerFactory(CustomUserRole.class, qn2));
                       Object result 
          = call.invoke(new String[]{"admin"});
          大概代碼就這樣了^_^

          posted @ 2009-04-21 13:31 true_star 閱讀(698) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 灵丘县| 宿迁市| 湘潭市| 晴隆县| 庄河市| 兰考县| 环江| 东丽区| 清丰县| 金川县| 小金县| 白沙| 堆龙德庆县| 米易县| 自贡市| 信阳市| 库尔勒市| 辽阳县| 永胜县| 萨嘎县| 三明市| 望都县| 百色市| 富锦市| 邛崃市| 定陶县| 错那县| 池州市| 贵阳市| 鄂伦春自治旗| 津南区| 郸城县| 丽江市| 晋中市| 连城县| 宜春市| 宣威市| 江孜县| 古浪县| 互助| 松原市|