IDE での XMLBeans の使用

Workshop には、XML を Java オブジェクトにバインドするためのオープン ソース技術である XMLBeans が含まれています。XMLBeans では、バインドされた XML にアクセスする方法が複数提供されますが、Workshop での主な手法は、WSDL および XSD (スキーマ) ファイルをコンパイルして Java タイプを生成してから、生成された Java タイプに XML をバインドする方法です。

このトピックには次の情報が含まれます。

プロジェクトで使用する Java タイプのスキーマのコンパイル

XMLBeans ビルダでの Java タイプの自動生成の有効化

自動スキーマ コンパイルの無効化

スキーマから生成された Java タイプを格納する JAR ファイルの生成

生成された Java タイプの場所の特定

コンパイル時の XMLBeans タイプおよびパッケージのネーミングの制御

インタフェースの拡張メカニズムのサポート

注意 : XMLBeans は、Apache のオープン ソース技術の 1 つです。XMLBeans の詳細およびドキュメントについては、Apache XMLBeans の Web サイトを参照してください。

Workshop では、特に次の点において XMLBeans が使いやすい技術であることが分かります。

プロジェクトで使用する Java タイプのスキーマのコンパイル

プロジェクトのスキーマから XMLBeans によって生成されたタイプを使用するには、XMLBeans ビルダを使ったスキーマの自動コンパイルを使用する方法か、生成されたタイプを格納する JAR ファイルを作成する方法があります。

重要 : 同じプロジェクトの同じスキーマでは、これらの手法の両方を使用しないでください。両方を使用すると、プロジェクトのクラスパスに、基本的に同一の生成されたタイプが 2 セットできてしまいます。片方の手法から始める場合、もう片方を「取り消し」てから手法を切り替えるようにしてください。たとえば、XMLBeans ビルダ ファセットを追加している場合、タイプ JAR を生成する前にそのファセットを削除 (または、スキーマのソース パスからそのスキーマを削除) してください。逆に、XMLBeans ビルダ ファセットを追加する前に、生成されたタイプ JAR をプロジェクトのクラスパスから削除する必要があります。

XMLBeans ビルダ ファセットを削除すると、ビルダが生成した Java タイプが削除されます。

XMLBeans Builder

XMLBeans ビルダを使用すると、WSDL および XSD ファイルから Java タイプを自動的に生成できます。この方法では、WSDL またはスキーマに変更を加えると、更新されたタイプが生成されます (このファセットは、WebLogic Workshop バージョン 8.1 のスキーマ プロジェクト タイプによって提供される機能に代わるものです)。

