Webサービス II (第1回)

Webサービス II (第9回)
2005年12月8日
http://www.wakhok.ac.jp/~tatsuo/ws2/
この時間の目標




JAXRによる UDDI ver 3 サーバへのアプ
リケーションからのアクセス
新しいサンプル
%JWSDP_HOME%\registry\samples
登録( JAXRPublishOrg.java )
削除( JAXRDelete.java )
UDDI Ver 2 から Ver 3 へ



キーの定義の拡張
Ver 2
UUIDのみ サーバが登録時に生成
Ver 3
URNに一般化
urn:uddi-org:api_v2:public
urn:uuid:469ea252-d39b-45ba-a863eb467f6ebcbf
キーの拡張の結果



キーの生成はサーバのみでない
複数のサーバに登録可能
複数のサーバの連携が可能
なぜ JAXRが使えるのか?





従来の JAXRのAPIでアクセス可能!
JAXRには拡張された形跡がない!
JAXRは高度に抽象化された API
サーバの実装(UDDI)に依存しない記述
*新サンプルでは実装依存が少し残る
org.freebxml.omar.clietn.xml.registry.
util.JAXRUtility クラス
検索のサンプル(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"));
実習の手順




JWSDPのTomcatの起動
http://localhost:8080/soar にアクセス
%JWSDP_HOME%\reigistry\samples
の下の commons に移動
共通の設定ファイルの確認と必要項目の
追加(build.properties, targets.xml)
各サンプルのサブディレクトリに移動
ant によるコンパイルと実行
build-properties (環境変数追加)







container.home=z:/tomcat50-jwsdp
jwsdp.home=z:/jwsdp-1.6
registry.home=z:/jwsdp-1.6/registry
jaxp.home=z:/jwsdp-1.6/jaxp
jaxr.home=z:/jwsdp-1.6/jaxr
jaxb.home=z:/jwsdp-1.6/jaxb
soap.home=z:/jwsdp-1.6/saaj
targets.xml (クラスパス追加1)
<fileset
dir="${container.home}/common/lib">
<fileset dir=
"${container.home}/common/endorsed">
targets.xml (クラスパス追加2)
<fileset dir="${jaxr.home}/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${jwsdp.home}/jwsdp-shared/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${soap.home}/lib">
<include name="*.jar"/>
</fileset>
:
:
サンプルの実行例(1)



query-name (名前のパターンで検索)
コンパイル
ターゲット名 compile (デフォルト)
実行
ターゲット名 run
プロパティ name を通じて検索パターン
ant run -Dname=“Japan”
ant run -Dname=“Ja%”
サンプルの実行例(2)



query-object-type (型で検索)
コンパイル
ターゲット名 compile (デフォルト)
実行
ターゲット名 run
プロパティ type を通じて検索パターン
ant run -Dtype=“Organization”
サンプルの実行例(3)



Organizations (企業情報の登録、検索)
(複数のプログラムで構成)
コンパイル(一括でコンパイル)
ターゲット名 compile (デフォルト)
実行
起動プログラムをターゲット名で指定
ant pub-org
(企業情報の登録)
JAXRExamples.properties に登録内容
サンプルの実行例(4)




delete-object (情報の削除)
実行
ターゲット名 run
プロパティ id を通じてオブジェクトのキー
ant run -Did=
"urn:uuid:469ea252-d39b-45ba…”
キーの値は登録時に表示 or ブラウザで
登録や削除をブラウザでも確認