7

私は Apache CXF、特に Apache CXF がサポートするさまざまなデータ バインディング (JAXB (デフォルト)、MTOM、Aegis、および XMLBeans) をいじってみました。これらはすべてサポートされているので、それぞれにメリットがあると思います。私はこれらを思いついた:

  • 明らかに、大きな添付ファイルが含まれる場合は MTOM が優先されます。
  • JAXB はアノテーションに依存するため、クラスの変更が制限されている場合にはあまり適していません。
  • Aegis にはwsdl2javaツールがないため、「コントラクト優先」の開発にはあまり適していません。つまり、WSDL から開始して、そこから Java コードを生成します。
  • Aegisは、 Class .aegis.xmlファイルの宣言構文を使用して、Java クラスと XML 間のマッピングをより細かく制御できるようです。一方で、JAXB がうまくいかないシナリオを思いつくことはできませんでした。

JAXB と XMLBeans を並べてこの質問を見つけましたが、包括的な概要は示されていません。

JAXB 対 Apache XMLBeans

これらの素朴でアプリオリな考慮事項に加えて、JAXB 以外のバインディングの使用をサポートする血と腸の経験はありますか? 私は CXF の観点から質問していますが、他のオプション (Castor など) が思い浮かんだ場合は、遠慮なく詳しく説明してください。

4

2 に答える 2

4

ゼロから始めてWSDLファーストWebサービスを作成する場合は、95%の時間(おそらくそれ以上)はJAXBを使用することを強くお勧めします。これは間違いなくCXFで最もよくテストされたデータバインディングであり、非常に優れたパフォーマンスを発揮します。

他のデータバインディングが入る場所は、通常、次の2つのケースのいずれかです。

1)Javaの最初のユースケースでは、コードをほとんどまたはまったく変更せずにWebサービスとして公開したいJavaで既に記述されているものがあります。Aegisは、JAXBよりも幅広いものを処理できるように設計されているため、ここに長所があります。ただし、コードを変更できる場合は、通常、JAXBアノテーションを追加することはそれほど難しくありません。あなたがほとんど普通の「豆」を持っているなら、それは大したことではありません。

2)特定のマッピングを使用する既存のアプリケーション。XMLBeans Bean(またはCXFの2.3-SNAPSHOTを使用している場合はSDO Bean、GSoCプロジェクトに従う場合はJiBX Bean)を期待している既存のアプリケーションがある場合、他のデータバインディングを使用すると、JAXBからそれらのオブジェクトモデルへの必要なマッピングを削除できます。 。

それが少し役立つことを願っています。

于 2010-09-03T17:43:49.407 に答える
3

JAXB は仕様であるため、 Metro (参照実装、MOXy (技術リーダー) など) など、複数の実装がある ことを思い出してください。

JAXB は、Java クラスまたは XML スキーマから使用できます。変更できないクラスがある場合、個々の JAXB 実装はそれを処理するための拡張機能を提供します。MOXy の外部化可能なメタデータを参照してください。

JAXB は、MTOM 添付ファイルを操作するように設計されています。添付ファイルのマーシャラー/アンマーシャラーを参照してください。

MOXy には、オブジェクトから XML へのバインディングを完全に制御できる XPath ベースのマッピングがあります。以下を参照してください。

于 2010-09-03T19:33:52.713 に答える