1

私の(単純化された)状況:

サービス@WebService
コンテナー getContainer() @WebMethod

コンテナー
void setObjects( ContainableObjects[] オブジェクト )
ContainableObjects[] getObjects()

ContainableObjects [抽象]
void setName(String name)
String getName()
void doSomething()

ContainedString [ContainableObjects を拡張]
void setValue(String value)
String getValue()
void doSomethingElse()

ContainedInt [ContainableObject を拡張]
void setValue(int 値)
int getValue()
void doAnotherThing()

これらの POJO オブジェクトは既に存在します。Eclipse ツールを使用して CXF コードを生成しています。

現時点では、Service.getContainer がコンテナーの表現を提供します。ただし、CXF は、ContainableObject オブジェクトに含まれる以上の情報を送信しません。したがって、クライアントはサブクラスに格納されている値情報を受け取りません。

この単純化は、サブクラスを使用する理由を完全には示していませんが、この理由が存在することを保証します。

明らかに、サブクラスを実装していることを CXF に伝える必要があります。しかし、どうすればそれを行うことができますか?

4

1 に答える 1

1

いくつかの調査の後、解決策を見つけました。

CXF のドキュメントは非常に簡潔かもしれませんが、CXF が依存する標準とフレームワークのドキュメントはそうではありません。

この問題については、JAXB のドキュメントが大いに役立ちました。

実際の解決策: クラス ContainableObject に @XmlSeeAlso({ContainedString, ContainedInt}) で注釈を付ける必要がありました。

于 2012-08-02T20:46:22.663 に答える