zoukankan      html  css  js  c++  java
  • Web Service中Axis与DotNet互操作最佳实践:传递java.util.Map对象给C#(译)

    由于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

  • 相关阅读:
    两栏自适应布局
    说说bfc 和 HasLayout
    春联式弹动广告
    Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
    2016年新剧《欢乐颂》里面的经典台词
    硬盘怎么保养
    如何保养与维护笔记本硬盘
    仔细看完,你会成为微信高手
    电脑之间用网线直接连接起来快速传送大文件技巧
    阿里云9折优惠码 GQH4IT 使用方法如下:
  • 原文地址:https://www.cnblogs.com/andy65007/p/1333193.html
Copyright © 2011-2022 走看看