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の使用に関する既知の問題です。

根本的な問題は、スキーマがあいまいであるということです。

2つの解決策があります:

  • 名前スペースを使用して、あいまいさを取り除きます
  • 各サービスを個別に異なるJavaパッケージに解決します。
于 2012-08-14T10:24:48.837 に答える