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

  • 相关阅读:
    高阶函数之函数柯里化function currying
    学习javascript设计模式之状态模式
    学习javascript设计模式之代理模式
    学习javascript设计模式之发布-订阅(观察者)模式
    Json序列化提示缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”
    获取实例
    webservice跨域问题
    IIS客户端没有权限
    IIS7.5 错误代码0x8007007e HTTP 错误 500.19
    获取当前文件夹路径
  • 原文地址:https://www.cnblogs.com/andy65007/p/1333193.html
Copyright © 2011-2022 走看看