Java 当HashMap作为参数传递时生成WebService时发生异常
我正在尝试创建一个webservice,它接受一个VO,VO包含一个Map类型的参数。我编写了这个简单的服务,并试图用它创建Web服务。在创建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
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);