我正在尝试构建一个基于SOAP的Web服务,它将使用Java将Hashmap作为输入?
以前有人试过吗?这会引起什么样的问题?
将输入作为Hashmap或List处理的最佳做法是什么?
感谢您的回答。
答案 0 :(得分:2)
找到解决方案,将HashMap作为WebService端点的输入。
如果直接在输入中定义HashMap,那么XSD将无法正确显示它,并且WSDL也不容易理解。
因此,定义一个输入类并将HasMap添加为您计划作为输入的属性。
Class A
{
HasMap inputData;
//Add the Getter and Setter
}
在输入Webserivce方法时输入A类。现在你的WSDL将具有带Key / Vlue对的HasMap。
答案 1 :(得分:2)
CXF java_first_jaxws样本:
http://svn.apache.org/repos/asf/cxf/trunk/distribution/src/main/release/samples/java_first_jaxws/
提供了有关如何使用JAX-WS / JAXB“正确”处理Maps(和其他接口派生类型)的示例。基本上,您必须创建一个XmlAdapter,它将地图转换为JAXB可以完全映射的类型。然后,JAXB将在运行时自动使用这些适配器映射到它满意的类型。结果是你可以完全控制生成的schema / wsdl(所以你不必拥有通用的“key”和“value”元素名称),这样也可以方便地使用Maps。