グリッド協議会 資料
Webサービスの技術動向の紹介
2002年12月19日
NECソリューションズ
インターネット基盤開発本部
藤田 悟
内容
1. Webサービスとは
2. Webサービスを支える技術
3. Webサービスの技術課題
4. NEC の製品群
5. まとめ
6. デモの説明
1. Webサービスとは
Webサービスの2つの定義
T
サービス指向に基づいた動的なビジネス
統合基盤
T
IBMのWebサービスの定義
T
A Web service is a software component
described in WSDL.
Tインターフェイス定義が重要。
TSOAP、EJB、CORBAなど、実装は問わない
T
SOAPによる連携システム
TSOAP を用いることで
THTTP による firewall 越えが容易
TXML によるハードウェア/環境に非依存
Copyright(c) 2002, NEC Corp. All rights reserved. 5
サービス指向アーキテクチャ
T
ビジネス設計にとって、
オブジェクト指向では
粒度が細かすぎる。
T粒度の粗い設計
Tプログラムではなく、フ
ロー中心の設計
T
ビジネスはサービスの
中身が重要。
Tパートナーとは、実行
時に動的に連携
Tサービスを検索
/選択
オブジェクト指向
オブジェクト指向
オブジェクト指向
オブジェクト指向
ビジネス設計
ビジネス設計
ビジネス設計
ビジネス設計
サービス指向
サービス指向
サービス指向
サービス指向
SOAPによるシステム連携
SOAP ≒ HTTP + XML
T
インターネットを経由した疎結合のシステム連携
T
社内部門間のドメインを越えたシステム連携
インターネット接続
インターネット接続
インターネット接続
インターネット接続
SOAP
本部センター
本部センター
本部センター
本部センター
SOAP
メリット
メリット
メリット
メリット
• インフラを既存資産である
インフラを既存資産である
インフラを既存資産である
インフラを既存資産である
Webと共有
と共有
と共有
と共有
新たなネットワーク
新たなネットワーク
新たなネットワーク
新たなネットワーク設定
設定
設定
設定
/管理が
管理が
管理が
管理が不要
不要
不要
不要
• 機種依存性を排除
機種依存性を排除
機種依存性を排除
機種依存性を排除
企業内
企業内
企業内
企業内
2. Webサービスを支える技術
Webサービスの基本モデル
Webサービス上の役割を、サービ
スの利用者、提供者、ブローカに
区分して、3者間のサービスに対
する関係を規定する。
[提供者⇔ブローカ]
T提供するサービスの定義を、提供者が
ブローカに
登録
する。
[利用者⇔ブローカ]
T利用者は、ブローカに対してサービス
定義に関する
検索
を行う。
[利用者⇔提供者]
T利用者は、提供者との間で直接サービ
スの
結合
(実行)を行う。
サービスブローカ
サービス利用者
サービス提供者
登録
検索
結合
UDDI XML+SOAPサービス
サービス
定義
サービス
定義
Copyright(c) 2002, NEC Corp. All rights reserved. 9
Webサービススタック
ネットワーク
ネットワーク
XML Messaging
XML Messaging
サービス定義
サービス定義
HTTP, email
SOAP
WSDL
サービス登録
サービス登録
サービス検索
サービス検索
UDDI
BPEL4WS
WSFL, WSCL
ebXML BPSS
サービスフロー
サービスフロー
標準化技術
仕様はほぼ完成ビジネスルール
ビジネスルール
RosettaNet
共通サービス
共通サービス
個々のWebサービス
個々のWebサービス
.NET MyServices
ビジネス領域
Sier、xSP が 様々なサービスで 差別化を狙う新技術領域
各社が新技術を投入T
BPEL4WS
(Business Process
Execution Language for WS)
Tサービス統合に関するフローを定
義言語
T
UDDI(
Universal Description,
Discovery and Integration
)
TWeb サービスのための情報レジ ストリ T
WSDL(
Web Services
Description Language
)
Tサービス呼出のインターフェース を規定T
SOAP(
Simple Object Access
Protocol
)
Tシステム間でXML文書情報を交
換するための通信規約
用語解説
用語解説
SOAP (Simple Object Access Protocol)
インターネットに分散したシステム間で構造化された型付きメッセージを交換するため
の
XMLの標準案。Envelope の中に、Header 部と Body部が定義される。
サービス呼出 サービス戻り値
SOAP Envelope
<SOAP-ENV:Body>
<
m:
GetLastTradePrice
xmlns:m="Some-URI">
<m:symbol>
NEC
</m:symbol></m:GetLastTradePrice> </SOAP-ENV:Body> <SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> </SOAP-ENV:Envelope>
SOAP Body
<SOAP-ENV:Header> </SOAP-ENV:Header>SOAP Header
SOAP Envelope
<SOAP-ENV:Body> <m:GetLastTradePriceResponse
xmlns:m="Some-URI"> <m:price>449
</m:price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body> <SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> </SOAP-ENV:Envelope>SOAP Body
<SOAP-ENV:Header> </SOAP-ENV:Header>SOAP Header
Copyright(c) 2002, NEC Corp. All rights reserved. 11
SOAP を用いた2つのメッセージ交換手法
TSOAP RPC
Tサービスコールとレスポンスの組み合わせで、1つのタスクを実現
TWeb サーバは、サービス提供者側だけに存在
インター ネットSOAP
Web サーバ TSOAP Messaging
T(論理的に)一方向のメッセージを複数やり取りすることで、1つのタスク
を実現
TWeb サーバは、両者共に保有
Tビジネスプロトコルを制御するレイヤーが SOAP 上に必要 (例:
ebXML Messaging Service)
インター ネット
SOAP
Web サーバ Web サーバSOAP RPC の仕様
T
型付きのメソッドコールの仕様
T
基本データ型(XML Schema に準拠)
T
byte, short, int, long, float, double, string
T
複合データ型
T配列(SOAP Encoding で規定)
T構造体
(XML Schema を利用して表現)
T複数から参照される構造体は、href でリンクして表現する
T
引数/戻り値
T引数は、in パラメタと、in/out パラメタがある
T戻り値は、
out パラメタと、in/out パラメタがある
T
例外処理
TSOAP Fault によるエラー送信
Copyright(c) 2002, NEC Corp. All rights reserved. 13
SOAPの配列と構造体例
■配列宣言
■配列宣言
■配列宣言
■配列宣言
<element name="myFavoriteNumbers" type="SOAP-ENC:Array"/>■
■
■
■配列の送信時の表現
配列の送信時の表現
配列の送信時の表現
配列の送信時の表現
<myFavoriteNumbers SOAP-ENC:arrayType="xsd:int[2]"> <number>3</number> <number>4</number> </myFavoriteNumbers>■
■
■
■複数参照される構造体の表現
複数参照される構造体の表現
複数参照される構造体の表現
複数参照される構造体の表現
<e:Book><title>My Life and Work</title> <author href="#Person-1"/> </e:Book>
<e:Person id="Person-1">
<name>Henry Ford</name> <address href="#Address-2"/> </e:Person>
<e:Address id="Address-2">
<email>mailto:[email protected]</email> <web>http://www.henryford.com</web> </e:Address>
SOAP 1.2 (draft)
T
W3C の XML Protocol の WGで協議中
T
SOAP 1.1 との互換性を重視しながら、仕様の曖
昧性の排除と、機能拡張を試みる。
Tマルチホップした時の処理モデルの定義
THeader 部分に、トランザクションやコンテキスト管理
情報を載せることを示唆。
T例外処理に関するコードの充実、定義の明確化
<Envelope> <Header> <Body> Header block Header block Body sub-element Body sub-element <Envelope> <Header> <Body> Header block Body sub-element Body sub-element <Envelope> <Header> <Body> Header block Body sub-element Body sub-element 処理 処理 処理 処理 追加追加追加追加 Header blockCopyright(c) 2002, NEC Corp. All rights reserved. 15
WSDL
(Web Services Description Language)
WSDLは、サービスのエンドポイント間で交わされる手続き
呼出のインターフェースとプロトコルバインディングを規定す
るための
XML フォーマット。
<?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/1999/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all><element name=“symbol" type="string"/> </all> </complexType> </element> <element name="TradePriceResult"> <complexType> <all>
<element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput">
<part name=“GetLastTradePrice" element="xsd1:TradePriceRequest"/> </message>
<message name="GetLastTradePriceOutput">
<part name=“GetLastTradePriceResponse" element="xsd1:TradePriceResult"/> </message>
<portType name="StockQuotePortType"> <operation name="GetLastTradePrice">
<input message="tns:GetLastTradePrice"/>
<output message="tns:GetLastTradePriceResponse"/> </operation>
</portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input>
<soap:body use="literal" namespace="http://example.com/stockquote.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input>
<output>
<soap:body use="literal" namespace="http://example.com/stockquote.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding>
データ型
の定義
メッセージ
の定義
プロトコル
バインディング
操作の
定義
WSDLを利用したシステム開発
T
サービスプログラムがある場合
T例えば、
Java のインタフェース定義から、WSDLを自
動生成
Tその
WSDLからSOAPのクライアントプログラム用にプ
ロキシクラスを自動生成
TサービスプログラムをSOAPを持つAPサーバに登録し
て完了。
Java
サービス
プログラム
Java
クライアント
プログラム
Java
インタフェース
WSDL
定義
自動
生成
Proxy クラス自動
生成
APサーバ
登録
呼出
※Javaでなくても、C#でも可能。相互接続も可能。
Copyright(c) 2002, NEC Corp. All rights reserved. 17
UDDI
(Universal Description, Discovery and Integration)
T
UDDIは、SOAPサーバを連携させた Webサービス提供アーキテクチャにおけるサー
ビスディレクトリを提供
Tビジネス/サービス/接続方法に関する文書を登録し、利用者からに検索機能を提供
T登録、検索のインタフェースも
SOAP から利用できる。
ビジネス 提供者 情報 サービスの 内容 サービスの インタフェース WSDLUDDI
SOAP Server
サービス プロキシdeploy
register
1
2
ブローカ
(SOAP Server)
0
予備検索
利用者
4
find
WEB Server
(SOAP Server)
3
access
5
bind
html/http
SOAP/http
サービス
レジストリオブジェクトのデータ構造
サービスを提供する企業,
サービスを提供する企業,
サービスを提供する企業,
サービスを提供する企業,
団体の情報を記述
団体の情報を記述
団体の情報を記述
団体の情報を記述
サービスの内容を記述
サービスの内容を記述
サービスの内容を記述
サービスの内容を記述
サービスに接続するため
サービスに接続するため
サービスに接続するため
サービスに接続するため
の情報を記述
の情報を記述
の情報を記述
の情報を記述
WSDL等へのリンクを記述.
等へのリンクを記述.
等へのリンクを記述.
等へのリンクを記述.
WSDL中には
中には
中には
中には
プロトコル,
プロトコル,
プロトコル,
プロトコル,
データ形式等を記述.
データ形式等を記述.
データ形式等を記述.
データ形式等を記述.
Copyright(c) 2002, NEC Corp. All rights reserved. 19
UDDIプログラマーAPI
T
参照
参照
参照
参照
API (Inquiry API)
T
find_XXX
キーワードなどを用いた検索のためのAPI.検索の結果は対象となった要素
のキーがリスト形式で返される。
T
get_XXX
find_XXXで検索されたキーから、その実体(内容)を取り出すときに使用.
T
発行
発行
発行
発行
API (Publication API)
T
save_XXX
レジストリオブジェクトを保管するためのAPI.
Tdelete_XXX
レジストリのエントリを削除する
※ここでXXXには検索の対象となるbusinessEntity、businessService、
bindingTemplate、tModelなどが入る.
UDDI 3.0 レジストリ
T
UDDI 3.0
TWebサービス向けディレク
トリサービスの最新仕様
(2002年7月承認)
TV2.0 の機能を大幅に強化
T分散レジストリの対応
Tノード:一つ一つのサーバ
Tレジストリ:ノードの集合。全ての
ノードは同一データを共有
Tアフィリエーション:レジストリ間
の相互参照関係を定義
Tプライベートディレクトリを構築
するための指針
TXML署名の導入
T検索機能・各種APIの強化
アフィリエーション レジストリ ノード ノード ノード ノード レジストリ レジストリ 同一データを共有 ノード ノード ノード ノード: UDDIを 構成する 最小単位。UDDI V3の分散構成
アフィリエーション アフィリエーション アフィリエーション アフィリエーション: レジス トリの集合体。データ互換 を可能にする緩やかなレ ジストリ連合。 レジストリ レジストリ レジストリ レジストリ:ノード の集合体。すべ てのノードは複 製により同一デー タを保持。Copyright(c) 2002, NEC Corp. All rights reserved. 21
Webサービス向けアーキテクチャ
TXML プロトコルハンドラによる業界標準プロトコルへの対応
Tワークフローエンジンが、サービス統合のフローを管理
一部は外部
Webサービスを呼び出し、一部は企業内サービスと統合
TUDDIへのサービスの登録、実行時におけるサービスの検索
Web サービス用サーバ
Web
サーバ
AP サーバ
XML
プロトコル
ハンドラ
SOAP XMLワーク
フロー
エンジン
サービス
コンポーネント
レガシーシステム ラッピング レガシー DB サービス用 DB外部
Web
サービス
ディレクトリ サービス UDDI SO A P SO A PebXML
RosettaNet
その他の
SOAPベースの
メッセージ
既存サービスの
Webサービス化手法
T既に
Web上に公開していたサービスに SOAP RPCのアク
セスインタフェースを作成して、Webサービスとして提供
する。
T株価情報、天気予報のようなメソッド呼出だけで完了するサービ
スであれば、簡単に
Webサービス化が可能
T優良コンテンツを保持していれば、サービス提供料金によるビジ
ネスが可能
Web サービス用サーバ
Web
サーバ
SOAP
ハンドラ
SOAP XML既存サービス
コンポーネント
サービス用 DB外部からの
サービス
呼出
SOAPハンドラ
に登録
Copyright(c) 2002, NEC Corp. All rights reserved. 23
従来技術との比較表
サービス呼び出し
1:多
企業間
プロトコル制御
動的取引
汎用/標準化
プロトコル
Loosely coupled
サービス
自動処理
Webサービス
必要な技術
従来
比較対象
/項目
SOAP, WSDL
→
データ表現
XML
SingleSignOn
→
1:1
取引相手
BPEL4WS
エージェント
→
→
企業内
アクティビティ制御
ワークフロー
UDDI
→
固定取引
SCM
標準化
→
専用
EDI
BPEL4WS, BPSS
→
メソッドインタフェース
相手との取決
HTTP
→
Tightly coupled
CORBA
サービス指向設計
→
オブジェクト
設計対象
SOAP
→
人間が画面を見る
Webシステム
※ 全ての特徴を持つのではなく、一部の特徴を利用するだけでよい。
3. Webサービスの技術課題
Copyright(c) 2002, NEC Corp. All rights reserved. 25
Webサービスは、即、使えるか?
T
接続は本当に簡単か?
T楽観派
TSOAP は HTTP を利用できるので、新たなネットワークの
構築や、管理設定が不要
TXML なので、機種非依存の共通表現の構築が容易
T懐疑派
TSOAP でつなげることはできても、その後のリモート通信
の難しさは、従来と変わらない
Tトランザクション処理をどうするか
T通信エラー処理が簡単にできるか
Tコンテクスト管理ができるか
T相互接続が未検証な状態では、相互運用が疑問
T
セキュリティは万全か?
T
動的なパートナー企業探しは現実的か?
Webサービスは、即、使えるか?
T
接続は本当に簡単か?
T
セキュリティは万全か?
T楽観派
TSSL で暗号化するから安心
TXML 署名で証拠が残り、否認防止が可能
TWS-Security (暗号、署名)も近々標準が制定される。
TLiberty Alliance で認証連携もサポートするらしい
TVPN で通信すれば良い
T懐疑派
TDMZ(非武装地帯)を安全に作れるか
TSOAP は、外向きの通信は簡単だが、内向きの通信をどう
やって安全に行うのか
T通信エラーなどの例外処理にも堅牢か
T
動的なパートナー企業探しは現実的か?
Copyright(c) 2002, NEC Corp. All rights reserved. 27
Webサービスは、即、使えるか?
T
接続は本当に簡単か?
T
セキュリティは万全か?
T
動的なパートナー企業探しは現実的か?
T楽観派
TUDDI を使えば、その時の最良のパートナーを検索可能
Tサービスの信頼性は、レジストラが保証できる
T必要な部分だけでも、動的な連携を利用すれば良い
T懐疑派
T不特定の相手とのビジネスはリスクが高過ぎる
TUDDI の検索は、最初の一回だけ。次からは、同じ相手
と連携するので、毎回、動的に検索する必要はない。
ebXML
R&R
WS-Security
SAML
課題を克服するための技術動向
Tビジネスで利用するために
Simple から Complex に対応する技術
開発、標準化が進展
Tトランザクション、プロセスフロー、セキュリティ、高信頼メッセージング
T相互運用性確保のためのベンダー間の協調
SOAP 1.1 →
→
→
→
1.2
ebXML MS
1.0 →
→
→
→
2.0
WSDL
1.1 →
→
→
→
1.2
UDDI
2.0 →
→
→
→
3.0
BTP
トランザクション
トランザクション
トランザクション
トランザクション
やコンテキスト
やコンテキスト
やコンテキスト
やコンテキスト
の考慮
の考慮
の考慮
の考慮
トランザクション
トランザクション
トランザクション
トランザクション
プロトコル
プロトコル
プロトコル
プロトコル
W3C
ebXML
BPSS, CPPA
OASIS
WS-I
XML
コンソーシアム
コンソーシアム
コンソーシアム
コンソーシアム
DOPG
海外
海外
海外
海外
国内
国内
国内
国内
相互運用性検証
相互運用性検証
相互運用性検証
相互運用性検証
高信頼
高信頼
高信頼
高信頼
メッセージ
メッセージ
メッセージ
メッセージ
認証情報
認証情報
認証情報
認証情報
SSO
LibertyAlliance
ECOM
BPEL4WS
IBM,
MS,
BEA
の
の
の
の
共同
共同
共同
共同
提案
提案
提案
提案
WS-TransactionCopyright(c) 2002, NEC Corp. All rights reserved. 29
ebXML Message Service
T
B2B取引に必要な、コンテキスト管理、高信頼メッ
セージング(再送、到着確認、順序保証など)、パー
トナー契約、署名機能等を
SOAP 上に定義
T
ebXML Message Service 自身は、メッセージヘッ
ダのようなもの
Tあらゆる型のビジネス文書を添付して送信
T
V2.0 仕様が承認される(2002年9月)
T仕様を必須機能と、オプション機能に分離
T必須機能: 基本メッセージ、署名、エラー処理、同期応答
Tオプション機能: 高信頼メッセージ、順序保証、状態通知サー
ビス、マルチホップ
SOAP と ebXML メッセージ
SOAP Envelope
<SOAP-ENV:Body> <m:
GetLastTradePrice
xmlns:m="Some-URI"> <body><symbol>
NEC
</symbol></body> </m:GetLastTradePriceInput> </SOAP-ENV:Body> <SOAP-ENV:Envelope …> </SOAP-ENV:Envelope>SOAP Body
<SOAP-ENV:Header> </SOAP-ENV:Header>SOAP Header
簡単な SOAP メッセージ
ebXML メッセージ
<SOAP-ENV:Header> <MessageHeader> <From> … </From> <To> … </To> <CPAId> … </CPAId> <Service> … </Service> <Action> … </Action> <ConversationId> … <ConversationId> </MessageHeader> <ds:Signature> … </ds:Signature> </SOAP-ENV:Header> <SOAP-ENV:Body> <Manifest> <Reference> … </Reference> </Manifest> </SOAP-ENV:Body>添付ファイル
(MIME)
<?xml version="1.0" encoding="UTF-8"?> <purchase_order> <po_number>1</po_number> <part_number>123</part_number> <price currency="USD">500.00</price>Copyright(c) 2002, NEC Corp. All rights reserved. 31
ebXMLの高信頼メッセージ
Tメッセージ到着確認
TAcknowledgment メッセージ
Tメッセージ再送
T再送回数、再送間隔の設定
T重複受信回避
Tメッセージ
IDによる重複検出
T重複時に、過去のレスポンスを返答するための
persist storage および、その有
効期限の定義
Tメッセージ順序保証
Tオーダー番号による整列
HTTPレスポンス 送信 Ack送信 HTTPレスポンス非同期の到着確認
HTTPレスポンス 送信 HTTPレスポンス 送信非同期の再送処理
再送
間隔
HTTPレスポンス 送信 HTTPレスポンス 送信重複処理と返答保存
再送
間隔
処理
消失 消失 消失 消失 返答返答保存
返答 HTTPレスポンス復元
「一度だけ実行」
「一度だけ実行」
「一度だけ実行」
「一度だけ実行」
を保証
消失 消失 消失 消失 Ack 送信者 受信者 送信者 受信者 送信者 受信者ebXML の相互接続実験
T
電子商取引推進協議会(ECOM)が中心となり、
ebXML のメッセージサービスの相互接続実験を実施。
TebXML 相互接続テスト共通仕様書を公表
TT1: 基本メッセージ
TT2: 同期応答
TT3: セキュリティ(SSL, HTTP認証)
TT4: XML署名
TT5: 高信頼メッセージ
TT6: エラー処理
T富士通、日立、NEC、インフォテリア、NTTの5社が参加
T基本メッセージ、高信頼メッセージの接続に成功
T2002年9月30日にニュースリリース
T2002年12月4日に、アジア地区での相互接続実験開始を
報道
Copyright(c) 2002, NEC Corp. All rights reserved. 33
セキュリティ技術
T
暗号や署名技術との統合
T
WS-Security: SOAP に暗号や署名情報を添付する標準
T
IBM, Microsoft, Verisign が共同で、OASIS に提案
T
シングルサインオン(SSO)に向けた認証連携
T
SAML: 認証結果を交換するための標準
T
Liberty Alliance: SSO のプロセスの標準
T
Sun が、Network Identity というキーワードで、複数の認証基盤
を連携したID管理方式を提案
ID
ID
ID
ID
サイト毎の
サイト毎の
サイト毎の
サイト毎の
ID管理
管理
管理
管理
ID
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
サイト
IDの集中管理
の集中管理
の集中管理
の集中管理
ID
ID
ID
ID
信頼サークル
信頼サークル
信頼サークル
信頼サークル
ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID IDフェデレーション
フェデレーション
フェデレーション
フェデレーション
BTP (Business Transaction Protocol)
T
HP, BEA を中心に、OASIS にて策定中の
Webサービス向けトランザクション仕様
T疎結合、長時間のトランザクションを実現
Tトランザクション制御用メッセージにもXMLを利用
トランザクション トランザクション トランザクション トランザクション コーディネータ コーディネータ コーディネータ コーディネータ クライアント クライアントクライアント クライアント サービスサービスサービスサービス サービスサービスサービスサービス トランザクション トランザクション トランザクション トランザクション 参加者 参加者 参加者 参加者 トランザクション トランザクショントランザクション トランザクション 参加者 参加者 参加者 参加者トランザクション
トランザクション
トランザクション
トランザクション
アプリ
アプリ
アプリ
アプリ
ケーション
ケーション
ケーション
ケーション
プロトコル
プロトコル
プロトコル
プロトコル
開始
開始
開始
開始
参加
参加
参加
参加
参加
参加
参加
参加
制御
制御
制御
制御
制御
制御
制御
制御
Copyright(c) 2002, NEC Corp. All rights reserved. 35
WS-I
(Web Services Interoperability Organization)
T
相互運用が可能なWebサービスの開発および普
及を目的とした業界横断の団体
T
IBM、MS、HP、Oracla他9社が、2002年2月に設立
T
WG活動
T
Webサービスの基本Profile を決定するWG
T
XML Schema 1.0, SOAP 1.1, WSDL 1.1, UDDI 2.0 を中心に
共通仕様を議論中
T
WebサービスのサンプルアプリケーションWG
T
SCMを題材に、サンプルアプリケーションを構築
T
Webサービスの相互接続テストの構築WG
Copyright(c) 2002, NEC Corp. All rights reserved. 37
WebサービスアーキテクチャとNEC製品
T
AP サーバ: WebOTX, WebLogic Server
T
フローエンジン: BizEngine, WebLogic Integration
T
UDDI: WebOTX UDDI Registry
Web サービス用サーバ
Web
サーバ
AP サーバ
XML
プロトコル
ハンドラ
SOAP XMLフロー
エンジン
サービス
コンポーネント
レガシーシステム ラッピング レガシー DB サービス用 DB外部
Web
サービス
ディレクトリ サービス UDDI SO A P SO A PWeb
サービス
利用者
WebOTX WebLogic BizEngine WebOTX UDDI registry 携帯 携帯 携帯 携帯 ORB■
■
■
■
最新の
最新の
最新の
最新のUDDI2.0仕様に対応した
仕様に対応した
仕様に対応した
仕様に対応したUDDIレジスト
レジスト
レジスト
レジスト
リを提供。
リを提供。
リを提供。
リを提供。
■
■
■
■
社内やグループ企業間など特定のサイトだけ
社内やグループ企業間など特定のサイトだけ
社内やグループ企業間など特定のサイトだけ
社内やグループ企業間など特定のサイトだけ
で利用可能な
で利用可能な
で利用可能な
で利用可能なWebサービスのシステムを構築。
サービスのシステムを構築。
サービスのシステムを構築。
サービスのシステムを構築。
WebOTX
WebOTX
WebOTX
WebOTX
Webサービスサービスサービスサービス Webサービスサービスサービスサービス クライアント クライアント クライアント クライアント Private Private UDDI UDDI Registry Registry WSDL Global Global UDDI UDDI Registry Registry WSDL クライアント クライアントクライアント クライアント AP AP AP APDB
WebOTX
WebOTX
EJBEJBコンテナ
コンテナ
コンテナ
コンテナ
DB
CORBA 社内サービス用SOAP
RMI/IIOP
IIOP
CORBA
((((各種サービス)各種サービス)各種サービス)各種サービス) 社外 サービス用検索
検索
登録登録登録登録 登録 登録 登録 登録イン
タ
ー
ネ
ッ
ト
Webサービスサービスサービスサービス クライアント クライアント クライアント クライアントイ
ン
ト
ラネッ
ト
ファイア ウオール クライアント クライアントクライアント クライアント AP AP AP APSO
AP
SOAPサーバ
サーバ
サーバ
サーバ
WebOTX
UDDI Registry
ActiveGlobe WebOTX
ActiveGlobe WebOTX
〜
〜
〜
〜
〜
〜
〜
〜
Web
Web
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
〜
〜
〜
〜
〜
〜
〜
〜
Copyright(c) 2002, NEC Corp. All rights reserved. 39
ActiveGlobe
ActiveGlobe BizEngine
BizEngine
--
Web
Web
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
サービス対応
BizEngine/WS
BizEngine/WS
-
-SOAP によるサービス統合から
によるサービス統合から
によるサービス統合からebXMLによるビジネス連携までをカバー
によるサービス統合から
によるビジネス連携までをカバー
によるビジネス連携までをカバー
によるビジネス連携までをカバー
外部サービスサイト 外部サービスサイト 外部サービスサイト 外部サービスサイトA 外部サービスサイト 外部サービスサイト 外部サービスサイト 外部サービスサイトB 取引先 取引先 取引先 取引先X 取引先 取引先 取引先 取引先YBizEngine/WS
BizEngine/WS
基幹システム 基幹システム基幹システム 基幹システム,etc.SOAP
RPC
SOAP
RPC
ebXML
ebXML
サービス統合プロセス サービス統合プロセス サービス統合プロセス サービス統合プロセス サービス利用者 サービス利用者サービス利用者 サービス利用者 ビジネス取引プロセス ビジネス取引プロセス ビジネス取引プロセス ビジネス取引プロセス 信頼性の高いビジネス文書交換 信頼性の高いビジネス文書交換 信頼性の高いビジネス文書交換 信頼性の高いビジネス文書交換ビジネス取引
ビジネス取引
ビジネス取引
ビジネス取引
内部サービス 内部サービス 内部サービス 内部サービスBizEngine/WS
BizEngine/WS
の特徴
の特徴
の特徴
の特徴
の特徴
の特徴
の特徴
の特徴
T
フローエンジン/エディタを使ったビジネス設計
T
簡単な
Webサービス構築のために
TSOAP サポート
TSOAP からのフローエンジンの起動
Tフローエンジンから、SOAP呼出し
T
ビジネスWebサービスの構築のために
T
ebXML Message Service V2 仕様をサポート
T
メッセージ送受信するフローを定義し、実行
T高信頼メッセージ、CPA V2(契約)サポート
TXML署名機能サポート
Copyright(c) 2002, NEC Corp. All rights reserved. 41
Webサーバ
ORBProxy
Java
Java
対応携帯電話向け
対応携帯電話向け
対応携帯電話向け
対応携帯電話向け
対応携帯電話向け
対応携帯電話向け
対応携帯電話向け
対応携帯電話向け
SOAP
SOAP
技術
技術
技術
技術
技術
技術
技術
技術
ActiveGlobe WebOTX Mobile Broker
ActiveGlobe WebOTX Mobile Broker
EJBコンポーネント EJBコンポーネントEJBコンポーネント EJBコンポーネント
バックエンド
APサーバ等
各キャリア
各キャリア
各キャリア
各キャリア
Java対応
Java対応
Java対応
Java対応
携帯電話
携帯電話
携帯電話
携帯電話
インター インターインター インター インター インター インター インター ネット ネットネット ネット ネット ネット ネット ネットWebサービス
サービス
サービス
サービス
SOAP
SOAP
SOAP
SOAP
RMIサーバサーバサーバサーバ CORBAサーバサーバサーバサーバIIOP
IIOP
IIOP
IIOP
JRMP
JRMP
JRMP
JRMP
T携帯電話からバックエンドへ様々なプロトコルでアクセス可能
T重い標準プロトコルの処理をサーバ側で行い、クライアントを軽量化
TProxyによりさまざまな標準プロトコルに変換可能
TSSLの採用等による、セキュリティの確保
RMI
RMI
RMI
RMI-
--
-IIOP
IIOP
IIOP
IIOP
ロード ロードロード ロード バランサ バランサ バランサ バランサコンパイラ
自動生成
WSDL EJB
クラス
RMI
インター
フェース
IDL
クライアント スタブ 携帯 携帯携帯携帯JavaJavaJavaJava アプリケーション
アプリケーションアプリケーション
アプリケーション
コード例
import com. import com.import com.
import com.nttdocomonttdocomonttdocomo....uinttdocomouiuiui....IApplicationIApplicationIApplicationIApplication;;;; public class
public class public class
public class OrderClientOrderClientOrderClient extends OrderClientextends extends extends IApplicationIApplicationIApplicationIApplication {{{{
…....
public void public void public void
public void processEventprocessEventprocessEventprocessEvent((((intintint type, inttype, type, type, intintintint par) {par) {par) {par) {
….... try { try { try { try { Order Order Order
Order objobjobj = new Order(this, obj= new Order(this, = new Order(this, = new Order(this, "
""
"sumidasumidasumidasumida////servletservlet/servletservlet///_Hello_Proxy_Hello_Proxy_Hello_Proxy",_Hello_Proxy",",",
“OrderObjOrderObjOrderObjOrderObj");");");"); int nstock int nstock int nstock int nstock int nstock int nstock int nstock
int nstock= = = = = = obj= = objobjobjobjobjobjobj...getStockNumgetStockNumgetStockNumgetStockNumgetStockNumgetStockNumgetStockNumgetStockNum((((((((“Gear“GearGearGearGearGearGearGear””);););););););); _l.
_l. _l.
_l.setTextsetTextsetText(String.setText(String.(String.valueOf(String.valueOfvalueOf((((nstockvalueOfnstocknstock));nstock));));)); } catch (Exception e) { } catch (Exception e) { } catch (Exception e) { } catch (Exception e) { err.out(e. err.out(e. err.out(e.
err.out(e.getMessagegetMessagegetMessagegetMessage());());());()); }}}} ….... }}}} }}}}
携帯JavaORBを利用しないと
上の1行が左のコードに。
int intint int nstocknstocknstocknstock;;;; try { try {try { try {HttpConnection HttpConnectionHttpConnection HttpConnection connconnconnconn
= ( = ( = (
= (HttpConnectionHttpConnectionHttpConnectionHttpConnection)Connector.open()Connector.open()Connector.open()Connector.open( http://
http://http://
http://inbinbinb....kkinbkkkk.co.kk.co.jp.co..co.jpjp/Order/jp/Order//Order//Order/getStockNumgetStockNumgetStockNum,,,,getStockNum Connector.READ_WRITE, true); Connector.READ_WRITE, true);Connector.READ_WRITE, true); Connector.READ_WRITE, true); conn
connconn
conn....setRequestMethodsetRequestMethodsetRequestMethod((((HttpConnectionsetRequestMethodHttpConnectionHttpConnectionHttpConnection.POST);.POST);.POST);.POST); DataOutputStream
DataOutputStreamDataOutputStream
DataOutputStream ososos = os= = = connconnconnconn....openDataOutputStreamopenDataOutputStreamopenDataOutputStreamopenDataOutputStream();();();(); os
osos
os....writeUTFwriteUTFwriteUTFwriteUTF("Gear");("Gear");("Gear");("Gear"); os
osos os.close();.close();.close();.close(); conn connconn conn.connect();.connect();.connect();.connect(); DataInputStream DataInputStreamDataInputStream
DataInputStream is = is = is = is = connconnconnconn....openDataInputStreamopenDataInputStreamopenDataInputStreamopenDataInputStream();();();(); if (is.
if (is.if (is.
if (is.readBytereadBytereadByte() == 0) {readByte() == 0) {() == 0) {() == 0) { nstock nstocknstock
nstock = Integer.= Integer.= Integer.= Integer.parseIntparseIntparseInt.(is.parseInt.(is..(is..(is.readUTFreadUTFreadUTF());readUTF());());()); } else {
} else {} else { } else {
re = new re = new re = new
re = new RuntimeExceptionRuntimeExceptionRuntimeException(is.RuntimeException(is.(is.(is.readUTFreadUTFreadUTFreadUTF());());());()); }}}} is.close(); is.close();is.close(); is.close(); conn connconn conn.close();.close();.close();.close(); } catch (Con } catch (Con} catch (Con
} catch (ConnectionNotFoundExceptionnectionNotFoundExceptionnectionNotFoundExceptionnectionNotFoundException e) /* open */ {e) /* open */ {e) /* open */ {e) /* open */ { re = new
re = new re = new
re = new RuntimeExceptionRuntimeExceptionRuntimeException(e.RuntimeException(e.(e.getClass(e.getClass().getClassgetClass().().().getNamegetNamegetNamegetName());());());()); }}}}
5. まとめ
まとめ
T
Webサービスとは、インターネット環境における
疎結合なサービスアーキテクチャ
TWSDL によるサービスの抽象化
TSOAP によるメッセージ交換
T
SOAP, WSDL, UDDI ともに標準化途中
TSOAP 1.2 で、中継ノードも含めた仕様に進化
TWSDL 1.2では、定義の精緻化
TUDDI 3.0 で分散環境におけるUDDIに進化
T
関連する標準化団体
T
OASIS: UDDI, ebXML, WS-Security, SAML, BTP
T
W3C: SOAP, WSDL, XML Schema
6. デモの説明
デモの説明
企業内の資材管理システムと社外のサプライヤをWebサービスで結合するデモ。
1. Webブラウザから発注する従来の企業内の資材発注システム。
2. 大量の資材発注をすると、自動的に社外の納入業者にebXML(Webサービス)で
発注する。
3. ebXML メッセージ中にXML署名などがされる。
4. 同じような発注を、携帯JavaからSOAPを通して実行できる。
<<NECの製品>>
•
Webサービス統合基盤 ActiveGlobe BizEngine を用いて、資材管理システム、
納入業者サーバを構築。
BizEngine が ebXML プロトコルハンドラを提供。
•ActiveGlobe Web OTX Mobile Broker がSOAPのサービスを携帯から呼び出す
機能を提供。
資材システム
在庫確認 あり なし 出庫 見積 発注 回答発注
在庫量
発注
納入業者サーバ
HTML
ebXML
XML署名
プロセスエンジン プロセスエンジンSOAP
iアプリ
ゲートウェイサーバ
Copyright(c) 2002, NEC Corp. All rights reserved. 47
資材発注デモ画面
(1)
社内資材発注画面
(文房具一覧表示中)
(受注履歴表示中)
サプライヤ画面
ebXML
資材発注
受注回答
資材発注デモ画面
(3)
ビジネスプロセス定義例
T
資材発注システムのバックエンドのビジネスプロセス
例
アクティビティ
アクティビティ
アクティビティ
アクティビティ
定義用
定義用
定義用
定義用
テンプレート
テンプレート
テンプレート
テンプレート
購買要求確認
購買要求確認
購買要求確認
購買要求確認
在庫確認
在庫確認
在庫確認
在庫確認
外部発注用メッセージ送信
外部発注用メッセージ送信
外部発注用メッセージ送信
外部発注用メッセージ送信
確認用メッセージ受信
確認用メッセージ受信
確認用メッセージ受信
確認用メッセージ受信
エラー処理
エラー処理
エラー処理
エラー処理
Copyright(c) 2002, NEC Corp. All rights reserved. 49