如何在groovy中使用cxf制作地图?

时间:2012-08-07 20:18:13

标签: grails soap groovy cxf groovyws

GroovyWS是一个内部使用CXF的框架。我想提出如下要求:

<param2 xsi:type="ns2:Map">
    <item xsi:type="ns2:Map">
        <key xsi:type="xsd:string">param1</key>
        <value xsi:type="xsd:string">param2</value>
    </item>
</param2>

目前我正在尝试使用grails服务执行此操作,如下所示:

def proxy = new WSClient("http://xyz", this.class.classLoader)
proxy.initialize()

proxy.client.invoke("call", new HashMap<String, String>())

哪个给出了

javax.xml.bind.JAXBException
class java.util.HashMap nor any of its super class is known to this context.

我甚至试过[:]和东西,但是没有让它发挥作用。

2 个答案:

答案 0 :(得分:3)

嗯,我做了类似的事情已经有一段时间了,但我似乎记得CXF生成的客户端有一个名为“create”的方法,类似于:

def mapObject = proxy.create( "ns2.Map" );

尝试一下,看看mapObject是否包含您期望的方法或成员。

答案 1 :(得分:1)

这是使用known issue

JAXB

潜在的问题是您的架构不明确。

有两种解决方案:

  • 使用名称空格删除任何歧义
  • 将每个服务单独解析为不同的Java包。