1 / 25

Web サービス ( 第 2 回)

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 を自動生成

olivia-owen
Download Presentation

Web サービス ( 第 2 回)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Webサービス (第2回) 2007年10月3日

  2. 「WebサービスII」の内容 • 第2世代のWebサービス Java SE 6 の標準 アノテーションの利用 アプリケーションサーバ Glassfish EoD(Ease of Development) • 移行期のため今年度3年前期の「応用Java」と内容の一部が重複(JAXB)

  3. この時間の目標 • JAXBとは?(復習) • ツール schemagen Java のクラスからXMLSchema を自動生成 • XMLの文書 Javaのインスタンス • Javaのアノテーション • アノテーションとJAXB

  4. JAXB • JAXB(Java architecture for XML Binding) • Java と XML とのマッピングを提供 • 新しい Webサービスを支える基礎技術 • アノテーションをフルに活用

  5. 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

  6. Java と XML(1) • Java のクラスとインスタンス public class Name { String first; String last; } --------------------------------------------------- Name name = new Name(); name.first=“Tatsuo”; name.last=“Ueda”;

  7. Java と XML(2) • XMLのドキュメント <nama> <first>Tatsuo</fist> <last>Ueda</last> </name> 要素<name> -- インスタンス name 要素<first>,<last> -- フィールドに対応

  8. Java と XML(3) • インスタンスは個々の XML文書に対応 • クラスの定義は? • XML文書の定義はスキーマ言語 DTD(Document Type Definition) XML Schema W3C XML Schema RELAX NG Schematron

  9. 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>

  10. Java との比較(1) • String first; public String getFirst() { returen first; } public void setFirst( String s ) { first = s; } • <xsd:element name="first" type="xsd:string"/>

  11. 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>

  12. XML Schema の例(2) <xsd:complexType name="peopleType"> <xsd:sequence> <xsd:element name="name" type="nameType" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

  13. 対応のまとめ • Java言語 < -- > W3C XML Schema • Java のクラス < -- > スキーマ定義ファイル • Java のインスタンス < -- > XML文書 • Java のプロパティ < -- > XMLの要素

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

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

  16. Javaクラスからスキーマを生成 • サンプルでは person.Person.java , person.Name.java • パッケージ person を指定 (=格納されるディレクトリ名)

  17. person.Name.java package person; import javax.xml.bind.annotation.*; @XmlType public class Name { public String first; public String last; }

  18. person.Person.java package person; import javax.xml.bind.annotation.*; @XmlRootElement public class Person { public Name name; public String address; }

  19. 自動生成される 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>

  20. 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>

  21. アノテーションの例(要素の性質) • @XmlElement アノテーション 個々の要素の性質(デフォルト値など) @XmlElement( defaultValue=“0” ) public int x;

  22. 生成される 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>

  23. アノテーションの例(属性に変換) • @XmlAttribute アノテーション public class Point { @XmlAttribute public int x; @XmlAttribute pulbic int y; }

  24. 生成される 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>

  25. 対応するXML文書の表現 <point> <x>0</x> <y>1</y> </point> ではなく、 <point x=“0” y=“1” />

More Related