Oracle Service RegistryのTaxonomy(分類)デモでは、Oracle Service Registryの分類機能のデモンストレーションが行われ、このAPIの使用方法が示されます。
分類は、Oracle Service Registry内の分類の管理および問合せに使用します。このデモではすべてのAPIメソッドを対象にしているので、分類のダウンロード、アップロード、保存、削除、取得および検索の方法を学習できます。また、カテゴリAPIを使用して内部checked分類に含まれる個別の値を管理することもできます。
Oracle Service Registryには、Oracle Service Registryの分類APIおよびカテゴリAPIの学習に役立つ次のデモが含まれています。
SaveTaxonomy businessEntityおよびtModelで使用できるunchecked分類を保存する方法のデモンストレーションです。
DeleteTaxonomy 選択した分類を削除する方法のデモンストレーションです。分類がcheckedの場合は、関連付けられたバインド・テンプレートも自動的に削除されます。
UploadTaxonomy 分類が含まれるファイルをアップロードする方法のデモンストレーションです。このAPIコールは、データのストリーム上で機能するので、非常に大きな分類を処理する必要があるときに便利です。
DownloadTaxonomy 選択した分類をダウンロードする方法のデモンストレーションです。このメソッドもストリーム指向です。
GetTaxonomy 選択した分類の詳細を取得する方法のデモンストレーションです。
FindTaxonomy 任意の基準に基づいて分類を検索する方法のデモンストレーションです。
AddCategory 新規カテゴリ(keyedReference値)を既存の内部分類に追加する方法のデモンストレーションです。
DeleteCategory 既存の内部分類内のカテゴリを削除する方法のデモンストレーションです。
SetCategory 既存の内部分類内のカテゴリを更新する方法のデモンストレーションです。
MoveCategory 既存の内部分類内のカテゴリの親を変更する方法のデモンストレーションです。
GetCategory 内部分類のカテゴリを取得する方法のデモンストレーションです。
GetRootCategory 内部分類の最上位カテゴリのリストを取得する方法のデモンストレーションです。
GetRootPath 選択したカテゴリの親のリストを、選択したうちの最上位カテゴリから取得する方法のデモンストレーションです。
FindCategory 複数の基準に一致するカテゴリのリストを取得する方法のデモンストレーションです。
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)と同じディレクトリにあります。Taxonomyデモのローカル・レベルのプロパティは、次のファイルからロードされます。
| Windows: | %REGISTRY_HOME%¥demos¥advanced¥taxonomy¥env.properties |
| UNIX: | $REGISTRY_HOME/demos/advanced/taxonomy/env.properties |
表11 デモで使用されるプロパティ
| 名前 | デフォルト値 | 説明 |
|---|---|---|
| uddi.demos.user.john.name | demo_john | 1人目のユーザーの名前 |
| uddi.demos.user.john.password | demo_john | 1人目のユーザーのパスワード |
| uddi.demos.url.taxonomy | http://localhost:8888/registry/uddi/taxonomy | 分類Webサービス・ポートのURL |
| uddi.demos.url.category | http://localhost:8888/registry/uddi/category | カテゴリWebサービス・ポートのURL |
| uddi.demos.url.security | http://localhost:8888/registry/uddi/security | セキュリティWebサービス・ポートのURL |
この項では、すべてのデモで使用されるプログラミング・パターンを、SaveTaxonomyデモを例にして説明します。ソース・コードは次のファイルにあります。
| Windows: | %REGISTRY_HOME%¥demos¥advanced¥taxonomy¥src¥demo¥uddi¥taxonomy¥SaveTaxonomy.java |
| UNIX: | $REGISTRY_HOME/demos/advanced/taxonomy/src/demo/uddi/taxonomy/SaveTaxonomy.java |
このデモのmainメソッドは単純です。 ユーザーの入力を収集し、ユーザーをOracle Service Registryにログインさせ、Save_taxonomyのオブジェクトを作成し、それをSOAPを経由してUDDIレジストリに送信し、結果を表示します。
String user = UserInput.readString("Enter user name", "admin");
String password = UserInput.readString("Enter password", "changeit");
String name = UserInput.readString("Enter name", "Demo identifier");
String description = UserInput.readString("Enter description", "Saved by SaveTaxonomy demo");
System.out.println();
UDDI_Security_PortType security = getSecurityStub();
String authInfo = getAuthInfo(user, password, security);
Save_taxonomy save = createSaveTaxonomy(name, description, authInfo);
TaxonomyDetail result = saveTaxonomy(save);
printTaxonomyDetail(result);
discardAuthInfo(authInfo, security);
分類を保存するときは、それを表すtModelを最初に作成する必要があります。パブリッシャが割り当てたtModelKeyおよび他のプロパティを設定できます。唯一の必須プロパティは名前です。分類に関連するkeyedReferencesをcategoryBag内で指定する必要はありません。これらは分類内に設定されます。
分類の使用方法の定義にはカテゴリ化が使用されます。有効な値は、identifier、categorization、categorizationGroupおよびrelationshipです。互換性によってtModelに情報、つまり使用できるUDDI構造のマークが付きます。
この例では、ビジネス・エンティティおよびtModelのcategoryBag内でのみ使用できるuncheckedの識別子(identifier)を作成します。
public static Save_taxonomy createSaveTaxonomy(String name, String description, String authInfo)
throws InvalidParameterException {
System.out.println("name = " + name);
System.out.println("description = " + description);
TModel tModel = new TModel();
tModel.setName(new Name(name));
tModel.addDescription(new Description(description));
Taxonomy taxonomy = new Taxonomy(tModel);
taxonomy.setCheck(Boolean.FALSE);
taxonomy.addCategorization(Categorization.identifier);
taxonomy.addCompatibility(Compatibility.businessEntity);
taxonomy.addCompatibility(Compatibility.tModel);
Save_taxonomy save = new Save_taxonomy();
save.addTaxonomy(taxonomy);
save.setAuthInfo(authInfo);
return save;
}
ヘルパー・メソッドgetTaxonomyStub()によって、URL_TAXONOMYプロパティで指定されたURLでリスニングするWebサービスのTaxonomyスタブが返ります。
public static TaxonomyApi getTaxonomyStub() throws SOAPException {
String url = DemoProperties.getProperty(URL_TAXONOMY, "http://localhost:8888/registry/uddi/taxonomy");
System.out.print("Using Taxonomy at url " + url + " ..");
TaxonomyApi taxonomy = TaxonomyStub.getInstance(url);
System.out.println(" done");
return taxonomy;
}
分類APIコールsave_taxonomyが、メソッドsaveTaxonomy()で実行されます。
public static TaxonomyDetail saveTaxonomy(Save_taxonomy save)
throws UDDIException, SOAPException {
TaxonomyApi taxonomy = getTaxonomyStub();
System.out.print("Save in progress ...");
TaxonomyDetail taxonomyDetail = taxonomy.save_taxonomy(save);
System.out.println(" done");
return taxonomyDetail;
}
返されたTaxonomyDetailオブジェクトは、printTaxonomyDetailメソッドに表示されます。
public static void printTaxonomyDetail(TaxonomyDetail taxonomyDetail) {
System.out.println();
TaxonomyArrayList taxonomyArrayList = taxonomyDetail.getTaxonomyArrayList();
int position = 1;
for (Iterator iterator = taxonomyArrayList.iterator(); iterator.hasNext();) {
Taxonomy taxonomy = (Taxonomy) iterator.next();
System.out.println("Taxonomy " + position + " : " + taxonomy.getTModel().getTModelKey());
System.out.println(taxonomy.toXML());
System.out.println();
System.out.println("********************************************************");
position++;
}
}
この項では、Oracle Service RegistryのAdvancedのTaxonomy(分類)セットをビルドして実行する方法を示します。引き続きSaveTaxonomyデモを使用します。
デモが適切に構成され、Oracle Service Registryが実行中であることを確認してください。
次のディレクトリに移動します。
| Windows: | %REGISTRY_HOME%¥demos¥advanced¥taxonomy |
| UNIX: | $REGISTRY_HOME/demos/advanced/taxonomy |
次のコマンドを使用して、すべてのデモをビルドします。
| 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のパラメータにデモの名前を指定して実行します。たとえば、SaveTaxonomyデモを実行するには、次のように起動します。
| Windows: | run.bat SaveTaxonomy |
| UNIX: | ./run.sh SaveTaxonomy |
このデモの出力は次のようになります。
Running SaveTaxonomy demo...
Saving taxonomy where
Enter user name [admin]:
Enter password [changeit]:
Enter name [Demo identifier]:
Enter description [Saved by SaveTaxonomy demo]:
Using Security at url https://mycomp.com:8443/registry/uddi/security .. done
Logging in .. done
name = Demo identifier
description = Saved by SaveTaxonomy demo
Using Taxonomy at url https://mycomp.com:8443/registry/uddi/taxonomy .. done
Save in progress ... done
Taxonomy 1 : uddi:5c1d5d80-a4d4-11d8-91cd-5c1d367091cd
<taxonomy check="false" xmlns="http://systinet.com/uddi/taxonomy/v3/5.0">
<tModel tModelKey="uddi:5c1d5d80-a4d4-11d8-91cd-5c1d367091cd"
xmlns="urn:uddi-org:api_v3">
<name>Demo identifier</name>
<description>Saved by SaveTaxonomy demo</description>
<categoryBag>
<keyedReference tModelKey="uddi:uddi.org:categorization:types"
keyName="Identifier system" keyValue="identifier"/>
<keyedReference tModelKey="uddi:systinet.com:taxonomy:compatibility"
keyName="Compatibility" keyValue="businessEntity"/>
<keyedReference tModelKey="uddi:systinet.com:taxonomy:compatibility"
keyName="Compatibility" keyValue="tModel"/>
<keyedReference tModelKey="uddi:uddi.org:categorization:types"
keyName="Unchecked value set" keyValue="unchecked"/>
</categoryBag>
</tModel>
<compatibilityBag>
<compatibility>businessEntity</compatibility>
<compatibility>tModel</compatibility>
</compatibilityBag>
<categorizationBag>
<categorization>identifier</categorization>
</categorizationBag>
</taxonomy>
********************************************************
Logging out .. doneデモを再ビルドするには、run.bat clean(./run.sh clean)を実行してclassesディレクトリを削除し、run.bat make(./run.sh make)を実行してデモ・クラスを再ビルドします。