Presentation is loading. Please wait.

Presentation is loading. Please wait.

応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.

Similar presentations


Presentation on theme: "応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP."— Presentation transcript:

1 応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男

2 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP のメッセージング (7/7) RMI と JAX-RPC(7/14) 試験 (7/21)

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

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

5 SOAP のメッセージの構造 <SOAP-ENV:Envelope xmlns:SOAP-ENV= “ http://schemas.xmlsoap.org/soap/envelope/ ” > http://schemas.xmlsoap.org/soap/envelope/ Hello

6 SOAP メッセージの例 (Google) <SOAP-ENV:Envelope xmlns:SOA-ENV ="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch “ SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> 8NfcnBhQFHL4QZbU3pX21B7NVhVZ+R+a Tatsuo Ueda

7 SOAP の 実装 XML Apache org の WS-SOAP http://ws.apache.org/soap/ (Java Mail, Java Beans Activation に依存 ) org.apache.soap パッケージ Envelop, Header, Body, Fault クラスな ど org.apache.soap.messaging パッケー ジ Message クラス org.apache.soap.transport パッケージ

8 SOAP API の使用例 (1) Document doc = db.parse ( new InputSource (source) ); // メッセージ送信 Envelope env = Envelope.unmarshall( doc.getDocumentElement() ); Message msg = new Message (); msg.send ( new URL(url), "urn:wakhok.ac.jp-jax-soap1", env );

9 SOAP API の使用例 (2) // メッセージ受信 SOAPTransport st = msg.getSOAPTransport (); BufferedReader br = st.receive(); String line; while ( (line = br.readLine ()) != null ) { System.out.println ( line ); }

10 RPC(Remote Procedure Call) Remote -- 別のマシンにネットワーク で Procedure – 何らかの処理 (C 言語なら関数、 Java ならメソッド ) Call – 呼び出す仕組み

11 SOAP メッセージを通じて RPC 実際の通信部分は SOAP メッセージ ( システム、言語に中立 ) アプリケーションから見ると処理の呼 び出しとして記述できる 応用例 ) Web サービス

12 Web サービスでの例 (1) Google Web Service の定義 (WSDL) から メソッドの呼び出しを表現

13 Web サービスでの例 (2) メソッドの返り値を表現

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

15 Java に「翻訳する」と (2) 複雑な型は Schema で定義可能 ( Java のクラスに対応 ) :

16 Apache SOAP の API の実装 org.apache.soap.rpc パッケージ Call, Parameter, Response クラスを提 供

17 サンプルプログラム (1) Call call = new Call (); call.setTargetObjectURI ( "urn:GoogleSearch"); call.setMethodName ( "doSpellingSuggestion" ); call.setEncodingStyleURI( Constants.NS_URI_SOAP_ENC );

18 サンプルプログラム (2) Vector params = new Vector (); params.addElement( new Parameter( "key", String.class, key, null) ); params.addElement( new Parameter( "phrase", String.class, phrase, null) ); call.setParams (params);

19 サンプルプログラム (3) URL endPoint = new URL( "http://api.google.com/search/beta2" ); Response response = call.invoke ( endPoint, "" ); Parameter result = response.getReturnValue (); System.out.println( response.getBodyPart(0).getContent() );


Download ppt "応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP."

Similar presentations


Ads by Google