Subscription(サブスクリプション)  目次

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.shrun.bat)と同じディレクトリにあります。Subscriptionデモのローカル・レベルのプロパティは、次のファイルからロードされます。

Windows: %REGISTRY_HOME%¥demos¥advanced¥subscription¥env.properties
UNIX: $REGISTRY_HOME/demos/advanced/subscription/env.properties

表9 デモで使用されるプロパティ

名前デフォルト値説明
uddi.demos.user.john.namedemo_john1人目のユーザーの名前
uddi.demos.user.john.passworddemo_john1人目のユーザーのパスワード
uddi.demos.url.subscriptionhttp://localhost:8888/registry/uddi/subscriptionサブスクリプションWebサービス・ポートのURL
uddi.demos.url.securityhttp://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デモを使用します。

  1. デモが適切に構成され、Oracle Service Registryが実行中であることを確認してください。

  2. 次のディレクトリに移動します。

    Windows: %REGISTRY_HOME%¥demos¥advanced¥subscription
    UNIX: $REGISTRY_HOME/demos/advanced/subscription

  3. 次のコマンドを使用して、すべてのデモをビルドします。

    Windows: run.bat make
    UNIX: ./run.sh make

    注意注意

    Windowsプラットフォームでデモをコンパイルすると、次のテキストが表示されることがあります。

    A subdirectory or file ..\..\common\.\build\classes already exists.

    これは予想される現象であり、問題を示すものではありません。

  4. 利用可能なすべてのデモのリストを表示するには、次のコマンドを実行します。

    Windows: run.bat help
    UNIX: ./run.sh help

  5. 選択したデモを実行するには、runコマンドにデモの名前をパラメータとして使用します。たとえば、GetSubscriptionResultsデモを実行するには、次のように起動します。

    Windows: run.bat GetSubscriptionResults
    UNIX: ./run.sh GetSubscriptionResults
  6. 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