第39章 JAXBContext オブジェクトの使用


概要

JAXBContext オブジェクトにより、Apache CXF のランタイムが XML 要素と Java オブジェクト間でデータを変換できます。未加工の XML メッセージを扱うコンシューマーを実装する場合、アプリケーション開発者はメッセージハンドラーで JAXB オブジェクトを使用する JAXBContext オブジェクトをインスタンス化する必要があります。

概要

JAXBContext オブジェクトは、ランタイムで使用される低レベルオブジェクトです。これにより、ランタイムは XML 要素とそれに対応する Java 表現の間で変換できます。通常、アプリケーション開発者は JAXBContext オブジェクトを操作する必要はありません。XML データのマーシャリングとアンマーシャリングは、通常、JAX-WS アプリケーションのトランスポート層とバインディング層によって処理されます。

ただし、アプリケーションが XML メッセージのコンテンツを直接操作する必要がある場合があります。これらの 2 つの例では:

利用可能な 2 つの JAXBContext.newInstance() メソッドのいずれかを使用して JAXBContext オブジェクトをインスタンス化する必要があります。

ベストプラクティス

JAXBContext オブジェクトのインスタンス化には、大量のリソースが必要です。アプリケーションが作成するインスタンスをできるだけ少なくすることをお勧めします。これを実行する 1 つの方法は、アプリケーションが使用するすべての JAXB オブジェクトを管理できる単一の JAXBContext オブジェクトを作成し、アプリケーションの可能な限り多数の部分で共有することです。

JAXBContext オブジェクトはスレッドセーフです。

オブジェクトファクトリーを使用した JAXBContext オブジェクトの取得

JAXBContext クラスは、例39.1「クラスを使用した JAXB コンテキストの取得」に示される、JAXB オブジェクトを実装するクラスの一覧を取る newInstance() メソッドを提供します。

例39.1 クラスを使用した JAXB コンテキストの取得

staticJAXBContextnewInstanceClass…​classesToBeBoundJAXBException

返される JAXBObject オブジェクトは、メソッドに渡されるクラスによって実装される JAXB オブジェクトのデータをマーシャリングおよびアンマーシャリングできます。また、メソッドに渡されたクラスのいずれかから静的に参照されているクラスを操作することもできます。

アプリケーションによって使用されるすべての JAXB クラスの名前を newInstance() メソッドに渡すことはできますが、効率的ではありません。同じ目標を達成するためのより効率的な方法は、アプリケーション用に生成されたオブジェクトファクトリーまたはオブジェクトファクトリーを渡すことです。結果の JAXBContext オブジェクトは、指定されたオブジェクトファクトリーがインスタンス化できる JAXB クラスを管理できます。

パッケージ名を使用して JAXBContext オブジェクトを取得する

JAXBContext クラスは、例39.2「クラスを使用した JAXB コンテキストの取得」に示される、パッケージ名のコロン (:) 区切りリストを取る newInstance() メソッドを提供します。指定されたパッケージには、XML スキーマから派生した JAXB オブジェクトが含まれている必要があります。

例39.2 クラスを使用した JAXB コンテキストの取得

staticJAXBContextnewInstanceStringcontextPathJAXBException

返される JAXBContext オブジェクトは、指定したパッケージのクラスによって実装されるすべての JAXB オブジェクトのデータをマーシャリングおよびアンマーシャリングできます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.