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

  • 相关阅读:
    暴力字符串hash——cf1200E
    单调栈+线段树——cf1220F
    拆边+BFS队列骚操作——cf1209F
    控制器
    linux下安装配置jmeter
    docker-compose.yml配置jforum开源系统
    anyproxy
    docker搭建一键安装包lnmp
    docker tomcat,mysql 搭建开源项目jforum
    接口自动化测试-Mock Get和Post请求
  • 原文地址:https://www.cnblogs.com/andy65007/p/1333193.html
Copyright © 2011-2022 走看看