3

WebSphere アプリケーション サーバーにデプロイする Java EE アプリケーションを開発しています。このアプリケーションには、メソッド呼び出しの結果として JPA エンティティ オブジェクトを転送する Web サービスがあります。問題は、エンティティ関係によって生成されるループから発生します。

JPA エンティティ間の逆参照の問題を解決するために、Eclipselink Moxy を使用しました。ただし、私は自分で JAXB 実装を呼び出していませんが、WAS はそれ自体を呼び出しているため、@XmlInverseReference アノテーションは無視されます。参照されるすべてのエンティティをメソッドの結果としてフェッチすることが重要であるため、 @XmlTransient アノテーションを使用したくありません。

Moxy をデフォルトの WebSphere JAXB 実装として使用することは可能ですか? または、実行時に @XmlTransient アノテーションを追加するエンティティ用の JAXB アダプターを作成できますか? 他のエンティティを参照するエンティティを返すメソッドがあるため、これが必要ですが、データベース関係のソースへの参照とともに参照されるエンティティも返します。

4

1 に答える 1

1

注: 私はEclipseLink JAXB (MOXy)のリーダーであり、JAXB (JSR-222)エキスパート グループのメンバーです。

JAX-WS 実装には、別の JAXB 実装でスワップできるという要件はありません。MOXy を JAX-WS の JAXB プロバイダーとしてサポートしていない環境での 1 つのオプションは、標準Providerメカニズムを使用することです。

アノテーションの必要性を置き換える 1 つのトリック@XmlInverseReferenceは、非整列化イベント コールバック メカニズムを利用することです。これには、子オブジェクトに次のメソッドを配置することが含まれます。そのメソッドの実装では、親への参照を設定できます。

void afterUnmarshal(Unmarshaller, Object parent);

注: そのプロパティに で注釈を付ける必要があります@XmlTransient

MOXy は、次の環境で JAX-WS の JAXB プロバイダーとして使用できます。

于 2012-12-05T15:22:52.147 に答える