繁体   English   中英

当 HashMap 作为参数传递时,生成 WebService 时出现异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM