私は、契約の最初のWebサービス(wsimport
とjaxws-maven-plugin
)でアプリケーションを開発しています。JavaのContract-Firstを使用したWebサービスサイクル
サイクルを処理するには、WSDL/XSDファイルをどのように書き込むべきですか?例えば、department
をemployees
およびemployee
を参照してdepartment
(この記事ではhttp://jaxb.java.net/guide/Mapping_cyclic_references_to_XML.htmlのように)を参照してください。記事では@XmlTransient
の注釈が書かれていますが、私はcontract-firstを使用しているため、生成されたクラスを変更することはできません。
私はちょうどそれらのサイクル、私はWebサービスを初めて実行を無視した場合、私のようなエラーが表示されます。
Caused by: com.sun.istack.SAXException2:
A cycle is detected in the object graph. This will cause infinitely deep XML:
[email protected] -> [email protected] -> [email protected]
これは問題を解決する方法の1つですが、通信の両側に余分なコードが必要です(サーバーは参照を破棄し、クライアントがそれを再構築する必要があります)。 循環参照を有効にする@ XmlID/@ XmlIDREFを調べようとしましたが、オブジェクトをObjectクラスに変換し、クライアントサイドで手動の型キャストが必要です。 –
xs:idとxs:idref。 – meriton