ビルダは、次のことを行うプロジェクト ファセットです。

  • WSDL およびスキーマの指定されたディレクトリを検証する。
  • ファイルに記述されたスキーマ タイプをコンパイルすることによって Java タイプを生成する。
  • プロジェクト クラスパスに生成されたタイプを配置する。生成されたタイプが配置される場所については、「生成された Java タイプの場所の特定」を参照してください。
  • 自動的に生成されたタイプから JAR ファイルを作成することが可能です。

    タイプ JAR

    生成されたタイプで JAR ファイルを作成したら、その JAR ファイルをプロジェクトのクラスパスに配置できます。タイプの生成元となる WSDL またはスキーマに対する変更を見込まない場合、この方法が適している場合があります。XMLBeans ビルダではなく、タイプ JAR を使用することによって、ビルド時に IDE がスキーマをコンパイルする際に発生するオーバーヘッドを回避することもできます。ただし、WSDL またはスキーマ ファイルが変更される場合は、JAR ファイルを手動で再作成する必要があります。

    XMLBeans ビルダでの Java タイプの自動生成の有効化

    プロジェクトに追加可能なファセットである XMLBeans ビルダを使用して、スキーマを自動コンパイルすることができます。XMLBeans ビルダは Eclipse の増分プロジェクト ビルダです。このビルダは Java ビルダに似ており、WTP のファセット指定プロジェクトで (XMLBeans ビルダ ファセットを介して) 有効にしたり、プレーンな Java プロジェクトで (プロジェクトのプロパティの [XMLBean] ページにある [XMLBeans Builder を有効化] チェック ボックスをオンにすることによって) 有効にしたりすることができます。

    XMLBeans ビルダ ファセットを有効にすると、プロジェクトに schemas ディレクトリが作成され (このディレクトリの名前は変更でき、後からディレクトリを追加したり、組み込みまたは除外フィルタを指定できます)、このディレクトリはスキーマのソース コンパイル パスに追加されます。このディレクトリに配置した WSDL および XSD ファイルは、Java タイプに (プロジェクトのビルド時に) 自動的にコンパイルされ、この Java タイプはプロジェクトのクラスパスに配置されます。スキーマのコンパイル パスは、「スキーマのコンパイル ソース パスの設定」で説明するように変更できます (XMLBeans ビルダに関する重要な情報については、前述の「重要」を参照してください)。

    WTP ファセット指定プロジェクト (WebLogic EJB プロジェクト、動的な Web プロジェクト、およびユーティリティ プロジェクト) の場合、以下の 2 つのいずれかの方法で XMLBeans ビルダを追加できます。

    どちらの場合でも、ファセットを追加するユーザ インタフェースはほぼ同じです。以下に、含まれる手順を示します。

    1. XMLBeans ビルダ ファセットの追加
    2. 生成されたファイルの場所の設定
    3. XMLBeans のオプションの設定
    4. スキーマのコンパイル ソース パスの設定

    プレーンな Java プロジェクトの場合、プロジェクトのプロパティ ダイアログの [XMLBean] ページから XMLBeans ビルダを有効にできます。

    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 オプション] タブをクリックし、スキーマのコンパイル オプションを設定します。

    XMLBeans オプションの設定

    [XMLBean オプション] タブでは、スキーマのコンパイルに特有のオプションを設定できます。ここに表示されているオプションの多くは、IDE で使用されるオープン ソースの XMLBeans スキーマ コンパイラによってエクスポーズされているため、Apache XMLBeans の Web サイトにある xmlbean Ant タスクに関連したドキュメントに記述されています。

    これらの設定およびその他の設定は、ビルダを追加した後でも、プロジェクトのプロパティ ダイアログで変更できます。プロジェクトのプロパティの [XMLBean] カテゴリには、生成されたファイルの場所を設定するためのタブと、ビルダを追加する際に設定する XMLBeans オプションのタブがあります (このユーザ インタフェースは、XMLBeans のプロジェクト プロパティと同様に、既存のプロジェクトにファセットを追加する際にも使用します)。

    以下の表では、これらのオプションについて説明します (一部の Ant タスク属性のセマンティクスは、IDE ユーザ インタフェースのオプションとは若干異なる点に注意してください)。

    XMLBean オプション 説明 対応する Ant タスク属性
    [スキーマ タイプ システム名] スキーマ タイプ システムの名前 (デフォルトは <projectname>TypeSystem)。 typesystemname
    [検証スキーマ] コンパイル時にスキーマを検証する場合は、このチェック ボックスをオンにする。

    novdoc
    [URI 解決] include/import 宣言の解決を決定する。 なし
    [デフォルト XMLBean 解決]
    EntityResolver が提供されず、ネットワーク URL ダウンロードが無効化される。 download 属性の false に類似
    [ネットワーク URL ダウンロードを使用したデフォルト XMLBean 解決]
    ネットワーク URL ダウンロード フラグが有効化された、デフォルト XMLBean 解決 (EntityResolver は提供されない)。 download 属性の true に類似
    [WTP 解決]
    WTP URIResolver に委託される EntityResolver が提供される (XML カタログとインターネット キャッシュを検索する)。 download 属性の false に類似
    [生成されたソースの Java バージョン] 生成された Java ソースのバージョン互換性を決定する。 javasource
    [ユニークなパーティクル属性ルールを適用] ユニークなパーティクル属性ルールを適用する (すなわち、choice および all の両方においてパーティクルの重複がないか、隣接項目を検証する) かどうかを決定する。 noupa
    [パーティクルの有効制限ルールの適用] パーティクルの有効制限ルールを適用する (すなわち、あるパーティクルを、別のパーティクルの制限として認める) かどうかを決定する。 nopvr
    [アノテーションをスキップ] スキーマの <annotation> 要素をスキップするかどうかを決定する。 noann
    [XMLBean コンパイル用のクラスパス内にプロジェクト クラスパス エントリを含めてください] オンにした場合、プロジェクト クラスパスのエントリを含むクラスパスを使用してコンパイルおよび xsdconfig 処理が行われる。つまり、このクラスパスに対してプリコンパイルされるスキーマ タイプは、コンパイル時に可視となり、クラスパス上の Java クラスは、インタフェースの拡張処理で可視となる。 直接対応する属性はない
    [重複したスキーマ タイプを無視するネームスペース] 重複した定義が無視される 1 つまたは複数のネームスペースのリスト。 ignoreDuplicatesInNamespaces

    スキーマのコンパイル ソース パスの設定

    WSDL および XSD ファイルを Java タイプにコンパイルする際、IDE では、コンパイルするファイルのスキーマ ソース パス上のディレクトリが確認されます。このパスは、XMLBeans ビルダ ファセットを追加すると自動的に設定されますが、以下の図に示す [ソース パス] タブで変更できます。これは、JAVA ファイルのコンパイル用ソース パスに似ています。実際、コンパイルする WSDL および XSD ファイルの場所を特定するために、それらの JAVA ソース パス自体を使うように指定できます。

    自動スキーマ コンパイルの無効化

    自動スキーマ コンパイルが不要な場合は、XMLBean ビルダ ファセットを無効化できます。この手順は、WTP ファセット指定プロジェクトと Java プロジェクトでは異なります。

     

    スキーマから生成された Java タイプを格納する JAR ファイルの生成

    スキーマから生成された Java タイプを格納する JAR ファイルが必要な場合、以下に示す 2 つのうち、いずれかの方法に従います。2 つの方法の結果は若干異なるため、どの JAR ファイルを使用しているかを覚えておく必要があります。

    手動で生成した Java タイプからの JAR ファイルの作成

    必要に応じて IDE のメニュー コマンドを使用して、Java タイプを格納する JAR ファイルを生成できます。これは、タイプ JAR の生成と呼ばれています。これは、スキーマからの Java タイプの自動コンパイルを使用していない場合に有効な場合があります (自動スキーマ コンパイルで生成したタイプから JAR ファイルを作成する手順と対比してください)。

    注意 : タイプ JAR に関する重要な情報については、前述の「重要」を参照してください。

    1. [プロジェクト・エクスプローラ] で、JAR ファイルにパッケージ化する生成された Java タイプの WSDL または XSD ファイルを右クリックします。次に、[Web サービス|タイプ JAR ファイルの生成] を選択します。
    2. [タイプ JAR ファイル生成ウィザード] ダイアログの [タイプ ファミリ] ボックスで、[Apache XmlBean] が選択されていることを確認し、[次へ] をクリックします。
    3. 作成している JAR ファイルの親フォルダを選択し、[ファイル名] ボックスに JAR ファイルの名前を入力して [終了] をクリックします。

    自動的に生成されたタイプからの JAR の作成

    以下の手順に従うと、生成された Java タイプの他に、XSDCONFIG ファイルを含む、必要なその他の XMLBeans 関連のアーティファクトを含む JAR ファイルを作成できます。この方法で作成した JAR ファイルでは、XMLBeans ビルダの出力が得られます。

    1. プロジェクトを右クリックして [エクスポート] を選択します。
    2. [エクスポート] ダイアログの [エクスポート先の選択] の下で、[JAR ファイル] を選択してから [次へ] をクリックします。
    3. [JAR エクスポート] ダイアログの [エクスポートするリソースの選択] の下で、[.xbean_bin] と [build] 以外のディレクトリをオフにします (プロジェクト ルートの下のさまざまな Eclipse メタデータ ファイルを確実にオフにしてください)。これらは、デプロイメント用の JAR のビルドに使用されるファイルです。
    4. [生成されたクラス・ファイルとリソースをエクスポート] を確実にオフにします。
    5. [検査済みプロジェクトの出力フォルダーをすべてエクスポート] と [Java ソース・ファイルとリソースをエクスポート] を確実にオンにします。
    6. [参照] ボタンをクリックして、生成された JAR の名前および場所を指定します。
    7. [ディレクトリー・エントリーの追加] をオンにします (xmlbeans Ant タスクによって作成された JAR ファイルと一致するように)。
    8. [終了] をクリックします。

    生成された Java タイプの場所の特定

    スキーマのコンパイルに関してプロジェクトをどのように設定したかに応じて、生成された Java タイプを IDE 内で簡単に発見できない場合があります。たとえば、XMLBeans ビルダ ファセットを使用して自動コンパイルを有効にしている場合、生成された Java タイプは、[生成されたファイルの場所] で指定した場所に配置されます。この場所は、デフォルトでは [パッケージ・エクスプローラ] ビューや [プロジェクト・エクスプローラ] ビューでは確認できません。

    XMLBeans Builder の出力 - スキーマのコンパイル時に生成された Java ソース ファイルおよびバイナリ ファイルの場所を特定するには、IDE の [ナビゲーター] ビューを使用します。次の図は、[ナビゲーター] ビューに表示されている、生成されたファイルのデフォルトのパスを示しています。また、コンパイルされた CLASS ファイルは、build および classes ディレクトリに、プロジェクトのコードから生成された他のクラスと一緒に配置される点にも注目してください。

    タイプ JAR の出力 - 他の JAR ファイルと同様、JAR の内容を参照するには、[パッケージ・エクスプローラ] または [プロジェクト・エクスプローラ] ビューを使用します。次の図にこの概観を示します。

    コンパイル時の XMLBeans タイプおよびパッケージのネーミングの制御

    WSDL またはスキーマを Java タイプにコンパイルする際、XMLBeans ビルダは、生成された Java タイプおよび Java パッケージのネーミング時に、デフォルトでスキーマ タイプの名前と URI をそれぞれ使おうとします。生成された Java タイプおよびパッケージの名前をカスタマイズするには、スキーマ タイプの名前またはネームスペースの URL を、指定した Java タイプの名前またはパッケージの名前にマップする XSDCONFIG ファイルを使用します。このファイルは、コンパイルしている WSDL および XSD ファイルを格納するディレクトリに配置します。

    この方法でタイプ名を制御する場合、対応する生成された Java タイプ名を指定するだけで、基底のスキーマ タイプの名前は変更せずに済みます。コンパイルしたタイプに独自の名前を選択できる機能は、コントロール タイプの名前の長さ、ロケール、大文字と小文字の区別などを制御する場合に役立ちます。

    注意 : Windows オペレーティング システムではファイル パスの長さが制限されているため (256 文字)、生成されたタイプが非常に深いパッケージ階層内でネストされているスキーマはコンパイルできない可能性があります。この場合、特定のクラスが見つからなかったというエラー メッセージが表示される可能性があります。この制限を回避するには、XSDCONFIG ファイルを使用することにより生成されるパッケージの命名を制御して、階層が深くならないように、パッケージ名が短くなるようにします。

    コンパイル時にタイプのネーミングを制御するには

    1. 要素および属性も含め、スキーマ内のタイプごとに名前を指定します。

      以下に示す例では、PURH_ORDER スキーマ要素と CUST スキーマ タイプの名前を、Java タイプでは PurchaseOrder および Customer としています。

    2. 新しい XSDCONFIG ファイルをプロジェクトに追加します。
      1. 生成された Java タイプにコンパイルされる WSDL および XSD ファイルを格納するディレクトリを右クリックしてから、[新規ファイル] を選択します。

        これは、スキーマのコンパイル ソース パス (デフォルトでは schemas ディレクトリ) 上のディレクトリを指定します。

      2. [新規ファイル] ダイアログの [ファイル名] ボックスに、拡張子を XSDCONFIG とした XSDCONFIG ファイルの名前を入力してから、[終了] をクリックします。
      3. 表示された空のウィンドウに、XSDCONFIG ファイルの内容を入力します。たとえば、以下の例を使用する場合、<namespace>、<package>、および <qname> 要素を、ユーザのニーズを満たす値と置き換えます。
        <!-- 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 では、そのインタフェースおよびハンドラ クラスの場所を把握する必要があります。これには、以下のいずれかの方法があります。


    さらにヘルプが必要ですか。質問は workshop ニュース グループまでお寄せください。