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.bat(run.sh)が格納されているディレクトリ内のファイルenv.propertiesを編集してください。Basic/Inquiryデモのローカル・レベルのプロパティは、次のファイルにロードされています。
Windows: | %REGISTRY_HOME%¥demos¥basic¥inquiry¥v3¥env.properties |
UNIX: | $REGISTRY_HOME/demos/basic/inquiry/v3/env.properties |
この項では、すべてのデモで使用されるプログラミング・パターンを、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デモを例に使用します。
デモが適切に構成され、Oracle Service Registryが実行中であることを確認してください。
次のディレクトリに移動します。
Windows: | %REGISTRY_HOME%¥demos¥basic¥inquiry¥v3 |
UNIX: | $REGISTRY_HOME/demos/basic/inquiry/v3 |
次のコマンドを使用して、すべてのデモをビルドします。
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コマンドを実行します。たとえば、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> ********************************************************
デモを再ビルドするには、run.bat clean(./run.sh clean)を実行してclassesディレクトリを削除し、run.bat make(./run.sh make)を実行してデモ・クラスを再ビルドします。