web サービス ( 第 2 回)

25
Web ササササ ( サ 2 サ ) 2007 サ 10 サ 3 サ

Upload: olivia-owen

Post on 31-Dec-2015

71 views

Category:

Documents


4 download

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 Presentation

TRANSCRIPT

Web サービス ( 第 2 回 )

2007 年 10 月 3 日

「 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 の要

新しい ツール (1) xjc xjc ( XML to Java compiler ) W3C XML Schema 定義ファイルを Java のクラス定義に

xjc name.xsd

新しい ツール (2) schemagen schemagen( schema generater ) Java のクラス定義を W3C XML Schema 定義ファイルに schemagen person/*.java デフォルト名で schema1.xsd が生

Java クラスからスキーマを生成 サンプルでは person.Person.java ,

person.Name.java パッケージ person を指定 ( =格納されるディレクトリ名 )

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>

対応する XML 文書の表現<point> <x>0</x> <y>1</y></point>

ではなく、

<point x=“0” y=“1” />