Web Service中Axis与DotNet互操作最佳实践:传递java.util.Map对象给C#(译)
2008-11-14 00:21
489 查看
由于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
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
相关文章推荐
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
- Atitit. 拉开拉链zip文件 最佳实践实施 java c# .net php
- 关于Map表循环过程删除操作出现的java.util.ConcurrentModificationException 异常
- Gwt 操作时间对象 -- java.util.Date
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
- 【redis,1】java操作redis: 将string、list、map、自己定义的对象保存到redis中
- 修改JAX-WS的序列化行为以及web service中传递Map对象
- java操作redis: 将string、list、map、自定义的对象保存到redis中
- Java面向对象设计最佳实践 - 枚举设计
- dotNet客户端与Java服务器端Web Service互操作过程中DateTime格式的问题
- XStream序列化对象,java.util.Map自定义Converter
- java操作redis: 将string、list、map、自定义的对象保存到redis中
- java面向对象设计最佳实践 专题 与 Java程序员应该掌握的10项技能
- 【redis,1】java操作redis: 将string、list、map、自定义的对象保存到redis中
- Java代码通过API操作HBase的最佳实践
- 对Bean进行操作以用于把入参对象解析成Map参数传递到Mybatis的工具类
- Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
- 【redis,1】java操作redis: 将string、list、map、自定义的对象保存到redis中
- Gwt 操作时间对象 -- java.util.Date
- Java面向对象设计最佳实践——内置类设计