2011-01-25 5 views
3

JAXB、JPA、およびRESTful Webサービスの組み合わせを使用して、ワイヤを渡ってオブジェクトを渡しています。私のドメインオブジェクトには、JPAとJAXBの注釈が混在しています。私は、SpringのRestTemplateを使って最小限のコードでドメインオブジェクトのアンマーシャリングを成功させることができます。著者は、プロダクション環境で注釈に頼ることは決してないと主張しましたが、スキーマに従ってマーシャルとアンマーシャリングを行うことは、ずっと前に読んでいたことを思い出しました。これはまだ必要な練習ですか?XMLマーシャリングされたオブジェクトをワイヤに渡すときに、XSDを使用するのが適切かどうか?

2つのプロジェクト(例えば、RESTful Webサービスを作成しているクライアントや消費しているクライアント)に依存する注釈付きBeanを持つ.jarがある場合、生成されたXSDを導入しても保守が必要な別のデータセットを効果的に追加しませんか?アノテートされたJAXB POJOを使用する場合、スキーマはいつ必要であり、どのような利点がありますか?

+1

これは実際にはJavaまたはJAXB固有ではありませんが、これはXML-over-HTTPアプリケーションのベストプラクティスのより一般的な質問です。 – skaffman

+0

私は部分的には同意しますが、JAXB特有の注釈の存在は私の質問に非常に関連しています。ベストプラクティスについての質問ですが、J2EEエコシステム内です。 – Fil

答えて

1

JAXBはそのメタデータを注釈として表しているため、XMLスキーマによれば、実際にマーシャリング/非マーシャルはありません。

EclipseLinkのJAXBコンポーネント(MOXy)は、JPA implementationで最もよく知られています。開発者には、JAXB & JPA注釈の組み合わせをモデルに使用することをお勧めします。 XMLスキーマの

使用しています。

  • mentioned by biziclopとしてJAXBは、検証を実行するためにアンマーシャリング/マーシャリング操作中にXMLスキーマを活用することができます。
  • XMLスキーマは、RESTfulサービスのクライアントが、期待されるXMLメッセージの外観を知る手段を提供します。 mentioned by Fabian Steegでは、スキーマをビルドの一部として作成することで、スキーマの管理を容易にすることができます。
1

devとテスト環境では、スキーマの検証は非常に便利です(コードの異なるバージョンを検出するなど)。プロダクションでは、スキーマの検証をオフにしてください。通信しているシステムが他の人によって開発されている場合を除き、XSDの検証は責任を迅速かつ効率的に変えるのに役立ちます。

1

サービスのすべてのユーザーがJavaクライアントである限り、それはあなたにはあまり効果がなく、追加のメンテナンスだけが必要だと私は同意します。しかし、Java以外のクライアントを使用する予定がある場合は、XSDを生成することもできます(メンテナンスのオーバーヘッドを最小限に抑える自動ビルドの一部として)。

関連する問題