introduction to web service

26
Introduction to Web Service 01k1024 Hiroyuki Morohoshi

Upload: gitel

Post on 01-Feb-2016

38 views

Category:

Documents


0 download

DESCRIPTION

Introduction to Web Service. 01k1024 Hiroyuki Morohoshi. Web Service とは. オープンな技術を使って、記述、呼び出し、公開、発見が可能な、ネットワーク上に存在するソフトウェア部品のこと XML 、 HTTP 、 SOAP 、 WSDL,UDDI などの基本技術によって実現される. Web Service の利点. Web Service はファイアウォール内外のネットワーク経由で容易にメッセージ交換が出来る - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introduction to Web Service

Introduction to Web Service

01k1024 Hiroyuki Morohoshi

Page 2: Introduction to Web Service

Web Service とは オープンな技術を使って、記述、呼び

出し、公開、発見が可能な、ネットワーク上に存在するソフトウェア部品のこと

XML 、 HTTP 、 SOAP 、 WSDL,UDDIなどの基本技術によって実現される

Page 3: Introduction to Web Service

Web Service の利点 Web Service はファイアウォール内外

のネットワーク経由で容易にメッセージ交換が出来る

利用したい Web Service がどんな OSで動いているか、どんな言語で開発されたかなど、相手のプラットフォームに関係なく呼び出せる

Page 4: Introduction to Web Service

サービスの公開、発見、結合 サービス提供者は自分の

Web Service をサービス仲介者に公開する

サービス要求者は仲介者が管理する情報からWeb Service を発見し、利用するための仕様などの情報を入手する

サービス仲介者自分のシステムと提供者のシステムを結合し、サービスを利用する

サービス仲介者

サービス要求者

サービス提供者

公開発見

結合

Page 5: Introduction to Web Service

Web Service を実現する3つの技術 SOAP Web Service 間で交換するメッセ

ージのフォーマットの規格 WSDL Web Service のインターフェース

仕様を記述するための XML 文書 UDDI サービスを公開、発見するための

仕組みを定めた規格 HTTP,SMTP 等

UDDI

WSDL

SOAP

XML

Page 6: Introduction to Web Service

SOAP SOAP とは

Web Service 間で交換されるメッセージのデータフォーマットや、メッセージの処理ルールを定めた通信プロトコル

HTTP や SMTP 上などのトランスポートプロトコル上でXML 形式のメッセージをやりとりする

一方向で1回限りのメッセージ送信が基本で、直前の通信状態を保持しない(ステートレス)プロトコル

Client Server

要求メッセージ

応答メッセージ

Page 7: Introduction to Web Service

SOAP メッセージの構造 Protocol Binding Header 実装するプロトコルに依存するヘッダで、プ

ロトコルごとに定められたヘッダ情報を記述 SOAP Envelope <SOAP-ENV:Envelope> をルート要素とす

る XML データで、 SOAP を使ったオブジェクト間通信に必要なメッセージを記述

SOAP Header <SOAP-ENV:Header> のタグに囲まれた部

分によるヘッダ宣言で、実際のメッセージのヘッダとなる情報を記述(任意)

SOAP Body <SOAP-ENV:Body> のタグに囲まれた部分

による本体の宣言で、メッセージの本文を記述。具体的には、 RPC を呼び出すメソッド名や引数、またエラー情報などを記述する(必須)

Protocol Binding Header

SOAP Message

SOAP Envelope

ヘッダ情報

メッセージ & データ

SOAP Header

SOAP Body

Page 8: Introduction to Web Service

SOAP メッセージ例( Request )POST /QueryHotel HTTP/1.1Host: www.utj.co.jpContent-Type: text/xml; charset=“utf-8”Content-Length: nnnnSOAPAction: “http://www.utj.co.jp/schemas/soapbody#QueryEmptyRoom”

