Web Service中Axis與DotNet互操作最佳實務:傳遞java.util.Map對象給C#(譯)

來源:互聯網
上載者:User

由於Axis支援自動序列化和還原序列化JavaBean,實現了Java對象和XML SOAP訊息映射,所以將Java的Map對象傳遞到.NET最簡單的方法是實現一個JavaBean數組對象:

File 1:

public class MapEntryVO {
     private Object  key;
     private Object  value;

     public MapEntryVO() {
     }

     public MapEntryVO(Object key, Object value) {
       this.key   = key;
       this.value = value;
     }

     public Object getKey() {
       return key;
     }
     public void setKey(Object value) {
       key = value;
     }

     public Object getValue() {
       return value;
     }
     public void setValue(Object value) {
       this.value = value;
     }
   }
File 2:

import java.util.*; 

   public class WebServicesUtils {
     public static MapEntryVO[] convertMapToMapEntryVO(Map conv) {
       MapEntryVO[] result = new MapEntryVO[conv.size()];
       int i = 0;
       Iterator iter = conv.entrySet().iterator();

       while (iter.hasNext()) {
         Map.Entry item = (Map.Entry) iter.next();
         result[i++] = new MapEntryVO(item.getKey(),item.getValue());
       }

       return result;
     }
   }
File 3:

// Example WebService 
   public class TestService {
      public MapEntryVO[] testMethod() {
        java.util.Map value = new java.util.HashMap();

        value.put("Key 1","Value 1");
        value.put("Key 2","Value 2");

        return WebServicesUtils.convertMapToMapEntryVO(value);
      }
   }

程式碼完成後,記得在server-config.wsdd(或部署檔案deploy.wsdd)中配置JavaBean的序列化,通知Axis你需要自動序列化的對象:

<typeMapping qname="java:MapEntryVOList"
         type="java:MapEntryVO[]"
         serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
         deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

  <typeMapping qname="java:MapEntryVO"
         type="java:MapEntryVO"
         serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
         deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

參考:

http://wiki.apache.org/ws/FrontPage/Axis/DotNetInteropMapInfo

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.