[英]Getting Exception while generating the WebService when HashMap is passed as parameter
我正在尝试创建一个采用 VO 的 Web 服务,并且 VO 包含 Map 类型的参数。 我写了这个简单的服务,并试图从中创建 web 服务。 在创建 web 服务时,我遇到了不支持的异常。
public MyVO myService(MyVO vo) {
return vo;
}
public class VO{
private String name;
private Map<String, Serializable> paramsMap;
}
我得到的错误:
通过服务 class 使用的值类型的字段或属性有一个数据类型“java.util.Map”,它不受 JAX-RPC 1.1 规范的支持。 该类型的实例可能无法正确序列化或反序列化。 可能会导致 Web 服务的数据丢失或完全失败。
我不确定这有什么问题。 有什么帮助或解决方法吗?
提前致谢。
此链接显示 JAX-RPC 1.1 和 Map 支持的数据类型(不支持其所有子类)。
JAX-RPC 1.1 规范,第 5.1.3 节指出:
其他标准 Java 类(例如:Java 集合框架中的类)使用可插入的序列化程序和反序列化程序进行映射。 有关可插入序列化器和反序列化器的更多详细信息,请参阅第 15 章(“可扩展类型映射”)。
一种解决方法是拥有一个可以通过参数传递的键/值对 JavaBean 数组。
例子:
public final class KVPair<T> implements Serializable {
private String key;
private T value;
//Getters and setters
}
并且有一个服务有一个 KVPair 的KVPair
。
service.consume(KVPair[] map);
IBM DeveloperWorks展示了将 arrays 映射为 WSDL 中的复杂类型的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.