• 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

  • 相关阅读:
    编程之美 2.3寻找发帖‘水王’ 扩展问题
    编程之美:1.12 扩展问题 解答与思考
    编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
    研究生毕业课题怎么确定(转)
    图模型的统计推断 inference in graphical models(马尔科夫链的推断)
    微信js-sdk注意事项
    bootstrap-material-design-个人总结
    前端页面优化
    Material Design
    马克飞象
  • 原文地址:https://www.cnblogs.com/andy65007/p/1333193.html
Copyright © 2020-2023  润新知