JAXB による WSDL の Java への結合
JAXB (Java Architecture for XML Binding API) を使用すると、Java プログラミング言語で書かれたアプリケーションから XML ドキュメントに簡単にアクセスできるようになります。このドキュメントでは、NetBeans IDE の JAXB に対するツールサポートの提供方法について説明します。主に、さまざまな種類の XML ドキュメントを Java クラスに変換するウィザードによって行われます。まず、ある WSDL ファイルから Java クラスを生成し、次にそのクラスに対して何らかの処理を行います。
このチュートリアルでは、次の 2 点を学びます。
IDE でウィザードを使用し、XML ドキュメントのスキーマを、そのスキーマに相当する一連の Java クラスに結合する方法。
IDE が提供する各種のツールを使用し、生成された Java クラスを簡単かつ効率的に使用する方法。
JAXB アーキテクチャーおよび JAXB そのものに関する詳細は、Java Web サービスのチュートリアル の「第 2 章: XML スキーマおよび Java クラスの結合 」および「第 3 章: JAXB の使用 」を参照してください。
目次
このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
Tomcat および GlassFish サーバーは、どちらも NetBeans IDE の Web および Java EE の配布とともにインストールできます。または、GlassFish サーバーのダウンロードページ か Apache Tomcat のダウンロードページ からダウンロードすることもできます。
XML ドキュメントからの Java オブジェクトの生成
この課題の目標は、プロジェクトを作成し、XML ドキュメントから Java オブジェクトを生成することです。
「ファイル」>「新規プロジェクト」を選択します。「カテゴリ」から「Java」を選択します。「プロジェクト」で「Java アプリケーション」を選択して、「次へ」をクリックします。
「プロジェクト名」に「JseSimpleClientReport 」と入力して「完了」をクリックします。「プロジェクト」ウィンドウに JseSimpleClientReport プロジェクトが表示されます。
「プロジェクト」ウィンドウで「JseSimpleClientReport 」ノードを右クリックし、「新規」>「その他」>「XML」>「JAXB 結合」を選択します。「次へ」をクリックします。「新規 JAXB 結合」ウィザードが表示されます。
このウィザードの設定は、次の目的のために使用されます。
結合名。 新しい JAXB 結合の名前を指定します。これは結合を識別するのに使用されます。
プロジェクト。 現在のプロジェクトの名前を表示します。
スキーマファイル。 作業対象のファイルは、ローカルまたはオンラインのどちらでも使用できます。
スキーマタイプ。 次の種類の XML ドキュメントがサポートされています。
XML スキーマ
Relax NG
Relax NG Compact
XML DTD
WSDL
パッケージ名。 Java オブジェクトの生成先となるパッケージを指定します。
コンパイラオプション。 『Java EE 5 チュートリアル』 で説明しているように、多くのコンパイラオプションが使用できます。ただし、JAXB ウィザードに関しては、次の項目だけが該当し、ウィザードのチェックボックスを使用して設定できます。
nv。 入力スキーマの厳密な妥当性検査を行いません。デフォルトでは、ソーススキーマの厳密な妥当性検査は、処理前に実行されます。これは結合コンパイラが何の妥当性検査も実行しない という意味ではありません。単に厳密でない妥当性検査を実行するという意味です。
読み取り専用。 強制的にコンパイラが、生成される Java ソースを読み取り専用に指定するようにします。デフォルトでは、コンパイラは、生成する Java ソースファイルを書き込み保護しません。
npa。 「**/package-info.java 」へのパッケージレベルの注釈の生成を無効にします。このスイッチを使用すると、生成されたコードが、別の生成されたクラスにこれらの注釈を取り込みます。
詳細。 進捗情報や警告など、コンパイラの出力を最大にします。
非表示。 進捗情報や警告など、コンパイラの出力を無効にします。
拡張を使用。 デフォルトでは、コンパイラは『JAXB 仕様』の「互換性」章で説明されているルールを厳密に実行します。またデフォルト (厳密) モードでは、この仕様で定義された結合カスタマイズだけを使用するように制限されます。このオプションにより、JAXB ベンダー拡張の使用が可能になります。
結合ファイルを使用。 1 つまたは複数の JAXB 結合カスタマイズファイルをインポートおよび編集できます。
カタログファイルを使用。 OASIS カタログファイルをインポートおよび編集できます。
「結合名」に「CreditReport 」と入力します。
「スキーマファイル」で「ローカルファイルシステムから選択」を選択します。「参照」をクリックし、このチュートリアルの開始時にダウンロードした WSDL ファイルを参照します。
「スキーマタイプ」ドロップダウンメニューで「WSDL」を選択します (IDE によって自動的に選択されている場合を除く)。画面は次のようになります。
注: WSDL スキーマのサポートは試験段階であり、WSDL スキーマを有効にするには -wsdl オプションを使用する必要があることを示す警告が表示される場合があります。この警告は無視してください。
「完了」をクリックします。
IDE は XML ドキュメントから Java オブジェクトを生成します。次の節では、IDE で Java オブジェクトを確認します。
JAXB ウィザードの出力の確認
この課題の目標は、NetBeans IDE のツールに慣れ、JAXB ウィザードの出力を処理することです。
プロジェクトが構築されるたびに IDE が再生成するほかのアーティファクトと同様、Java オブジェクトは build フォルダに生成されます。次のように「ファイル」ウィンドウを開き、生成された Java オブジェクトの場所に移動します。NetBeans IDE 6.7 より、これらの Java オブジェクトは「プロジェクト」ウィンドウの「生成されたソース」ノードにも表示されます。
次のように、「プロジェクト」ウィンドウでは、WSDL ファイルを格納している新しいノードも表示されます。「CreditReport」ノードを右クリックするとふたたびウィザードが開き、先ほど指定した設定を変更できます。
また、ウィザードによって、アプリケーションの JDK 5 用クラスパスに JAXB ライブラリが追加されています。JDK 6 の場合、JDK 自体が JAXB ライブラリを提供するため、「ライブラリ」ノードに新しいノードは追加されません。
ウィザードで設定を変更したとしても、次のようにすれば Java オブジェクトを再生成できます。
「WSDL」ファイルを右クリックし、「開く」を選択します。内容がエディタに表示されます。
XML ドキュメントで IDE が生成する内容について把握できたので、次はこれまで紹介したツールを使用して、生成した Java オブジェクトから何か実用的な処理をしてみます。
Java オブジェクトの使用
この課題の目標は、IDE が生成したファイルとコードで何か実用的な処理をすることです。生成した Java オブジェクトの 1 つに何か値を設定し、IDE の「出力」ウィンドウに整列化します。
「新規 Java アプリケーション」ウィザードで生成した Main クラスを開きます。次のように、生成されたルート JAXB クラスの 1 つである CreditReport を main メソッドの本文で宣言します。
public static void main(String[] args) {
CreditReport cr = new CreditReport();
}
警告アイコンが表示されます。マウスをこのアイコンの上に移動すると、IDE が CreditReport クラスを見つけられないことを示すツールチップが表示されます。警告アイコンを左クリックし、IDE でインポート文を追加するオプションを選択します。
main メソッドの本文で「cr」と入力します。IDE によって、この JAXB アーティファクトに関連するコード補完が行われます (システムによっては、Ctrl- スペースキーを押す必要があります)。
次のように、いくつかの値を JAXB クラスで設定します (java.math.BigInteger のインポート文を追加)。
cr.setFirstName("Butros Butros");
cr.setLastName("Gali");
cr.setDob("1930/05/30");
cr.setScore("900");
cr.setSsn("123-45-6789");
cr.setLatestAddress1("2500 Some Ave");
cr.setLatestAddress2("Suite 5000");
cr.setCity("New York");
cr.setState("New York");
cr.setCountry("USA");
cr.setPostalCode("NY 12345-6789");
cr.setCurrency("USD");
cr.setLiability(BigInteger.valueOf(2000000));
cr.setLiquidAssests(BigInteger.valueOf(3000000));
cr.setImmovableAssests(BigInteger.valueOf(5000000));
main メソッドの本文で、挿入した値の下に「jaxbm」という文字を入力します。これは「JAXB Marshalling」の頭文字です。画面は次のようになります。
入力した文字は Java プログラミング言語の文法に従っていないため、赤い下線が表示されます。ただし、次の手順で使用する NetBeans のコードテンプレートになります。これに関連のあるコードテンプレートは「jaxbu」で、「JAXB Unmarshalling」を表します。
Tab キーを押します。
「jaxbm」の文字が拡張され、次のようなコードスニペットが表示されます。
try {
javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cr.getClass().getPackage().getName());
javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(cr, System.out);
} catch (javax.xml.bind.JAXBException ex) {
// XXXTODO Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
}
警告: コードテンプレートの拡張は慎重に行ってください。スペースを追加してからタブキーを押したり、誤入力したフレーズを修正してからタブキーを押したりすることはできません。タブキーを押すことができるのは、フレーズを正しく入力した場合のみです。誤入力をした場合は、入力していたフレーズを削除し、フレーズ全体を入力し直してください。
プロジェクトノードを右クリックし、「実行」を選択してアプリケーションを実行します。出力ウィンドウに、次のように表示されます。
関連項目
NetBeans IDE を使用した Java EE アプリケーションの開発方法についての詳細は、次のリソースを参照してください。
nbj2ee
@
netbeans.org
メーリングリスト に登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。