JAXB その3

Download Report

Transcript JAXB その3

Webサービス II (第4回)
http://www.wakhok.ac.jp/~tatsuo/ws2/
2006年10月18日
植田龍男
JAXB




JAXB(Java architecture for XML Binding)
Java と XML とのマッピングを提供
新しい Webサービスを支える基礎技術
アノテーションをフルに活用
Java と XML(1)
Java のクラスとインスタンス
public class Name {
String first;
String last;
}
--------------------------------------------------Name name = new Name();
name.first=“Tatsuo”; name.last=“Ueda”;

Java と XML(2)

XMLのドキュメント
<nama>
<first>Tatsuo</fist>
<last>Ueda</last>
</name>
要素<name> -- インスタンス name
要素<first>,<last> -- フィールドに対応
XML Schema の例(1)
<xsd:schema xmlns:xsd
="http://www.w3.org/2001/XMLSchema">
<xsd:element name="name" type="nameType"/>
<xsd:complexType name="nameType">
<xsd:sequence>
<xsd:element name="first" type="xsd:string"/>
<xsd:element name="last" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Javaクラスからスキーマを生成

ツール schemagen
schemagen persen/*.java

サンプルでは
person.Person.java , person.Name.java
アノテーションの例(要素の性質)

@XmlElement アノテーション
個々の要素の性質(デフォルト値など)
@XmlElement( defaultValue=“0” )
public int x;
アノテーションの例(属性に変換)

@XmlAttribute アノテーション
public class Point {
@XmlAttribute
public int x;
@XmlAttribute
pulbic int y;
}
生成される XML Schema
<xs:complexType name="point">
<xs:sequence/>
<xs:attribute name="x" type="xs:int"
use="required"/>
<xs:attribute name="y" type="xs:int"
use="required"/>
</xs:complexType>
対応するXML文書の表現
<point>
<x>0</x>
<y>1</y>
</point>
ではなく、
<point x=“0” y=“1” />
補足: ant ツールの使用




Apache プロジェクトが提供するオープン
ソース http://ant.apache.org/
コマンドラインで操作できるビルドツール
開発の手順、環境を xml で記述
デフォルトのビルドファイル build.xml
ant で実行
必要に応じて「ターゲット」を指定
build.xml の例(クラスパス)
<property name="jwsdp.home"
value="/Sun/jwsdp-2.0" />
<path id="classpath">
<pathelement path="." />
<fileset dir="${jwsdp.home}"
includes="jaxb/lib/*.jar" />
</path>
build.xml の例(コンパイル)
<target name="compile">
<echo message="Compiling the java
source files..." />
<javac destdir="." debug="on">
<src path="." />
<classpath refid="classpath" />
</javac>
</target>
build.xml の例(実行)
<target name="run" depends="compile">
<echo message="Running the sample
application..." />
<java classname="Java2SchemaTest">
<classpath refid="classpath" />
</java>
</target>