プロトコルバインディングヘッダ

Download Report

Transcript プロトコルバインディングヘッダ

Webサービス
(JSR-172 J2ME Web Services Specification)
2005/05/10
02k0033
松本 明
目次
• SOA
• Webサービスの仕組み
• Webサービスの中核技術
-SOAP、WSDL、UDDI
• 利用の手順
• 開発の流れ
SOA
(Service Oriented Architecture)
• 特徴
-大規模なシステムをサービスの集まりとして構築す
る設計手法。
-OSやプログラム言語に依存しない。
• メリット
-既存のアプリケーションの再利用が容易になる。
-システムの変更に対して柔軟に対応できるようにな
る。
Webサービスの仕組み
クライアント
SOAP
Webサービス
Webサービス
Webサービス
Webアプリケーションとの違い
• Webアプリケーション
Request
Webブラウザ
Webサーバ
Response
• Webサービス
Request
プログラム
(Java等)
Webサーバ
Response
Webサービスの中核技術
• SOAP(Simple Object Access Protocol)
• WSDL(Web Services Description Language)
• UDDI(Universal Description, Discovery and Integration)
SOAP
Webサービスのためのメッセージ技術。
他のコンピュータにあるデータやサービスを呼び出すため
のプロトコル
・SOAPの中身
– SOAPエンベロープ
SOAPとしてのメッセージ全体
– SOAPヘッダ
メッセージの付加的な情報
– SOAPボディ
メッセージの本体
SOAPエンベロープ
SOAPヘッダ
SOAPボディ
SOAPの例
POST /soap/servlet/rpcrouter HTTP/1.0
プロトコルバインディングヘッダ
Host: localhost:8080
プロトコルごとに定められている
Content-Type: text/xml
ヘッダ情報を記述
Content-Length: 418
SOAPAction: ""
<SOAP-ENV:Envelope xmlns:
SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
ヘ
ッ
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
ダ
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:getPassword xmlns:ns1="urn:userinfoservice" SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> ボ
デ
<num1 xsi:type="xsd:string">Yonemochi</num1>
ィ
</ns1:getPassword>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
エ
ン
ベ
ロ
ー
プ
SOAPの機能
• SOAPエンコーディング
• SOAP-RPC
• SOAPエンベロープ
• WSDL
Webサービスのためのインターフェイス記述技術
– 目的
• Webサービスはどこにあるのか
• Webサービスは、どんなフォーマットのメッセージを使って利用するのか
• Webサービスは、どんな通信プロトコルを使ってメッセージをやり取りす
るのか
• UDDI
Webサービスの検索・照会システム
– UDDIレジストリ
Webサービスのデータベース
利用の手順
• サービス提供者
– 登録・公開
• サービス利用者
– 検索→発見or
直接発見
– サービスを利用
開発の流れ
• 開発環境
–
Java 2 SE SDK 1.3.1,Jakarta Tomcat 4.0.4
Apache Axis Beta3 をインストール
– CLASSPATH環境変数の設定
•
•
•
•
プログラミング、コンパイル
サーバ(Tomcat)起動
Call call = new Call();
call.setTargetObjectURI(“urn:userinfoservice”);
サービス配置
call.setMethodName(“getPassword”);
クライアントを実行する。 call.setEncodingStyleURI(Constants.NS_URI_SOA
call.setParams(v);
・・・
Response r = call.invoke(new URL(urlString), "");
Parameter result = r.getReturnValue();
System.out.println(“Result”+result.getValue());