Inquiry v3  目次

Oracle Service RegistryのBasicのInquiryデモ・セットは、Oracle Service RegistryのApplication Programming Interface(API)の機能のデモンストレーション、およびこのAPIを使用してUDDIレジストリに対する基本的な照会コールを実行する方法の学習に使用します。

Oracle Service RegistryのBasicのInquiryデモでは、UDDI Version 3.0.1 Specificationの照会の側面を扱います。 Oracle Service RegistryのクライアントAPIを使用して、SOAPインタフェース経由でUDDIレジストリの情報にアクセスし、情報を取得する方法を学習します。find_businessからget_tModelまでの各UDDIコールに対して1つずつデモがあります。

Oracle Service RegistryのBasicのInquiryデモ・セットには、次のデモが含まれています。 これらは、Oracle Service RegistryのクライアントAPIの学習を支援するものです。

FindBinding Find_bindingオブジェクトをビルドして入力し、UDDIレジストリのInquiryスタブを取得し、find_bindingコールを実行し、結果を表示する方法のデモンストレーションです。

FindBusiness Find_businessオブジェクトをビルドして入力し、UDDIレジストリのInquiryスタブを取得し、find_businessコールを実行し、結果を表示する方法のデモンストレーションです。

FindRelatedBusiness Find_relatedBusinessオブジェクトをビルドして入力し、UDDIレジストリのInquiryスタブを取得し、find_relatedBusinessコールを実行し、結果を表示する方法のデモンストレーションです。

FindService Find_serviceオブジェクトをビルドして入力し、UDDIレジストリのInquiryスタブを取得し、find_serviceコールを実行し、結果を表示する方法のデモンストレーションです。

FindTModel Find_tModelオブジェクトをビルドして入力し、UDDIレジストリのInquiryスタブを取得し、find_tModelコールを実行し、結果を表示する方法のデモンストレーションです。

GetBindingDetail Get_bindingDetailオブジェクトを作成し、フェッチするbindingTemplateのbindingKeyを設定し、UDDIレジストリのInquiryスタブを取得し、get_bindingDetailコールを実行し、結果を表示する方法のデモンストレーションです。

GetBusinessDetail Get_businessDetailオブジェクトを作成し、フェッチするbusinessEntityのbusinessKeyを設定し、UDDIレジストリのInquiryスタブを取得し、get_businessDetailコールを実行し、結果を表示する方法のデモンストレーションです。

GetOperationalInfo Get_operationalInfoオブジェクトを作成し、UDDIキーを設定し、UDDIレジストリのInquiryスタブを取得し、get_operationalInfoコールを実行し、選択したUDDI構造の操作情報を表示する方法のデモンストレーションです。

GetServiceDetail Get_serviceDetailオブジェクトを作成し、フェッチするビジネス・サービスのserviceKeyを設定し、UDDIレジストリのInquiryスタブを取得し、get_serviceDetailコールを実行し、結果を表示する方法のデモンストレーションです。

GetTModeDetail Get_tModelDetailオブジェクトを作成し、フェッチするtModelのtModelKeyを設定し、UDDIレジストリのInquiryスタブを取得し、get_tModelDetailコールを実行し、結果を表示する方法のデモンストレーションです。

前提条件および準備手順: コード  目次

Oracle Service Registryがすでにインストールされ、環境変数REGISTRY_HOMEにレジストリのインストール場所が設定されていることを想定しています。

Oracle Service Registryのデモを実行するには、レジストリが実行中である必要があります。

デモを構成する必要があります。構成システムには、グローバルとローカルの2つのレベルがあります。グローバル・レベルで定義されたプロパティは、ローカル・レベルで上書きできます。グローバル・プロパティは、次のファイルにあります。

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

Oracle Service Registryのインストール中に設定された値はそのまま使用でき、値の変更はすべてのデモに影響を与えます。単一のデモについて(つまりローカル・レベルで)プロパティの値を再定義する必要がある場合は、run.batrun.sh)が格納されているディレクトリ内のファイルenv.propertiesを編集してください。Basic/Inquiryデモのローカル・レベルのプロパティは、次のファイルにロードされています。

Windows: %REGISTRY_HOME%¥demos¥basic¥inquiry¥v3¥env.properties
UNIX: $REGISTRY_HOME/demos/basic/inquiry/v3/env.properties

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

名前デフォルト値説明
uddi.demos.result.max_rows5レジストリから返されるデータの制限
uddi.demos.url.inquiryhttp://localhost:8888/registry/uddi/inquiry照会Webサービス・ポートのURL
プレゼンテーションおよび機能プレゼンテーション  目次

この項では、すべてのデモで使用されるプログラミング・パターンを、FindTModelデモを例にして説明します。ソース・コードは次のファイルにあります。

Windows: %REGISTRY_HOME%¥demos¥basic¥inquiry¥src¥demo¥uddi¥v3¥inquiry¥FindTModel.java
UNIX: $REGISTRY_HOME/demos/basic/inquiry/src/demo/uddi/v3/inquiry/FindTModel.java

mainメソッドは単純です。ユーザーの入力(tModelの名前とfindQualifierの名前)を収集し、メソッドをコールしてFind_tModelオブジェクトを初期化し、find_tModel UDDIコールを実行し、見つかったtModelのリストを表示します。

