JAXR によるアクセス

Webサービス II (第8回)
2005年12月1日
http://www.wakhok.ac.jp/~tatsuo/ws2/
この時間の目標




新しい Service Registry の理解
JAXRによるアプリケーションからのアクセ
ス(前回との比較)
古いサンプル
%JWSDP_HOME%\jaxr\samples
新しいサンプル
%JWSDP_HOME%\registry\samples
UDDI Ver 2 から Ver 3 へ



キーの定義の拡張
Ver 2
UUIDのみ サーバが登録時に生成
Ver 3
URNに一般化
urn:uddi-org:api_v2:public
urn:uuid:469ea252-d39b-45ba-a863eb467f6ebcbf
URL, URI, URN
URL(Universal Resource Locator)
実際のリソースの保存場所の指定
http://www.wakhok.ac.jp/index.html
 URI(Universal Resource Identifier)
世界で唯一の存在の「目印」
<wakhok:doc xmlns:wakhok=
http://www.wakhok.ac.jp/public >
 URN(Universal Resource Name)
世界で唯一の名前(場所ではなく名前)

キーの拡張の結果



キーの生成はサーバのみでない
複数のサーバに登録可能
複数のサーバの連携が可能
もう1つの目玉 ebXML


e-business のためのXMLの標準化
http://www.ebxml.org/
新しい Service Registry は ebXML 3.0
にも対応
なぜ JAXRが使えるのか?




従来の JAXRのAPIでアクセス可能!
JAXRには拡張された形跡がない!
JAXRは高度に抽象化された API
サーバの実装(UDDI)に依存しない記述
抽象化の例(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();

実習の手順




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 ブラウザで
登録や削除をブラウザでも確認
キーの値は Details をクリック
Organization の登録数を確認