JAXB xjc ツールを使用した XML スキーマ・ファイルからの JAXB クラスの生成

Java Architecture for XML Binding (JAXB) xjc ツールを使用して、 XML スキーマ・ファイルを完全なアノテーションが付いた Java クラスにコンパイルします。

始める前に

XML スキーマ・ファイルを開発するか、または取得します。

このタスクについて

JAXB API およびツールを使用して、XML スキーマと Java クラスの間のマッピングを確立します。 XML スキーマは、XML 文書内のデータ・エレメントと関係を記述します。 データ・マッピングまたはバインディングが存在するようになったら、 XML 文書と Java オブジェクトとの間で双方向に変換できます。 XML 文書に保管されているデータには、XML データ構造を理解していなくてもアクセスすることができます。

既存の Web サービス記述言語 (WSDL) ファイルから開始するトップダウン開発により Web サービスを作成するには、wsimport ツールを使用して、WSDL ファイルから開始する場合の Java API for XML-Based Web Services (JAX-WS) アプリケーションの成果物を生成します。アプリケーションの Java 成果物が生成された後、JAXB スキーマ・コンパイラー xjc コマンド行ツールを使用して、XML スキーマ・ファイルから完全なアノテーションが付いた Java クラスを生成できます。 その結果のアノテーション付き Java クラスには、マーシャルおよびアンマーシャル用の XML を構文解析するために JAXB ランタイムが必要とするすべての情報が含まれています。 生成された JAXB クラスは、Java API for XML Web Services (JAX-WS) アプリケーション内で、 または XML データの処理用の他の Java アプリケーション内で使用できます。

ベスト・プラクティス ベスト・プラクティス: WebSphere® Application Server は、Java™ API for XML-Based Web Services (JAX-WS) および Java Architecture for XML Binding (JAXB) のツールを提供します。wsimportwsgenschemagen、および xjc コマンド行ツールは、WebSphere Application Server traditionalapp_server_root¥bin¥ ディレクトリーにあります。xjc コマンドおよび schemagen コマンド は、Liberty プロファイルの app_server_root¥jaxb¥bin¥ ディレクトリーにあります。 WebSphere Application Server および JDK が提供するツールによって生成される成果物は両方とも、同じレベルの仕様をサポートすることがあります。 一般的に、JDK ツールにより生成される成果物は、 その他の対応しているランタイム環境間で移植可能です。ただし、 WebSphere Application Server 環境内で シームレスな統合を実現して、WebSphere Application Server のみで サポートされる機能を利用するには、この製品で提供されるツールを使用するのがベスト・プラクティスです。JAX-WS および JAXB V2.2 ツールを 利用するには、アプリケーション・サーバーで提供され、 app_server_root¥bin¥ ディレクトリーにある ツールを使用します。bprac
サポートされる構成 サポートされる構成: 本製品は、JAXB 2.2 仕様をサポートしています。JAX-WS 2.2 では、データ・バインディングに JAXB 2.2 が必要です。sptcfg

コマンド行から xjc ツールを使用する以外にも、 この JAXB ツールを Ant ビルド環境内で起動することができます。 Ant ビルド環境内で com.sun.tools.xjc.XJCTask Ant タスクを使用して xjc スキーマ・コンパイラー・ツールを起動します。 この Ant タスクが正しく機能するようにするには、ws_ant スクリプトを使用して Ant を起動する必要があります。

トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): xjc Ant タスクを 使用する場合、target オプションの代わりに、destdir パラメーターを使用して 宛先ディレクトリーを指定する必要があります。 xjc Ant タスクを使用しているときに target オプションを指定すると、 エラーの原因になります。gotcha

手順

  1. JAXB スキーマ・コンパイラーの xjc コマンドを使用して、 JAXB のアノテーション付き Java クラスを生成します。 スキーマ・コンパイラーは、app_server_root¥bin¥ ディレクトリーにあります。 スキーマ・コンパイラーは、コンパイルに使用されたバインディング・オプションにより、 Java ソース・ファイルと Java プロパティー・ファイルを含むパッケージのセットを生成します。
  2. (オプション) カスタム・バインディング宣言を使用して、 デフォルトの JAXB マッピングを変更します。 XML スキーマ・ファイルまたは別個のバインディング・ファイルのいずれかにバインディング宣言を定義します。 xjc コマンドに -b オプションを使用して、 カスタム・バインディング・ファイルを受け渡すことができます。
  3. 生成済み JAXB オブジェクトをコンパイルします。 生成済み成果物をコンパイルするには、 Thin Client for JAX-WS with WebSphere Application Server をクラスパスに追加します。

タスクの結果

JAXB オブジェクトが生成されたので、生成済み JAXB を使用して Java アプリケーションを作成し、 生成済み JAXB クラスを介して XML コンテンツを操作できます。

以下の例は、既存の XML スキーマ・ファイルから開始する場合に、JAXB ツールが Java クラスをどのように生成するかを示しています。
  1. 以下の bookSchema.xsd スキーマ・ファイルを一時ディレクトリーにコピーします。
      <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                          
         <xsd:element name="CatalogData">                                                               
           <xsd:complexType >                                                                         
             <xsd:sequence>
               <xsd:element name="books" type="bookdata" minOccurs="0" 
    												maxOccurs="unbounded"/>    
             </xsd:sequence>
           </xsd:complexType>
         </xsd:element>
         <xsd:complexType name="bookdata">                                                              
           <xsd:sequence>
             <xsd:element name="author" type="xsd:string"/>                                         
             <xsd:element name="title" type="xsd:string"/>                                          
             <xsd:element name="genre" type="xsd:string"/>                                          
             <xsd:element name="price" type="xsd:float"/>                                           
             <xsd:element name="publish_date" type="xsd:dateTime"/>                                 
             <xsd:element name="description" type="xsd:string"/>                                    
           </xsd:sequence>
           <xsd:attribute name="id" type="xsd:string"/>                                               
         </xsd:complexType>
       </xsd:schema> 
  2. コマンド・プロンプトを開きます。
  3. スキーマ・ファイルがあるディレクトリーから、JAXB スキーマ・コンパイラーの xjc コマンドを実行します。 xjc スキーマ・コンパイラー・ツールは、 app_server_root¥bin¥ ディレクトリーにあります。
    [Windows]
    app_server_root\bin\xjc.bat bookSchema.xsd
    [Linux][AIX][HP-UX][Solaris]
    app_server_root/bin/xjc.sh bookSchema.xsd
    xjc コマンドを実行すると、以下の JAXB Java ファイルが生成されます。
    generated¥Bookdata.java
    generated¥CatalogdData.java
    generated¥ObjectFactory.java
  4. Java アプリケーション内の生成済み JAXB オブジェクトを使用して、生成済み JAXB クラスを介して XML コンテンツを操作します。

xjc コマンドについて詳しくは、 JAXB Reference implementation のドキュメンテーションを参照してください。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxbschema2java
ファイル名:twbs_jaxbschema2java.html