Advanced Inquiry - Range Queries(高度な照会: 範囲問合せ)  目次

Oracle Service RegistryのRange Queries(範囲問合せ)デモ・セットでは、Oracle Service Registryの照会の拡張機能である範囲問合せの使用方法のデモンストレーションを行います。 Oracle Service Registryの範囲問合せ機能を利用すると、比較演算子(>、<)の機能を使用して、keyedReference内で一致するkeyValueを求めてUDDIエンティティを検索できます。

このデモ・セットに含まれるデモは次のとおりです。

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

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

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

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

名前デフォルト値説明
uddi.demos.result.max_rows5レジストリから返されるデータの制限
uddi.demos.url.inquiryExthttp://localhost:8888/registry/uddi/inquiryExt拡張照会Webサービス・ポートのURL

プレゼンテーションおよび機能プレゼンテーション  目次

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

Windows: %REGISTRY_HOME%¥demos¥advanced¥inquiry¥src¥demo¥uddi¥rq¥FindBusiness.java
UNIX: $REGISTRY_HOME/demos/advanced/inquiry/src/demo/uddi/rq/FindBusiness.java

ヘルパー・メソッドcreateFindBusinessによって、次のようにしてFindBusiness構造が作成されます。


public Find_business createFindBusiness(String tModelKey, String keyValue,
                                        String operator, String quantifier)
        throws InvalidParameterException {
    System.out.println("tModelKey = " + tModelKey);
    System.out.println("keyValue = " + keyValue);
    System.out.println("operator = " + operator);
    System.out.println("quantifier = " + quantifier);

    Find_business find_business = new Find_business();
    QualifiedKeyedReference qualifiedKeyedReference = new QualifiedKeyedReference();
    qualifiedKeyedReference.setTModelKey(tModelKey);
    qualifiedKeyedReference.setKeyValue(keyValue);
    qualifiedKeyedReference.setFindQualifierArrayList(parseFindQualifiers(operator, quantifier));
    find_business.setCategoryBag(new CategoryBag(new KeyedReferenceArrayList(qualifiedKeyedReference)));
    find_business.setMaxRows(new Integer(MAX_ROWS));

    return find_business;
}
        

findBusinessメソッドによって、次のようにして検索操作が実行されます。


public BusinessList findBusiness(Find_business find_business) throws UDDIException, SOAPException {
    System.out.print("Check structure validity .. ");
    try {
        find_business.check();
    } catch (InvalidParameterException e) {
        System.out.println("Failed!");
        throw new UDDIException(e);
    }
    System.out.println("OK");

    UDDI_Inquiry_PortType inquiry = getInquiryStub();
    System.out.print("Search in progress ..");
    BusinessList businessList = inquiry.find_business(find_business);
    System.out.println(" done");
    return businessList;
}
        

デモのビルドと実行  目次

