Presentation is loading. Please wait.

Presentation is loading. Please wait.

第13回 2007年7月20日 応用Java (Java/XML).

Similar presentations


Presentation on theme: "第13回 2007年7月20日 応用Java (Java/XML)."— Presentation transcript:

1 第13回 2007年7月20日 応用Java (Java/XML)

2 前回までやったこと 「XMLパーサ」-- Java でXMLを処理 javax.xml.stream パッケージのパーサ
SAX(Simple API for XML) のパーサ DOM(Document Object Model)のパーサ パーサの応用 : 検索,フィルタ的な処理 、視覚化 パーサの上位のサービス XPath , XSLT スキーマ言語と妥当性の検証 JAXB( Javaとスキーマとの変換)

3 後半の内容の予定 XPath (6/15) XSLT (6/22) 名前空間(Namespace) (6/22)
XML文書の妥当性の検証(6/29) XML Schema JAXB (7/6, 7/13) SOAP, Webサービ(7/20) 試験(7/27)

4 本日(7/20)の講義内容 SOAPメッセージ javax.xml.soap パッケージ SOAPとWebサービス SOAPとWSDL
(Web Service Definition Language)

5 その前に前回の実習の補足 ツール schemagen schemagen persen/*.java サンプルでは
person.Person.java , person.Name.java

6 パッケージ(package) package person; package jp.ac.wakhok.tatsuo;
クラスを分類する仕組み 階層を持つ「住所」のようなもの Name

7 前回までの課題でも 複数の Name クラスが登場 . --+-- Name.java (パッケージなし) |
+-- person Name.java( パッケージあり) 混乱なく区別するために(パッケージ名から) Name name = new Name(); person.Name name = new person.Name();

8 パッケージなしの場合 常にカレントディレクトリ(.) でOK vi Name.java javac Name.java java Name

9 パッケージありの場合 パッケージ=ディレクトリを意識 cd person vi Name.java cd ..
javac person/Name.java java person.Name

10 クラスパス(CLASSPATH) パッケージ=ディレクトリをたどるスタート地点を指定 通常はカレント ( . ) が基本
通常はカレント ( . ) が基本 複数の場所を指定も可能 CLASSPATH=.:/usr/java/lib:../.. (Windows では区切り文字は ; になる)

11 XML技術の階層構造 パーサ(最下層の字句解析) SAX, DOM javax.xml.stream 一般的なXML処理
検索(XPath)、変換(XSLT), JAXB スキーマ言語( W3C XML Schema) メッセージの交換(SOAP) Webサービスなど

12 SOAPとは? XMLの形式でメッセージを交換 中立なデータ形式(事実上の標準) システム、言語、アプリケーション非依存
メッセージが「構造」を持つ データ構造の定義は XML Schema で 処理の呼び出しも表現(JAX-RPC)

13 そもそも SOAP とは何の略? SOAP(Simple Object Access Protocol) 登場当時の認識
現在では広範囲の応用範囲を支える基礎技術 「SOAP は SOAP」

14 SOAP のメッセージの構造 <SOAP-ENV:Envelope xmlns:SOAP-ENV=
“   <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <mymessage> Hello </mymessage> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

15 SOAPメッセージの例(Google) <SOAP-ENV:Envelope xmlns:SOA-ENV
=" xmlns:xsi=" xmlns:xsd=" <SOAP-ENV:Body> <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch“ SOAP-ENV:encodingStyle= " <key xsi:type="xsd:string"> 8NfcnBhQFHL4QZbU3pX21B7NVhVZ+R+a</key> <q xsi:type="xsd:string">Tatsuo Ueda</q>

16 Webサービスでの例(1) Google Web Service の定義(WSDL)から
<message name="doSpellingSuggestion"> <part name="key" type="xsd:string"/> <part name="phrase“ type="xsd:string"/> </message> メソッドの呼び出しを表現

17 Webサービスでの例(2) <message name="doSpellingSuggestionResponse">
<part name="return“ type="xsd:string"/> </message> メソッドの返り値を表現

18 Javaに「翻訳する」と <operation name="doSpellingSuggestion">
<input message="typens:doSpellingSuggestion"/> <output message="typens:doSpellingSuggestionResponse"/> </operation> xsd:string -> Java の Stringクラス String result = doSpellingSuggestion( String key, String phrase );

19 Javaに「翻訳する」と(2) 複雑な型は Schema で定義可能 (Javaのクラスに対応)
<xsd:complexType name="ResultElement"> <xsd:all> <xsd:element name="URL“ type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> : </xsd:all> </xsd:complexType>

20 Java SE 6 : javax.xml.soap SOAPMessage クラス SOAPのメッセージを表す(送受信とも)
getSOAPHeader(), getSOAPBody(), addAttachment(), getAttachment() など、メッセージ操作のメソッド群 SOAPConnection クラス 通信を実行 call() メソッド SOAPMessage response = sc.call( SOAPMessage request, Object url );

21 Java SE 6 : javax.xml.soap SOAPMessage, SOAPConnection
いずれもFactoryのパターンで利用 MessageFactory mf = MessageFactory.newInstance(); SOAPMessage request = mf.createMessage( new MimeHeaders(), new FileInputStream( source ) ); SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance() SOAPConnection connection = scf.createConnection();

22 試験(7/27)について 簡単なオンラインの試験(実習室、LMS) 登場した用語とその意味(用途、存在理由)
「パーサ」「XPath」「XSLT」「SOAP」 「スキーマ言語」「妥当性」 Javaの処理とパッケージ javax.xml.stream, javax.xml.stream.events javax.xml.binding, javax.xml.namespace どんな用途で、どんなクラスがあったか? 試験+13回の課題提出で評価


Download ppt "第13回 2007年7月20日 応用Java (Java/XML)."

Similar presentations


Ads by Google