web サービス ( 第 2 回)
DESCRIPTION
Web サービス ( 第 2 回). 200 7 年 10 月 3 日. 「 Web サービス II 」の内容. 第2世代の Web サービス Java SE 6 の標準 アノテーションの利用 アプリケーションサーバ Glassfish EoD(Ease of Development) 移行期のため今年度3年前期の「応用 Java 」と内容の一部が重複 (JAXB). この時間の目標. JAXB とは? ( 復習 ) ツール schemagen Java のクラスから XML Schema を自動生成 - PowerPoint PPT PresentationTRANSCRIPT
「 Web サービス II 」の内容 第2世代の Web サービス Java SE 6 の標準 アノテーションの利用 アプリケーションサーバ Glassfish EoD(Ease of Development) 移行期のため今年度3年前期の「応用
Java 」と内容の一部が重複 (JAXB)
この時間の目標 JAXB とは? ( 復習 ) ツール schemagen Java のクラスから XML Schema を自
動生成 XML の文書 Java のインスタンス Java のアノテーション アノテーションと JAXB
JAXB JAXB(Java architecture for XML
Binding) Java と XML とのマッピングを提供 新しい Web サービスを支える基礎技
術 アノテーションをフルに活用
Java SE 6 で追加 -- JAXB javax.xml.bind
javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml.bind.helpers javax.xml.bind.util
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> -- フィールドに
対応
Java と XML(3) インスタンスは個々の XML 文書に対応 クラスの定義は? XML 文書の定義はスキーマ言語 DTD(Document Type Definition) XML Schema W3C XML Schema RELAX NG
Schematron
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 との比較 (1) String first; public String getFirst() { returen first; } public void setFirst( String s ) { first =
s; } <xsd:element name="first" type="xsd:string"/>
Java との比較 (2) public class name { … } <xsd:element name="name“ type="nameType"/> <xsd:complexType name="nameType"> : String first; String last; <xsd:sequence> <xsd:element name="first" type="xsd:string"/> <xsd:element name="last" type="xsd:string"/> </xsd:sequence>
XML Schema の例 (2)
<xsd:complexType name="peopleType">
<xsd:sequence> <xsd:element name="name" type="nameType" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>
対応のまとめ Java 言語 < -- > W3C XML Schema Java のクラス < -- > スキーマ定義
ファイル Java のインスタンス < -- > XML 文
書 Java のプロパティ < -- > XML の要
素
新しい ツール (2) schemagen schemagen( schema generater ) Java のクラス定義を W3C XML Schema 定義ファイルに schemagen person/*.java デフォルト名で schema1.xsd が生
成
person.Name.java
package person; import javax.xml.bind.annotation.*; @XmlType public class Name { public String first; public String last; }
person.Person.java
package person; import javax.xml.bind.annotation.*; @XmlRootElement public class Person { public Name name; public String address; }
自動生成される schema1.xsd
<xs:complexType name="name"> <xs:sequence>
<xs:element name="first" type="xs:string"
minOccurs="0"/> <xs:element name="last" type="xs:string"
minOccurs="0"/> </xs:sequence> </xs:complexType>
schema1.xsd のつづき<xs:complexType name="person">
<xs:sequence> <xs:element name="address" type="xs:string"
minOccurs="0"/> <xs:element name="name" type="name" minOccurs="0"/>
</xs:sequence> </xs:complexType>
アノテーションの例 ( 要素の性質 ) @XmlElement アノテーション 個々の要素の性質 ( デフォルト値な
ど )
@XmlElement( defaultValue=“0” ) public int x;
生成される schema1.xsd
<xs:complexType name="point"> <xs:sequence>
<xs:element name="x" type="xs:int" default="0"/> <xs:element name="y" type="xs:int" default="0"/>
</xs:sequence> </xs:complexType>
アノテーションの例 ( 属性に変換 ) @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>