Oracle Service RegistryのAdvancedのSubscription(サブスクリプション)デモ・セットでは、Oracle Service RegistryのApplication Programming Interface(API)の機能のデモンストレーションが行われ、サブスクリプションAPIを使用してレジストリに対するサブスクリプション・コールを実行する方法が示されます。
Oracle Service RegistryのAdvancedのSubscription(サブスクリプション)デモでは、UDDI Version 3 Specificationのサブスクリプションの側面を扱います。 Oracle Service RegistryのクライアントAPIを使用して、新規サブスクリプションの作成、サブスクリプションのリストの取得、サブスクリプションの結果の取得、サブスクリプションの削除を行う方法について学習します。
Oracle Service RegistryのAdvancedのSubscription(サブスクリプション)デモ・セットには、Oracle Service RegistryのクライアントAPIの学習を支援する次のデモが含まれています。
SaveSubscription Save_subscriptionオブジェクトをビルドして入力し、UDDIレジストリのSubscriptionスタブを取得し、save_subscriptionコールを実行する方法のデモンストレーションです。
GetSubscriptions Get_subscriptionsオブジェクトをビルドして入力し、UDDIレジストリのSubscriptionスタブを取得し、get_subscriptionsコールを実行する方法のデモンストレーションです。
GetSubscriptionResults Get_subscriptionResultsオブジェクトをビルドして入力し、UDDIレジストリのSubscriptionスタブを取得し、get_subscriptionResultsコールを実行する方法のデモンストレーションです。
DeleteSubscription Delete_subscriptionオブジェクトをビルドして入力し、UDDIレジストリのSubscriptionスタブを取得し、delete_subscriptionコールを実行する方法のデモンストレーションです。
Oracle Service Registryがすでにインストールされ、環境変数REGISTRY_HOMEにレジストリのインストール場所が設定されていることを想定しています。
Oracle Service Registryのデモを実行するには、レジストリが実行中である必要があります。
デモを構成する必要があります。構成システムには、グローバルとローカルの2つのレベルがあります。グローバル・レベルで定義されたプロパティは、ローカル・レベルで上書きできます。グローバル・プロパティは、次のファイルにあります。
| Windows: | %REGISTRY_HOME%¥demos¥env.properties |
| UNIX: | $REGISTRY_HOME/demos/env.properties |
Oracle Service Registryのインストール中に設定された値はそのまま使用でき、値の変更はすべてのデモに影響を与えます。単一のデモについて(つまりローカル・レベルで)一部のプロパティの値を再定義する必要がある場合は、env.propertiesを編集してください。このファイルは、ファイルrun.sh(run.bat)と同じディレクトリにあります。Subscriptionデモのローカル・レベルのプロパティは、次のファイルからロードされます。
| Windows: | %REGISTRY_HOME%¥demos¥advanced¥subscription¥env.properties |
| UNIX: | $REGISTRY_HOME/demos/advanced/subscription/env.properties |
表9 デモで使用されるプロパティ
| 名前 | デフォルト値 | 説明 |
|---|---|---|
| uddi.demos.user.john.name | demo_john | 1人目のユーザーの名前 |
| uddi.demos.user.john.password | demo_john | 1人目のユーザーのパスワード |
| uddi.demos.url.subscription | http://localhost:8888/registry/uddi/subscription | サブスクリプションWebサービス・ポートのURL |
| uddi.demos.url.security | http://localhost:8888/registry/uddi/security | セキュリティWebサービス・ポートのURL |
この項では、すべてのデモで使用されるプログラミング・パターンを、GetSubscriptionResultsデモを例にして説明します。このデモのソース・コードは次のファイルにあります。
| Windows: | %REGISTRY_HOME%¥demos¥basic¥subscription¥src¥demo¥uddi¥subscription¥GetSubscriptionResults.java |
| UNIX: | $REGISTRY_HOME/demos/basic/subscription/src/demo/uddi/subscription/GetSubscriptionResults.java |
mainメソッドの説明から始めます。最初の部分は、ユーザーがデモを構成するために使用します。次にユーザーがUDDIレジストリにログインし、リクエストのパラメータを含むGet_subscriptionResultsオブジェクトを作成します。このオブジェクトは、次にSOAP UDDIコールget_subscriptionResultsに変換されます。その後結果が表示され、ユーザーはUDDIレジストリからログオフします。
String user = UserInput.readString("Enter user name",
DemoProperties.getProperty(USER_JOHN_NAME));
String password = UserInput.readString("Enter password",
DemoProperties.getProperty(USER_JOHN_PASSWORD));
String key = UserInput.readString("Enter subscription key", "");
int shift = UserInput.readInt("Enter start of coverage period in minutes", 60);
System.out.println();
UDDI_Security_PortType security = getSecurityStub();
String authInfo = getAuthInfo(user, password, security);
Get_subscriptionResults get = createGetSubscriptionResults(key, shift, authInfo);
SubscriptionResultsList result = getSubscriptionResults(get);
printSubscriptionResults(result);
discardAuthInfo(authInfo, security);
メソッドcreateGetSubscriptionResultsでは、ユーザーのUDDIレジストリ、coveragePeriod、authInfoにおけるサブスクリプションを識別するパラメータとしてsubscriptionKeyが使用されます。CoveragePeriodは、選択したサブスクリプションで一致する変更において、そのユーザーに関係する期間を識別するために使用します。
public static Get_subscriptionResults createGetSubscriptionResults(String subscriptionKey,
int coveragePeriod, String authInfo) throws InvalidParameterException {
Get_subscriptionResults getSubscriptionResults = new Get_subscriptionResults();
getSubscriptionResults.setSubscriptionKey(subscriptionKey);
// calculate coverage period
long coveragePeriodShiftInMs = coveragePeriod * 60 * 1000;
long endPoint = System.currentTimeMillis();
long startPoint = endPoint - coveragePeriodShiftInMs;
getSubscriptionResults.setCoveragePeriod(new CoveragePeriod(new Date(startPoint),
new Date(endPoint)));
getSubscriptionResults.setAuthInfo(authInfo);
return getSubscriptionResults;
}
ヘルパー・メソッドgetSubscriptionStub()によって、URL_SUBSCRIPTIONプロパティで指定されたURLでリスニングするWebサービスのUDDI Subscriptionスタブが返ります。
public static UDDI_Subscription_PortType getSubscriptionStub() throws SOAPException {
String url = DemoProperties.getProperty(URL_SUBSCRIPTION,
"http://localhost:8888/registry/uddi/subscription");
System.out.print("Using Subscription at url " + url + " ..");
UDDI_Subscription_PortType subscriptionStub = UDDISubscriptionStub.getInstance(url);
System.out.println(" done");
return subscriptionStub;
}
UDDI APIコールget_subscriptionResultsが、メソッドgetSubscriptionResults()で次のように実行されます。
public static SubscriptionResultsList getSubscriptionResults(Get_subscriptionResults save)
throws UDDIException, SOAPException {
UDDI_Subscription_PortType subscriptionStub = getSubscriptionStub();
System.out.print("Get in progress ...");
SubscriptionResultsList result = subscriptionStub.get_subscriptionResults(save);
System.out.println(" done");
return result;
}この項では、Oracle Service Registryの高度なサブスクリプション・デモをビルドして実行する方法を示します。引き続きGetSubscriptionResultsデモを使用します。
デモが適切に構成され、Oracle Service Registryが実行中であることを確認してください。
次のディレクトリに移動します。
| Windows: | %REGISTRY_HOME%¥demos¥advanced¥subscription |
| UNIX: | $REGISTRY_HOME/demos/advanced/subscription |
次のコマンドを使用して、すべてのデモをビルドします。
| Windows: | run.bat make |
| UNIX: | ./run.sh make |
![]() | 注意 |
|---|---|
|
Windowsプラットフォームでデモをコンパイルすると、次のテキストが表示されることがあります。 A subdirectory or file ..\..\common\.\build\classes already exists. これは予想される現象であり、問題を示すものではありません。 | |
利用可能なすべてのデモのリストを表示するには、次のコマンドを実行します。
| Windows: | run.bat help |
| UNIX: | ./run.sh help |
選択したデモを実行するには、runコマンドにデモの名前をパラメータとして使用します。たとえば、GetSubscriptionResultsデモを実行するには、次のように起動します。
| Windows: | run.bat GetSubscriptionResults |
| UNIX: | ./run.sh GetSubscriptionResults |
Oracle Service RegistryのSubscriptionデモでは、サブスクリプションAPIの完全なユースケースが示されます。SaveSubscriptionデモでは、ユーザーJohn Demoに対する新規サブスクリプションが作成されます。このサブスクリプションは、Marketingという名前のビジネス・エンティティの変更を監視します。
Running SaveSubscription demo...
Saving subscription where
Enter user name [demo_john]:
Enter password [demo_john]:
Enter business name to watch [Marketing]:
Enter subscription validity in days [2]:
Enter limit of subscription results [5]:
Using Security at url https://mycomp.com:8443/registry/uddi/security .. done
Logging in .. done
businessName = Marketing
limit = 5
valid = 2
Using Subscription at url https://mycomp.com:8443/registry/uddi/subscription .. done
Save in progress ... done
Subscription 1 : uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd
<subscription brief="false" xmlns="urn:uddi-org:sub_v3">
<subscriptionKey>uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd</subscriptionKey>
<subscriptionFilter>
<find_business xmlns="urn:uddi-org:api_v3">
<name>Marketing</name>
</find_business>
</subscriptionFilter>
<maxEntities>5</maxEntities>
<expiresAfter>2004-05-14T11:28:30.721+02:00</expiresAfter>
</subscription>
********************************************************
Logging out .. done
使用可能なサブスクリプションのリストを表示するには、GetSubscriptionsデモを次のように実行します。
Finding subscriptions where
Enter user name [demo_john]:
Enter password [demo_john]:
Using Security at url https://mycomp.com:8443/registry/uddi/security .. done
Logging in .. done
Using Subscription at url https://mycomp.com:8443/registry/uddi/subscription .. done
Get in progress ... done
Subscription 1 : uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd
<subscription brief="false" xmlns="urn:uddi-org:sub_v3">
<subscriptionKey>uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd</subscriptionKey>
<subscriptionFilter>
<find_business xmlns="urn:uddi-org:api_v3">
<name>Marketing</name>
</find_business>
</subscriptionFilter>
<maxEntities>5</maxEntities>
<expiresAfter>2004-05-14T11:28:30.721+02:00</expiresAfter>
</subscription>
********************************************************
Logging out .. done
次に、すでに定義したサブスクリプション・フィルタに一致するいくつかのトラフィックをUDDIレジストリ上に生成する必要があります。 Oracle Service RegistryのBasicのPublishingデモのSaveBusinessデモを使用して、Marketingという名前のビジネス・エンティティを保存できます。
Running SaveBusiness demo...
Saving business entity where
Enter (optional) businessKey []:
Enter count of names [1]:
Enter language code []:
Enter name in language [Marketing]:
Enter description [Saved by SaveBusiness demo]:
Using Security at url https://mycomp.com:8443/registry/uddi/security .. done
Logging in .. done
businessKey =
lang = null, name = Marketing
description = Saved by SaveBusiness demo
Using Publishing at url https://mycomp.com:8443/registry/uddi/publishing .. done
Save in progress ... done
Business 1 : uddi:8097cc00-a578-11d8-91cd-5c1d367091cd
<businessEntity businessKey="uddi:8097cc00-a578-11d8-91cd-5c1d367091cd" xmlns="urn:uddi-org:api_v3">
<name> Marketing</name>
<description> Saved by SaveBusiness demo</description>
</businessEntity>
次に、サブスクリプションの結果を取得します。正しいサブスクリプション鍵と十分な対象期間を指定する必要があります。
Running GetSubscriptionResults demo...
Finding subscription results where
Enter user name [demo_john]:
Enter password [demo_john]:
Enter subscription key []: uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd
Enter start of coverage period in minutes [60]:
Using Security at url https://mycomp.com:8443/registry/uddi/security .. done
Logging in .. done
Using Subscription at url https://mycomp.com:8443/registry/uddi/subscription .. done
Get in progress ... done
Subscription uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd
Coverage period=Fri May 14 08:30:28 CEST 2004 - Fri May 14 09:30:28 CEST 2004
Subscription results:
<subscriptionResultsList xmlns="urn:uddi-org:sub_v3">
<chunkToken>0</chunkToken>
<coveragePeriod>
< startPoint>2004-05-14T08:30:28.565+02:00</startPoint>
< endPoint>2004-05-14T09:30:28.824+02:00</endPoint>
</coveragePeriod>
< subscription brief="false">
< subscriptionKey> uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd</subscriptionKey>
< subscriptionFilter>
< find_business xmlns="urn:uddi-org:api_v3">
< name> Marketing</name>
</find_business>
</subscriptionFilter>
< maxEntities>5</maxEntities>
< expiresAfter>2004-05-14T11:28:30.721+02:00</expiresAfter>
</subscription>
< businessList>
< businessInfos>
< businessInfo businessKey="uddi:8097cc00-a578-11d8-91cd-5c1d367091cd">
< name> Marketing</name>
< description> Saved by SaveBusiness demo</description>
</businessInfo>
</businessInfos>
</businessList>
</subscriptionResultsList>
********************************************************
サブスクリプションが不要になった場合は、DeleteSubscriptionデモを使用して削除できます。
Enter subscription key []: uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd Using Security at url https://mycomp.com:8443/registry/uddi/security .. done Logging in .. done subscriptionKey = uddi:4f0d7450-a578-11d8-91cd-5c1d367091cd Using Subscription at url https://mycomp.com:8443/registry/uddi/subscription .. done Delete in progress ... done Logging out .. done