<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=“http://schemas.xml.soap.org/soap/encoding/”> <SOAP-ENV:Header> <q:QueristInfo xmlns:q=“http://www.utj.co.jp/schemas/soapheader/querist” SOAP-ENV:actor=“http://schemas.xmlsoap.org/soap/actor/next” SOAP-ENV:mustUnderstand=“1”> <q:reference>uuid:09876ab1-c234-777d-efab65cd4e32</q:reference> <q:dateAndTime>2002-05-27T14:30:00.000-05:00</q:dateAndTime> <q:name>Minoru Ohta</q:name> </q:QueristInfo> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:QueryEmptyRoom xmlns:m=“http://www.utj.co.jp/schemas/soapbody”> <m:RoomType>Twin</m:RoomType> <m:CheckInDate>2002-07-01</m:CheckInDate> <m:CheckOutDate>2002-07-03</m:CheckOutDate> </m:QueryEmptyRoom> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 9: Introduction to Web Service

SOAP メッセージ例( Response )HTTP/1.1 200 OKContent-Type: text/xml; charset=“utf-8”Content-Length: nnnn

<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=“http://schemas.xml.soap.org/soap/encoding/”> <SOAP-ENV:Body> <m:QueryEmptyRoomResponse xmlns:m=“http://www.utj.co.jp/schemas/soapbod

y”> <m:rooms>30</m:rooms> </m:QueryEmptyRoomResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 10: Introduction to Web Service

UDDI UDDI とは

Web サービスを公開し、発見させるためのディレクトリサービス

UDDI のデータはUDDI レジストリ( UDDI registry )と呼ばれる場所に保管される

データは XML ベースで保存される

Page 11: Introduction to Web Service

WSDL WSDL とは

発見した Web サービスを利用するためのインターフェイス仕様を、コンピュータが理解できる形式で記述した XML 形式の言語のこと

WSDL 文書から、 Web サービスを呼び出して利用するモジュール(スタブ)を自動生成することができる

WSDL 文書

開発ツール

サービス提供側アプリケーション

サービス要求側アプリケーション

スタブモジュール スタブモジュール

SOAP メッセージ

Page 12: Introduction to Web Service

WSDL の構成要素 types メッセージのフォーマット定義に使用する抽象的な型を定義する

message Web サービスで使用するメッセージのフォーマットを抽象的に定義する

operation 入出力メッセージやフォルトメッセージで構成される操作を抽象的に定義する

portType 関連する操作をひとまとめにした抽象的なポートであるポートタイプを定義する

binging ポートタイプ内の個々の抽象的な操作に、具体的なトランスポートプロトコルをバインド

する

port 定義されたバインディングに、通信エンドポイントのネットワークアドレスを関連付けて

具体的なポートを定義する

service 定義されたポートのうち、関連するもの同士を1つにまとめて Web サービスとして定義す

WSDL 文書例

Page 13: Introduction to Web Service

Web Service の実装例(1)次のプログラムを Web Service 化してみよう

SimpleAddBean.java

サービスを提供するために、今回は Axis エンジンを使う

上のプログラムをコンパイルし、 Axis エンジン配下に保存しする。そして、配置記述子( Deployment Descriptor )を作成し、配置( Deploy )することでサービス化する

SimpleAddService.wsdd  (配置記述子)

このファイルを AdminClient にて配置する

配置コマンド>java org.apache.axis.client.AdminClient SimpleAddService.wsdd

Page 14: Introduction to Web Service

Web Service の実装例(2)

配置記述子よって、 JavaBeans は「 SimpleAddService 」というサービス名として動き始める

Page 15: Introduction to Web Service

Web Service の実装例(3) WSDL を生成する Axis にある Java2WSDL というユーティリティで自動生成する

>java org.apache.axis.wsdl.Java2WSDL -o SimpleAddService.wsdl -l http://localhost:8080/axis/servlet/AxisServlet -n SimpleAddService SimpleAddBean

生成された WSDL 文書SimpleAddService.wsdl

Page 16: Introduction to Web Service

Web Service の実装例(4) Web サービスクライアントを生成する 作成した Web サービスにアクセスするためのクライアントプログラ

ムを準備する。この Web サービス・クライアントは、「 SimpleAddService 」に接続し、この Web サービスの持つ機能を呼び出します

Page 17: Introduction to Web Service

Web Service の実装例(5) Web サービスクライアントを生成する

(続) Web サービスクライアント用のクラスを生成するには次のコマン

ドを使って、作成された WSDL をもとに生成します

>java org.apache.axis.wsdl.WSDL2Java SimpleAddService.wsdl

