Webサービス II (第1回)

Webサービス II (第12回)
2006年1月12日
http://www.wakhok.ac.jp/~tatsuo/ws2/
この時間の目標


総まとめ(JWSDP 1.6)
UDDI ver 3
JAXR
Webサービスの将来
SOA( Service Oriented Architecture)
BPEL
( Business Process Execution Language )
Webサービスのアーキテクチャ

登録、探索、発見
UDDIとは?



Universal Description, Discovery,
and Integration
企業とそのサービスを世界規模で登録
そのためのデータ構造とプロトコルの定義
http://www.uddi.org/
UDDIのデータ構造







企業、サービスに関するメタデータ(XML)
5個の中心となる要素
businessEntity
businessService
tModel
bindingTemplate
publisherAssertion
UDDI Ver 3 へ



キーの定義の拡張
Ver 2
UUIDのみ サーバが登録時に生成
Ver 3
URNに一般化
urn:uddi-org:api_v2:public
urn:uuid:469ea252-d39b-45ba-a863eb467f6ebcbf
UUIDとは?
Universal Unique Identifier

決して重複しない128ビットの数値
Time Stamp(60ビット)
Version情報(4ビット)
Variant識別、Reserved(2ビット)
重複しない乱数(14ビット)
MACアドレス(マシン)の識別(48ビット)
uuid:469ea252-d39b-45ba-a863-eb467f6ebcbf

キーの拡張の結果



キーの生成はサーバのみでない
複数のサーバに登録可能
複数のサーバの連携が可能
通信プロトコル
SOAPのメッセージとして実現(約40種)
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=
"http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/><SOAP-ENV:Body>
<find_service generic="2.0" maxRows="100"
xmlns="urn:uddi-org:api_v2">
<name>Wakkanai</name> </find_service>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

UDDIサーバへのアクセス


JAXR
JAXRは抽象化されたパッケージ
UDDIのデータ構造をおおうことが可能
通信プロトコルを意識する必要はない
例) ConnectionFactory
BusinessQueryManager
Organization
Service
検索のサンプル(1)
通信の開始
ConnectionFactory factory =
JAXRUtility.getConnectionFactory();
Properties props = new Properties();
props.setProperty( “…..”, “url” );
factory.setProperties(props);
Connection connection=
factory.createConnection();

検索のサンプル(2)
サーバへの問い合わせ
RegistryService rs = null;
BusinessQueryManagerImpl qm = null;
rs = connection.getRegistryService();
qm = (BusinessQueryManagerImpl)
rs.getBusinessQueryManager();
BulkResponse response =
qm.findObjects("RegistryObject",
null, namePatterns, null, null, null, null);

検索のサンプル(3)
情報の取り出し
Collection objects =response.getCollection();
Iterator objIter = objects.iterator();
while (objIter.hasNext()) {
RegistryObject object =
(RegistryObject) objIter.next();
Concept objType =
object.getObjectType();

登録のサンプル(1)
通信の開始(検索の場合と同じ)
ConnectionFactory factory =
JAXRUtility.getConnectionFactory();
factory.setProperties(props);
connection = factory.createConnection();

登録のサンプル(2)
ただし、問い合わせと登録の両方の通信
Properties props = new Properties();
props.setProperty(
"javax.xml.registry.queryManagerURL",
queryUrl);
props.setProperty(
"javax.xml.registry.lifeCycleManagerURL",
publishUrl);

登録のサンプル(3)

登録の操作(追加・削除)は
BusinessLifeCycleManager を通じて
BusinessLifeCycleManager blcm
= rs.getBusinessLifeCycleManager();
Organization org =
blcm.createOrganization(
bundle.getString("org.name"));
SOA とは?
Service Oriented Architecture
(cf. Object Oriented Language )
 「サービス」の集まりとしてソフトウェアをと
らえる(設計、開発の新しい考え方)

BPELとは?





Business Process Execution Language
複数のWebサービスの統合・連携
サービス間は「疎結合」
XMLメッセージを交換
言語、実行環境には依存しない
IBM Web Sphere などで実装
oasis-open.org で規格を策定中
(2005 12月現在で ver. 2.0)
試験の範囲






Webサービスの基本
JAX-RPC と WSDL
UDDI とその仕組み
UUID の技術
UDDI Ver.3 の新機能
JAXRのAPI
情報の検索と登録
Webサービスの今後( SOA, BPEL )