introduction to web service
DESCRIPTION
Introduction to Web Service. 01k1024 Hiroyuki Morohoshi. Web Service とは. オープンな技術を使って、記述、呼び出し、公開、発見が可能な、ネットワーク上に存在するソフトウェア部品のこと XML 、 HTTP 、 SOAP 、 WSDL,UDDI などの基本技術によって実現される. Web Service の利点. Web Service はファイアウォール内外のネットワーク経由で容易にメッセージ交換が出来る - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/1.jpg)
Introduction to Web Service
01k1024 Hiroyuki Morohoshi
![Page 2: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/2.jpg)
Web Service とは オープンな技術を使って、記述、呼び
出し、公開、発見が可能な、ネットワーク上に存在するソフトウェア部品のこと
XML 、 HTTP 、 SOAP 、 WSDL,UDDIなどの基本技術によって実現される
![Page 3: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/3.jpg)
Web Service の利点 Web Service はファイアウォール内外
のネットワーク経由で容易にメッセージ交換が出来る
利用したい Web Service がどんな OSで動いているか、どんな言語で開発されたかなど、相手のプラットフォームに関係なく呼び出せる
![Page 4: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/4.jpg)
サービスの公開、発見、結合 サービス提供者は自分の
Web Service をサービス仲介者に公開する
サービス要求者は仲介者が管理する情報からWeb Service を発見し、利用するための仕様などの情報を入手する
サービス仲介者自分のシステムと提供者のシステムを結合し、サービスを利用する
サービス仲介者
サービス要求者
サービス提供者
公開発見
結合
![Page 5: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/5.jpg)
Web Service を実現する3つの技術 SOAP Web Service 間で交換するメッセ
ージのフォーマットの規格 WSDL Web Service のインターフェース
仕様を記述するための XML 文書 UDDI サービスを公開、発見するための
仕組みを定めた規格 HTTP,SMTP 等
UDDI
WSDL
SOAP
XML
![Page 6: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/6.jpg)
SOAP SOAP とは
Web Service 間で交換されるメッセージのデータフォーマットや、メッセージの処理ルールを定めた通信プロトコル
HTTP や SMTP 上などのトランスポートプロトコル上でXML 形式のメッセージをやりとりする
一方向で1回限りのメッセージ送信が基本で、直前の通信状態を保持しない(ステートレス)プロトコル
Client Server
要求メッセージ
応答メッセージ
![Page 7: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/10.jpg)
UDDI UDDI とは
Web サービスを公開し、発見させるためのディレクトリサービス
UDDI のデータはUDDI レジストリ( UDDI registry )と呼ばれる場所に保管される
データは XML ベースで保存される
![Page 11: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/11.jpg)
WSDL WSDL とは
発見した Web サービスを利用するためのインターフェイス仕様を、コンピュータが理解できる形式で記述した XML 形式の言語のこと
WSDL 文書から、 Web サービスを呼び出して利用するモジュール(スタブ)を自動生成することができる
WSDL 文書
開発ツール
サービス提供側アプリケーション
サービス要求側アプリケーション
スタブモジュール スタブモジュール
SOAP メッセージ
![Page 12: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/12.jpg)
WSDL の構成要素 types メッセージのフォーマット定義に使用する抽象的な型を定義する
message Web サービスで使用するメッセージのフォーマットを抽象的に定義する
operation 入出力メッセージやフォルトメッセージで構成される操作を抽象的に定義する
portType 関連する操作をひとまとめにした抽象的なポートであるポートタイプを定義する
binging ポートタイプ内の個々の抽象的な操作に、具体的なトランスポートプロトコルをバインド
する
port 定義されたバインディングに、通信エンドポイントのネットワークアドレスを関連付けて
具体的なポートを定義する
service 定義されたポートのうち、関連するもの同士を1つにまとめて Web サービスとして定義す
る
WSDL 文書例
![Page 13: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/14.jpg)
Web Service の実装例(2)
配置記述子よって、 JavaBeans は「 SimpleAddService 」というサービス名として動き始める
![Page 15: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/16.jpg)
Web Service の実装例(4) Web サービスクライアントを生成する 作成した Web サービスにアクセスするためのクライアントプログラ
ムを準備する。この Web サービス・クライアントは、「 SimpleAddService 」に接続し、この Web サービスの持つ機能を呼び出します
![Page 17: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/18.jpg)
Web Service の実装例(6) Web サービスクライアントを生成する(続)
作成されたインターフェイスをうまく使うことで、 Web サービス・クライアントを容易に作ることができるようになります
次のクライアントプログラムを作成SimpleAddProxyClient.java
下のインターフェースを利用しないプログラムよりも格段に楽になっていますSimpleAddClient.java
![Page 19: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/19.jpg)
Web Service の実装例(7) プログラムの実行 最後に次のコマンドでプログラムを実行すると次
のような結果が得られます>java SimpleAddService.SimpleAddProxyClient 2 527
また、 TCP Monitor というツールを使うと送られている SOAP メッセージを見ることが出来ます。
>start java org.apache.axis.utils.tcpmon
![Page 20: Introduction to Web Service](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/20.jpg)
参考資料 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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/21.jpg)
インストールから実行まで(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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/22.jpg)
インストールから実行まで(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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/23.jpg)
インストールから実行まで(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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/24.jpg)
インストールから実行まで(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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/25.jpg)
インストールから実行まで(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](https://reader036.vdocuments.site/reader036/viewer/2022062500/568158ce550346895dc618c7/html5/thumbnails/26.jpg)
インストールから実行まで(6) サービスを動かしてみる(3)
SimpleAddService ディレクトリが生成されたら、クライアントサービスプログラムを作成し、ディレクトリの中に置き、全ての Java ファイルをコンパイルします。
最後に下のコマンドで、正しい結果が得られれば差成功です
>java SimpleAddService.SimpleAddProxyClient 2 5
サンプルで使ったプログラムをここに置いておきますので利用してください