基于SOAP的Web服务接口,以Hashmap作为输入参数

时间:2011-11-15 18:22:09

标签: web-services soap hashmap cxf

我正在尝试构建一个基于SOAP的Web服务,它将使用Java将Hashmap作为输入?

以前有人试过吗?这会引起什么样的问题?

将输入作为Hashmap或List处理的最佳做法是什么?

感谢您的回答。

2 个答案:

答案 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。