Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当HashMap作为参数传递时生成WebService时发生异常_Java_Web Services_Hashmap_Jax Rpc - Fatal编程技术网

Java 当HashMap作为参数传递时生成WebService时发生异常

Java 当HashMap作为参数传递时生成WebService时发生异常,java,web-services,hashmap,jax-rpc,Java,Web Services,Hashmap,Jax Rpc,我正在尝试创建一个webservice,它接受一个VO,VO包含一个Map类型的参数。我编写了这个简单的服务,并试图用它创建Web服务。在创建webservice时,我得到一个异常,它不受支持 public MyVO myService(MyVO vo) { return vo; } public class VO{ private String name; private Map<String, Serializable> paramsMap; } pub

我正在尝试创建一个webservice,它接受一个VO,VO包含一个Map类型的参数。我编写了这个简单的服务,并试图用它创建Web服务。在创建webservice时,我得到一个异常,它不受支持

 public MyVO myService(MyVO vo) {
    return vo;
}

public class VO{
  private String name;
  private Map<String, Serializable> paramsMap;  
}
publicmyvomyservice(MyVO){
返回vo;
}
公共类VO{
私有字符串名称;
私有映射参数;
}
我得到的错误:

通过服务类使用的值类型上的字段或属性具有JAX-RPC 1.1规范不支持的数据类型“java.util.Map”。该类型的实例可能无法正确序列化或反序列化。可能导致数据丢失或Web服务完全失败

我不确定这是怎么回事。有人帮忙或帮忙吗

提前感谢。

这显示了JAX-RPC1.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
}

显示了在WSDL中将数组映射为复杂类型的示例。

谢谢。但是在这里它提到它支持HashMap等。。我现在更糊涂了。如果我们可以使用HashMap,那么它也很好。但是,当我使用HashMap并试图生成web服务时,它会告诉我与原始问题中提到的相同的警告消息。但在生成webservice代理时,它会使用HashMap。我不知道为什么会出现这种行为。@java_enthu,您使用的是JEE 1.3文档,而我使用的是JEE 1.4文档。我甚至下载了规范来引用规范。我假设您使用的是ApacheAxis1.4,它为您的HashMap创建了一个类型映射(因为它是可序列化的)。非常感谢您的快速响应:)我在eclipse中使用的是ApacheAxis1.5.5。使用JDK1.6。您认为Axis2的1.3版本能够支持地图吗?(事实上我无法下载1.3)这是不可能的:这是最后一个发布的ApacheAxis1
NEWS(2006年4月22日):Axis1.4最终版现在可用。你从哪里得到ApacheAxis1.5.5的?在这里。版本1.5.5日期2011年5月29日
service.consume(KVPair[] map);