Workshop には、XML を Java オブジェクトにバインドするためのオープン ソース技術である XMLBeans が含まれています。XMLBeans では、バインドされた XML にアクセスする方法が複数提供されますが、Workshop での主な手法は、WSDL および XSD (スキーマ) ファイルをコンパイルして Java タイプを生成してから、生成された Java タイプに XML をバインドする方法です。
このトピックには次の情報が含まれます。
プロジェクトで使用する Java タイプのスキーマのコンパイル
XMLBeans ビルダでの Java タイプの自動生成の有効化
スキーマから生成された Java タイプを格納する JAR ファイルの生成
コンパイル時の XMLBeans タイプおよびパッケージのネーミングの制御
注意 : XMLBeans は、Apache のオープン ソース技術の 1 つです。XMLBeans の詳細およびドキュメントについては、Apache XMLBeans の Web サイトを参照してください。
Workshop では、特に次の点において XMLBeans が使いやすい技術であることが分かります。
プロジェクトのスキーマから XMLBeans によって生成されたタイプを使用するには、XMLBeans ビルダを使ったスキーマの自動コンパイルを使用する方法か、生成されたタイプを格納する JAR ファイルを作成する方法があります。
重要 : 同じプロジェクトの同じスキーマでは、これらの手法の両方を使用しないでください。両方を使用すると、プロジェクトのクラスパスに、基本的に同一の生成されたタイプが 2 セットできてしまいます。片方の手法から始める場合、もう片方を「取り消し」てから手法を切り替えるようにしてください。たとえば、XMLBeans ビルダ ファセットを追加している場合、タイプ JAR を生成する前にそのファセットを削除 (または、スキーマのソース パスからそのスキーマを削除) してください。逆に、XMLBeans ビルダ ファセットを追加する前に、生成されたタイプ JAR をプロジェクトのクラスパスから削除する必要があります。
XMLBeans ビルダ ファセットを削除すると、ビルダが生成した Java タイプが削除されます。
XMLBeans ビルダを使用すると、WSDL および XSD ファイルから Java タイプを自動的に生成できます。この方法では、WSDL またはスキーマに変更を加えると、更新されたタイプが生成されます (このファセットは、WebLogic Workshop バージョン 8.1 のスキーマ プロジェクト タイプによって提供される機能に代わるものです)。
ビルダは、次のことを行うプロジェクト ファセットです。
自動的に生成されたタイプから JAR ファイルを作成することが可能です。
生成されたタイプで JAR ファイルを作成したら、その JAR ファイルをプロジェクトのクラスパスに配置できます。タイプの生成元となる WSDL またはスキーマに対する変更を見込まない場合、この方法が適している場合があります。XMLBeans ビルダではなく、タイプ JAR を使用することによって、ビルド時に IDE がスキーマをコンパイルする際に発生するオーバーヘッドを回避することもできます。ただし、WSDL またはスキーマ ファイルが変更される場合は、JAR ファイルを手動で再作成する必要があります。
プロジェクトに追加可能なファセットである XMLBeans ビルダを使用して、スキーマを自動コンパイルすることができます。XMLBeans ビルダは Eclipse の増分プロジェクト ビルダです。このビルダは Java ビルダに似ており、WTP のファセット指定プロジェクトで (XMLBeans ビルダ ファセットを介して) 有効にしたり、プレーンな Java プロジェクトで (プロジェクトのプロパティの [XMLBean] ページにある [XMLBeans Builder を有効化] チェック ボックスをオンにすることによって) 有効にしたりすることができます。
XMLBeans ビルダ ファセットを有効にすると、プロジェクトに schemas ディレクトリが作成され (このディレクトリの名前は変更でき、後からディレクトリを追加したり、組み込みまたは除外フィルタを指定できます)、このディレクトリはスキーマのソース コンパイル パスに追加されます。このディレクトリに配置した WSDL および XSD ファイルは、Java タイプに (プロジェクトのビルド時に) 自動的にコンパイルされ、この Java タイプはプロジェクトのクラスパスに配置されます。スキーマのコンパイル パスは、「スキーマのコンパイル ソース パスの設定」で説明するように変更できます (XMLBeans ビルダに関する重要な情報については、前述の「重要」を参照してください)。
WTP ファセット指定プロジェクト (WebLogic EJB プロジェクト、動的な Web プロジェクト、およびユーティリティ プロジェクト) の場合、以下の 2 つのいずれかの方法で XMLBeans ビルダを追加できます。
どちらの場合でも、ファセットを追加するユーザ インタフェースはほぼ同じです。以下に、含まれる手順を示します。
プレーンな Java プロジェクトの場合、プロジェクトのプロパティ ダイアログの [XMLBean] ページから XMLBeans ビルダを有効にできます。
[プロジェクト・ファセット] において、[XMLBean] ノードを展開して [XMLBeans Builder] チェック ボックスをオンにすることによって、XMLBeans ビルダ ファセットを選択します (ファセットを既存のプロジェクトに追加する際にも、以下のユーザ インタフェースが使用されます)。
プロジェクト ファセットの概要については、「プロジェクト ファセットの設定」を参照してください。
以下のオプションがあります。
[XMLBean ライブラリ] (EAR プロジェクト以外のすべてのプロジェクト タイプに対してデフォルトでオンになる)
XMLBeans Builder
[XMLBeans Builder] ファセットをオンにしたら、[次へ] をクリックします。
[XMLBeans Builder] ファセットをオンにして [次へ] をクリックしたら、Java タイプの生成に関連するプロパティを設定できる 2 つのタブが表示されます。これらのタブには、スキーマのコンパイル時に生成されるソース ファイルおよびバイナリ ファイルの場所を設定する、および XMLBeans スキーマのコンパイル オプションを設定するためのユーザ インタフェースが含まれます。
[生成されたファイルの場所] タブでは、WSDL または XSD ファイルから生成される JAVA および CLASS ファイルの場所を設定できます (XMLBeans は、内部的に使用する XSB ファイルを含む、その他の種類のファイルも生成します)。一般的に、これらのパスは変更しません (このユーザ インタフェースは、XMLBeans のプロジェクト プロパティと同様に、既存のプロジェクトにファセットを追加する際にも使用します)。
生成されるソース ファイルのルートのボックスには、XMLBeans によって生成された Java ソース ファイルを格納するディレクトリの名前が入ります。これらの生成ソース ファイルは、プロジェクトのその他のコンパイルされた生成物とともに、プロジェクトの標準の Java 出力フォルダ (build および classes など) にコンパイルされます。デフォルトは「.xbean_src」です。
生成されるバイナリ ファイルのルートのボックスには、XMLBeans によって生成されたその他のファイルを格納するディレクトリの名前が入ります。このディレクトリはプロジェクトのクラスパスに追加され、依存プロジェクトにエクスポートされます。バイナリ ファイルのデフォルト ルート ディレクトリは「.xbean_bin」です。
[XMLBean オプション] タブをクリックし、スキーマのコンパイル オプションを設定します。
[XMLBean オプション] タブでは、スキーマのコンパイルに特有のオプションを設定できます。ここに表示されているオプションの多くは、IDE で使用されるオープン ソースの XMLBeans スキーマ コンパイラによってエクスポーズされているため、Apache XMLBeans の Web サイトにある xmlbean Ant タスクに関連したドキュメントに記述されています。
これらの設定およびその他の設定は、ビルダを追加した後でも、プロジェクトのプロパティ ダイアログで変更できます。プロジェクトのプロパティの [XMLBean] カテゴリには、生成されたファイルの場所を設定するためのタブと、ビルダを追加する際に設定する XMLBeans オプションのタブがあります (このユーザ インタフェースは、XMLBeans のプロジェクト プロパティと同様に、既存のプロジェクトにファセットを追加する際にも使用します)。
以下の表では、これらのオプションについて説明します (一部の Ant タスク属性のセマンティクスは、IDE ユーザ インタフェースのオプションとは若干異なる点に注意してください)。
![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
|
![]() |
|||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
WSDL および XSD ファイルを Java タイプにコンパイルする際、IDE では、コンパイルするファイルのスキーマ ソース パス上のディレクトリが確認されます。このパスは、XMLBeans ビルダ ファセットを追加すると自動的に設定されますが、以下の図に示す [ソース パス] タブで変更できます。これは、JAVA ファイルのコンパイル用ソース パスに似ています。実際、コンパイルする WSDL および XSD ファイルの場所を特定するために、それらの JAVA ソース パス自体を使うように指定できます。
自動スキーマ コンパイルが不要な場合は、XMLBean ビルダ ファセットを無効化できます。この手順は、WTP ファセット指定プロジェクトと Java プロジェクトでは異なります。
スキーマから生成された Java タイプを格納する JAR ファイルが必要な場合、以下に示す 2 つのうち、いずれかの方法に従います。2 つの方法の結果は若干異なるため、どの JAR ファイルを使用しているかを覚えておく必要があります。
必要に応じて IDE のメニュー コマンドを使用して、Java タイプを格納する JAR ファイルを生成できます。これは、タイプ JAR の生成と呼ばれています。これは、スキーマからの Java タイプの自動コンパイルを使用していない場合に有効な場合があります (自動スキーマ コンパイルで生成したタイプから JAR ファイルを作成する手順と対比してください)。
注意 : タイプ JAR に関する重要な情報については、前述の「重要」を参照してください。
以下の手順に従うと、生成された Java タイプの他に、XSDCONFIG ファイルを含む、必要なその他の XMLBeans 関連のアーティファクトを含む JAR ファイルを作成できます。この方法で作成した JAR ファイルでは、XMLBeans ビルダの出力が得られます。
スキーマのコンパイルに関してプロジェクトをどのように設定したかに応じて、生成された Java タイプを IDE 内で簡単に発見できない場合があります。たとえば、XMLBeans ビルダ ファセットを使用して自動コンパイルを有効にしている場合、生成された Java タイプは、[生成されたファイルの場所] で指定した場所に配置されます。この場所は、デフォルトでは [パッケージ・エクスプローラ] ビューや [プロジェクト・エクスプローラ] ビューでは確認できません。
XMLBeans Builder の出力 - スキーマのコンパイル時に生成された Java ソース ファイルおよびバイナリ ファイルの場所を特定するには、IDE の [ナビゲーター] ビューを使用します。次の図は、[ナビゲーター] ビューに表示されている、生成されたファイルのデフォルトのパスを示しています。また、コンパイルされた CLASS ファイルは、build および classes ディレクトリに、プロジェクトのコードから生成された他のクラスと一緒に配置される点にも注目してください。
タイプ JAR の出力 - 他の JAR ファイルと同様、JAR の内容を参照するには、[パッケージ・エクスプローラ] または [プロジェクト・エクスプローラ] ビューを使用します。次の図にこの概観を示します。
WSDL またはスキーマを Java タイプにコンパイルする際、XMLBeans ビルダは、生成された Java タイプおよび Java パッケージのネーミング時に、デフォルトでスキーマ タイプの名前と URI をそれぞれ使おうとします。生成された Java タイプおよびパッケージの名前をカスタマイズするには、スキーマ タイプの名前またはネームスペースの URL を、指定した Java タイプの名前またはパッケージの名前にマップする XSDCONFIG ファイルを使用します。このファイルは、コンパイルしている WSDL および XSD ファイルを格納するディレクトリに配置します。
この方法でタイプ名を制御する場合、対応する生成された Java タイプ名を指定するだけで、基底のスキーマ タイプの名前は変更せずに済みます。コンパイルしたタイプに独自の名前を選択できる機能は、コントロール タイプの名前の長さ、ロケール、大文字と小文字の区別などを制御する場合に役立ちます。
注意 : Windows オペレーティング システムではファイル パスの長さが制限されているため (256 文字)、生成されたタイプが非常に深いパッケージ階層内でネストされているスキーマはコンパイルできない可能性があります。この場合、特定のクラスが見つからなかったというエラー メッセージが表示される可能性があります。この制限を回避するには、XSDCONFIG ファイルを使用することにより生成されるパッケージの命名を制御して、階層が深くならないように、パッケージ名が短くなるようにします。
以下に示す例では、PURH_ORDER スキーマ要素と CUST スキーマ タイプの名前を、Java タイプでは PurchaseOrder および Customer としています。
これは、スキーマのコンパイル ソース パス (デフォルトでは schemas ディレクトリ) 上のディレクトリを指定します。
<!-- XSDCONFIG ファイルは、http://xml.apache.org/xmlbeans/2004/02/xbean/config ネームスペースのルートの「config」要素を持つ必要がある。また、 スキーマのタイプの修飾に使用するネームスペースを宣言する必要がある (ここでは、 pol プレフィックスに対応するネームスペース)。--> <xb:config xmlns:pol="http://openuri.org/easypoLocal" xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config"> <!-- "namespace" 要素を使用して、ネームスペースを生成対象の Java パッケージ名にマッピングする。--> <xb:namespace uri="http://openuri.org/easypoLocal"> <xb:package>com.myco.potracker</xb:package> </xb:namespace> <!-- "qname" 要素を使用して、スキーマ タイプ名を生成済みの Java タイプ名に マッピングする。以下の例では、name 属性の値は XML 要素の名前、javaname 属性の値は生成対象の Java タイプになる。--> <xb:qname name="pol:CUST" javaname="Customer"/> <xb:qname name="pol:PURCH_ORDER" javaname="PurchaseOrder"/> </xb:config>
スキーマ プロジェクトをビルドする際、コンパイラは XSDCONFIG ファイルを使用して生成済みの Java タイプの名前を定義します。
XMLBeans では、スキーマのコンパイル時に生成されたインタフェースがプロジェクトのインタフェースを拡張するメカニズムが提供されます。同様に、生成された実装クラスは、ハンドラ クラスを介して拡張されたインタフェース メソッドを実装します。拡張するインタフェース、および XSDCONFIG ファイルで使用するハンドラ クラスを指定します。インタフェースの拡張メカニズムの詳細については、Xmlbeans Wiki を参照してください。
インタフェースの拡張メカニズムを使用している場合、IDE では、そのインタフェースおよびハンドラ クラスの場所を把握する必要があります。これには、以下のいずれかの方法があります。