String name = UserInput.readString("Enter name", "demo%");
String findQualifier = UserInput.readString("Enter findQualifier", "approximateMatch");
Find_tModel find_tModel = createFindByTModel(name, findQualifier);
TModelList result = findTModel(find_tModel);
printTModelList(result);

createFindTModel()メソッドを使用して、Find_tModelクラスの新規インスタンスを作成し、各パラメータからの値で初期化します。

public static Find_tModel createFindByTModel(String name, String findQualifier)
        throws InvalidParameterException {
    System.out.println("findQualifier = " + findQualifier);
    System.out.println("name = " + name);
    Find_tModel find_tModel = new Find_tModel();
    find_tModel.setName(new Name(name));
    find_tModel.setMaxRows(new Integer(MAX_ROWS));
    find_tModel.addFindQualifier(findQualifier);
    return find_tModel;
}

ヘルパー・メソッドgetInquiryStub()によって、URL_INQUIRYプロパティで指定されたURLでリスニングするWebサービスのUDDI Inquiryスタブが返ります。

public static UDDI_Inquiry_PortType getInquiryStub()
        throws SOAPException {
    // you can specify your own URL in property - uddi.demos.url.inquiry
    String url = DemoProperties.getProperty(URL_INQUIRY, "http://localhost:8888/registry/uddi/inquiry");
    System.out.print("Using Inquiry at url " + url + " ..");
    UDDI_Inquiry_PortType inquiry = UDDIInquiryStub.getInstance(url);
    System.out.println(" done");
    return inquiry;
}

UDDI APIコールfind_tModelが、メソッドfindTModelで次のように実行されます。

public static TModelList findTModel(Find_tModel find_tModel)
        throws UDDIException, SOAPException {
    UDDI_Inquiry_PortType inquiry = getInquiryStub();
    System.out.print("Search in progress ..");
    TModelList tModelList = inquiry.find_tModel(find_tModel);
    System.out.println(" done");
    return tModelList;
}

見つかったtModelのリストは、メソッドprintTModelListによって出力されます。 Oracle Service RegistryのクライアントAPIで重要な点は、それぞれのUDDIオブジェクトにメソッドtoXML()が含まれ、それによってそのXML表現が、判読可能な書式化されたリストで返されることです。

public static void printTModelList(TModelList tModelList) {
    System.out.println();
    ListDescription listDescription = tModelList.getListDescription();
    if (listDescription!=null) {
        // list description is mandatory part of result,
	// if the resultant list is subset of available data
        int includeCount = listDescription.getIncludeCount();
        int actualCount = listDescription.getActualCount();
        int listHead = listDescription.getListHead();
        System.out.println("Displaying "+includeCount+" of "+
                           actualCount+", starting at position " + listHead);
    }

    TModelInfoArrayList tModelInfoArrayList = tModelList.getTModelInfoArrayList();
    if (tModelInfoArrayList==null) {
        System.out.println("Nothing found");
        return;
    }

    int position = 1;
    for (Iterator iterator = tModelInfoArrayList.iterator(); iterator.hasNext();) {
        TModelInfo tModelTemplate = (TModelInfo) iterator.next();
        System.out.println("TModel "+position+" : "+tModelTemplate.getTModelKey());
        System.out.println(tModelTemplate.toXML());
        System.out.println();
        System.out.println("********************************************************");
        position++;
    }
}
デモのビルドと実行  目次

この項では、Oracle Service RegistryのBasicのInquiryデモ・セットをビルドして実行する方法を示します。引き続きFindTModelデモを例に使用します。

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

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

    Windows: %REGISTRY_HOME%¥demos¥basic¥inquiry¥v3
    UNIX: $REGISTRY_HOME/demos/basic/inquiry/v3

  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コマンドを実行します。たとえば、FindTModelデモを実行するには、次のように起動します。

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

    このデモの出力は次のようになります。

    Enter name [demo%]:
    Enter findQualifier [approximateMatch]:
    findQualifier = approximateMatch
    name = demo%
    Using Inquiry at url http://localhost:8888/registry/uddi/inquiry .. done
    Search in progress .. done
    
    Displaying 3 of 3, starting at position 1
    TModel 1 : uddi:systinet.com:demo:departmentID
    
    <tModelInfo tModelKey="uddi:systinet.com:demo:departmentID"
                   xmlns="urn:uddi-org:api_v3">
      <name>demo:departmentID</name>
      <description>Identifier of the department</description>
    </tModelInfo>
    
    ********************************************************
    TModel 2 : uddi:systinet.com:demo:hierarchy
    
    <tModelInfo tModelKey="uddi:systinet.com:demo:hierarchy"
                   xmlns="urn:uddi-org:api_v3">
      <name>demo:hierarchy</name>
      <description>Business hierarchy taxonomy</description>
    </tModelInfo>
    
    ********************************************************
    TModel 3 : uddi:systinet.com:demo:location:floor
    
    <tModelInfo tModelKey="uddi:systinet.com:demo:location:floor" xmlns="
                urn:uddi-org:api_v3">
      <name>demo:location:floor</name>
      <description>Specifies floor, on which the department is located</description>
    </tModelInfo>
    
    ********************************************************
  6. デモを再ビルドするには、run.bat clean./run.sh clean)を実行してclassesディレクトリを削除し、run.bat make./run.sh make)を実行してデモ・クラスを再ビルドします。