作成されたファイルAdminServletSoapBindingStub.java    SimpleAddBean.javaSimpleAddBeanService.java         SimpleAddBeanServiceLocator.java

Page 18: Introduction to Web Service

Web Service の実装例(6) Web サービスクライアントを生成する(続)

作成されたインターフェイスをうまく使うことで、 Web サービス・クライアントを容易に作ることができるようになります

次のクライアントプログラムを作成SimpleAddProxyClient.java

下のインターフェースを利用しないプログラムよりも格段に楽になっていますSimpleAddClient.java

Page 19: Introduction to Web Service

Web Service の実装例(7) プログラムの実行  最後に次のコマンドでプログラムを実行すると次

のような結果が得られます>java SimpleAddService.SimpleAddProxyClient 2 527

  また、 TCP Monitor というツールを使うと送られている SOAP メッセージを見ることが出来ます。

>start java org.apache.axis.utils.tcpmon

Page 20: Introduction to Web Service

参考資料 Web サービス技術 基礎と実践 徹底解説 Java による Web サービス構築 http://www.atmarkit.co.jp/fjava/index/index_wb

srvic.html http://www.utj.co.jp/xml/dev/soap/soap1_1.htm

l

Page 21: Introduction to Web Service

インストールから実行まで(1) Tomcat をダウンロードする  http://jakarta.apache.org/site/binindex.cgi   から最新版のものをダウンロードする (今回は Tomcat 5.0.24 zip )  AXIS エンジンをダウンロードする http://ws.apache.

org/axis/releases.html 上の URL から最新版のものをダウンロードする (今

回は Version 1.1 Binary - zip )

適当な場所に解凍してください

Page 22: Introduction to Web Service

インストールから実行まで(2) Axis エンジンを Tomcat に配置する  Tomcat があるディレクトリを <TOMCAT_HOME>  Axis があるディレクトリを <AXIS_HOME> とします

  <AXIS_HOME>\webapps\axis ディレクトリを <TOMCAT_HOME>\webapps 以下にコピーします

  <TOMCAT_HOME>\webapps\axis\WEB-INF\lib にある saaj.jar 、jaxrpc.jar を <TOMCAT_HOME>\common\lib に移動します

 これで、 Axis エンジンがインストールされた状態になります。

Page 23: Introduction to Web Service

インストールから実行まで(3) 環境変数の設定  <AXIS_HOME>\lib にあるライブラリをすべて CLASSPATH に設定

します

  < 例 > JAVA_HOME=C:\j2sdk1.4.2_04 CATALINA_HOME=D:\jakarta-tomcat-5.0.18 AXIS_HOME=D:\axis-1_1 CLASSPATH=.;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\com

mon\lib\servlet-api.jar;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery.jar;%AXIS_HOME%\lib\commons-logging.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j.jar;

Page 24: Introduction to Web Service

インストールから実行まで(4) サービスを動かしてみる サービス化したい Class ファイルを <TOMCAT_HOME

>\webapps\axis\WEB-INF\classes ディレクトリに置きます

Tomcat を動かします D:\jakarta-tomcat-5.0.18\bin\startup.bat  次に配置記述ファイルを作業ディレクトリに作成し

コマンドで配置します。>java org.apache.axis.client.AdminClient SimpleAddServi

ce.wsdd

Page 25: Introduction to Web Service

インストールから実行まで(5) サービスを動かしてみる(2)

次に下のコマンドで WSDL を生成します>java org.apache.axis.wsdl.Java2WSDL -o SimpleAddSer

vice.wsdl -l http://localhost:8080/axis/servlet/AxisServlet -n SimpleAddService SimpleAddBean

出来たら、下のコマンドでスタブを生成します>java org.apache.axis.wsdl.WSDL2Java SimpleAddServic

e.wsdl

Page 26: Introduction to Web Service

インストールから実行まで(6) サービスを動かしてみる(3)

SimpleAddService ディレクトリが生成されたら、クライアントサービスプログラムを作成し、ディレクトリの中に置き、全ての Java ファイルをコンパイルします。

最後に下のコマンドで、正しい結果が得られれば差成功です

>java SimpleAddService.SimpleAddProxyClient 2 5

サンプルで使ったプログラムをここに置いておきますので利用してください