WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化
             New or updated topic for this feature pack

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

Java Architecture for XML Binding (JAXB) ツールを使用して、Java クラスから XML スキーマ・ファイルを生成します。

始める前に

XML スキーマ・ファイルにマップする Java クラスまたは Java オブジェクト・セットを識別します。

このタスクについて

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

Java アプリケーションのデータ・エレメントを表す、既存の Java アプリケーションから XML スキーマ文書を作成できます。それには、JAXB スキーマ・ジェネレーターの schemagen コマンド行ツールを使用します。 JAXB スキーマ・ジェネレーターは、Java ソース・ファイルまたは Java クラス・ファイルのいずれかを処理します。 Java クラス・アノテーションは、既存の Java クラスから生成済みのスキーマ・コンポーネントへのデフォルト・マッピングをカスタマイズする能力を提供します。 XML スキーマ・ファイルとアノテーション付き Java クラスには、マーシャルおよびアンマーシャル用の XML 文書を構文解析するために JAXB ランタイムが必要とするすべての情報が含まれています。

プロシージャー

  1. XML スキーマ・ファイルの生成に使用するために、アノテーションを付けた Java ソース・ファイルまたは Java クラス・ファイルを見つけます。 Java クラス・ファイルが参照するすべてのクラスがクラスパス定義に含まれているか、または -classpath/-cp オプションを使用してツールに提供されることを確認してください。
  2. JAXB スキーマ・ジェネレーターの schemagen コマンドを使用して XML スキーマを生成します。 スキーマ・ジェネレーターは、 app_server_root¥bin¥ ディレクトリーにあります。
    [Windows]
    app_server_root¥bin¥schemagen.bat myObj1.java myObj2.java
    [Linux] [AIX] [HP-UX] [Solaris]
    app_server_root/bin/schemagen.sh myObj1.java myObj2.java
    ここで、パラメーターの myObj1.javamyObj2.java は、 データ・オブジェクトを含む Java ファイルの名前です。
    myObj1.java または myObj2.java が指している Java クラスが schemagen コマンドに受け渡されない場合、-cp オプションを使用して、これらの Java クラスのクラスパス・ロケーションを指定する必要があります。
  3. (オプション) javax.xml.bind.annotations パッケージに 定義された JAXB プログラム・アノテーションを使用して、 JAXB XML スキーマ・マッピングをカスタマイズします。

結果

Java クラスから XML スキーマ・ファイルを生成したので、 Java オブジェクトを XML インスタンス文書としてマーシャルおよびアンマーシャルする準備ができました。

以下の例は、既存の Java クラス Bookdata.java から JAXB ツールが XML スキーマ・ファイルをどのように生成するかを示しています。
  1. 以下の Bookdata.java ファイルを一時ディレクトリーにコピーします。
    package generated;
    
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlAttribute;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlType;
    import javax.xml.datatype.XMLGregorianCalendar;
    
    
    
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "bookdata", propOrder = {
        "author",
        "title",
        "genre",
        "price",
        "publishDate",
        "description"
    })
    public class Bookdata {
    
        @XmlElement(required = true)
        protected String author;
        @XmlElement(required = true)
        protected String title;
        @XmlElement(required = true)
        protected String genre;
        protected float price;
        @XmlElement(name = "publish_date", required = true)
        protected XMLGregorianCalendar publishDate;
        @XmlElement(required = true)
        protected String description;
        @XmlAttribute
        protected String id;
    
         public String getAuthor() {
            return author;
        }
        public void setAuthor(String value) {
            this.author = value;
        }
        public String getTitle() {
            return title;
        }
    
         public void setTitle(String value) {
            this.title = value;
        }
    
      
        public String getGenre() {
            return genre;
        }
       
        public void setGenre(String value) {
            this.genre = value;
        }
    
        
        public float getPrice() {
            return price;
        }
    
        
        public void setPrice(float value) {
            this.price = value;
        }
    
       
        public XMLGregorianCalendar getPublishDate() {
            return publishDate;
        }
    
        
        public void setPublishDate(XMLGregorianCalendar value) {
            this.publishDate = value;
        }
    
       
        public String getDescription() {
            return description;
        }
    
        
        public void setDescription(String value) {
            this.description = value;
        }
    
       
        public String getId() {
            return id;
        }
    
        
        public void setId(String value) {
            this.id = value;
        }
    
    }
  2. コマンド・プロンプトを開きます。
  3. Bookdata.java ファイルをコピーしたディレクトリーから schemagen スキーマ・ジェネレーター・ツールを実行します。
    [Windows]
    app_server_root¥bin¥schemagen.bat Bookdata.java
    [Linux] [AIX] [HP-UX] [Solaris]
    app_server_root/bin/schemagen.sh Bookdata.java 
  4. XML スキーマ・ファイル schema1.xsd が生成されます。
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
      <xs:complexType name="bookdata">
        <xs:sequence>
          <xs:element name="author" type="xs:string"/>
          <xs:element name="title" type="xs:string"/>
          <xs:element name="genre" type="xs:string"/>
          <xs:element name="price" type="xs:float"/>
          <xs:element name="publish_date" type="xs:anySimpleType"/>
          <xs:element name="description" type="xs:string"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:string"/>
      </xs:complexType>
    </xs:schema>
    

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




関連概念
JAXB
関連タスク
XML データ・バインディングのための JAXB の使用
JAXB ツールを使用した XML スキーマ・ファイルからの JAXB クラスの生成
JAXB ランタイムを使用した XML 文書のマーシャルとアンマーシャル
関連資料
JAX-WS のアノテーション
Web サービス仕様と API
関連情報
JAXB 2.0 Reference implementation
Java Architecture for XML Binding (JAXB) 2.0 specification documentation
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/twbs_jaxbjava2schema.html