我正在尝试创建一个Web服务,它接受一个VO,VO包含一个Map类型的参数。我编写了这个简单的服务并尝试从中创建Web服务。在创建Web服务时,我得到了不受支持的异常。
public MyVO myService(MyVO vo) {
return vo;
}
public class VO{
private String name;
private Map<String, Serializable> paramsMap;
}
我得到的错误:
通过服务类使用的值类型的字段或属性具有JAX-RPC 1.1规范不支持的数据类型“java.util.Map”。该类型的实例可能无法正确序列化或反序列化。可能会导致数据丢失或Web服务完全失败。
我不确定这有什么问题。任何帮助或解决方法?
提前感谢。
答案 0 :(得分:1)
此link显示JAX-RPC 1.1和Map支持的数据类型(并且不支持其所有子类)。
JAX-RPC 1.1规范,第5.1.3节规定:
其他标准Java类(for 示例:Java中的类 Collection Framework)使用映射 可插拔的序列化器和 解串器。请参阅第15章 (“可扩展类型映射”)了解更多信息 可插拔序列化器的详细信息 和反序列化。
一个解决方法是一个可以通过参数传递的键/值对JavaBean数组。
示例:
public final class KVPair<T> implements Serializable {
private String key;
private T value;
//Getters and setters
}
并拥有一张地图为KVPair
。
service.consume(KVPair[] map);
IBM DeveloperWorks显示了将数组映射为WSDL中的复杂类型的示例。