6

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.

我什至尝试过 [:] 之类的东西,但没有让它工作。

4

2 回答 2

3

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

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

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

于 2012-08-12T07:54:52.717 回答
1

这是使用JAXB的一个已知问题

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

有两种解决方案:

  • 使用名称空间消除任何歧义
  • 将每个服务单独解析为不同的 Java 包。
于 2012-08-14T10:24:48.837 回答