この項では、Oracle Service RegistryのAdvanced Inquiry(高度な照会)デモ・セットをビルドして実行する方法を示します。引き続きFindBusinessデモを使用します。

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

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

    Windows %REGISTRY_HOME%¥demos¥advanced¥inquiry
    UNIX $REGISTRY_HOME/demos/advanced/inquiry

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

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

    注意注意

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

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

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

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

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

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

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

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

    
    Searching for businesses by category where keyedReference
    Enter tModelKey [uddi:systinet.com:demo:location:floor]:
    Enter keyValue [1]: 3
    Enter operator (=,<,>,<=,>=,<>) [=]:>
    Enter quantifier (exists,notExists) [exists]:
    tModelKey = uddi:systinet.com:demo:location:floor
    keyValue = 3
    operator = >
    quantifier = exists
    Check structure validity .. OK
    Using Inquiry at url http://van.in.idoox.com:8888/registry/uddi/inquiryExt .. done
    Search in progress .. done
    
    Displaying 1 of 1, starting at position 1
    Business 1 : uddi:systinet.com:demo:it
    <businessInfoExt businessKey="uddi:systinet.com:demo:it" xmlns="http://systinet.com/uddi/api/v3/ext/5.0">
      <name xmlns="urn:uddi-org:api_v3">IT</name>
      <description xmlns="urn:uddi-org:api_v3">IT department</description>
      <serviceInfos xmlns="urn:uddi-org:api_v3">
        <serviceInfoExt serviceKey="uddi:systinet.com:demo:it:support" businessKey="uddi:systinet.com:demo:it" xmlns="http://systinet.com/uddi/api/v3/ext/5.0">
          <name xmlns="urn:uddi-org:api_v3">Support</name>
          <description xmlns="urn:uddi-org:api_v3">Telephone support</description>
          <bindingTemplates xmlns="urn:uddi-org:api_v3">
            <bindingTemplate bindingKey="uddi:b77eb8f0-86ce-11d8-ba05-123456789012" serviceKey="uddi:systinet.com:demo:it:support">
              <description>IT related issues shall be reported there</description>
              <accessPoint useType="endPoint">tel:+1-123-456-7890</accessPoint>
              <tModelInstanceDetails>
                <tModelInstanceInfo tModelKey="uddi:uddi.org:transport:telephone"/>
              </tModelInstanceDetails>
            </bindingTemplate>
          </bindingTemplates>
        </serviceInfoExt>
        <serviceInfoExt serviceKey="uddi:systinet.com:demo:hr:employeesList" businessKey="uddi:systinet.com:demo:hr" xmlns="http://systinet.com/uddi/api/v3/ext/5.0">
          <name xmlns="urn:uddi-org:api_v3">EmployeeList</name>
          <description xmlns="urn:uddi-org:api_v3">wsdl:type representing service</description>
          <bindingTemplates xmlns="urn:uddi-org:api_v3">
            <bindingTemplate bindingKey="uddi:5c546520-78b8-11d8-bec4-123456789012" serviceKey="uddi:systinet.com:demo:hr:employeesList">
              <description>wsdl:type representing port</description>
              <accessPoint useType="http://schemas.xmlsoap.org/soap/http">urn:unknown-location-uri</accessPoint>
              <tModelInstanceDetails>
                <tModelInstanceInfo tModelKey="uddi:systinet.com:demo:employeeList:binding">
                  <instanceDetails>
                    <instanceParms>EmployeeList</instanceParms>
                  </instanceDetails>
                </tModelInstanceInfo>
                <tModelInstanceInfo tModelKey="uddi:systinet.com:demo:employeeList:portType">
                  <instanceDetails>
                    <instanceParms>EmployeeList</instanceParms>
                  </instanceDetails>
                </tModelInstanceInfo>
              </tModelInstanceDetails>
              <categoryBag>
                <keyedReference tModelKey="uddi:uddi.org:xml:namespace" keyName="uddi.org:xml:namespace" keyValue="http://systinet.com/wsdl/demo/uddi/services/"/>
                <keyedReference tModelKey="uddi:uddi.org:wsdl:types" keyName="uddi.org:wsdl:types" keyValue="port"/>
                <keyedReference tModelKey="uddi:uddi.org:xml:localName" keyName="uddi.org:xml:localName" keyValue="EmployeeList"/>
                <keyedReference tModelKey="uddi:systinet.com:taxonomy:endpoint:availability" keyName="Available" keyValue="Available"/>
                <keyedReference tModelKey="uddi:systinet.com:taxonomy:endpoint:status" keyName="Operational" keyValue="Operational"/>
              </categoryBag>
            </bindingTemplate>
          </bindingTemplates>
        </serviceInfoExt>
      </serviceInfos>
      <contactInfos>
        <contactInfo useType="Technical support">
          <personName xmlns="urn:uddi-org:api_v3">John Demo</personName>
        </contactInfo>
      </contactInfos>
    </businessInfoExt>
    
    ********************************************************