190 likes | 292 Views
Web サービス II ( 第 9 回). 2005年 12 月 8 日 http://www.wakhok.ac.jp/~tatsuo/ws2/. この時間の目標. JAXR による UDDI ver 3 サーバへのアプリケーションからのアクセス 新しいサンプル %JWSDP_HOME%egistrysamples 登録 ( JAXRPublishOrg.java ) 削除 ( JAXRDelete.java ). UDDI Ver 2 から Ver 3 へ. キーの定義の拡張 Ver 2 UUID のみ サーバが登録時に生成 Ver 3
E N D
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-a863- eb467f6ebcbf
キーの拡張の結果 • キーの生成はサーバのみでない • 複数のサーバに登録可能 • 複数のサーバの連携が可能
なぜ 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 ブラウザで • 登録や削除をブラウザでも確認