この項では、コンテンツ・チェッカの作成方法について説明します。コンテンツ・チェッカによって、データをプログラムでチェックする承認機能が承認者に提供されます。この項では、承認プロセスについて十分理解していることが前提となります。承認プロセスについては、次の項を参照してください。
「ユーザーズ・ガイド」の「Oracle Service Registryの承認プロセス」
「管理者ガイド」の「承認プロセスの原則」
次に、コンテンツ・チェッカを作成してデプロイする方法の例を示します。この例では、各ビジネス・エンティティ名を接頭辞org_で開始するというルールが承認者によって設定されます。このルールを満たしていないデータを承認(検出レジストリにコピー)することはできません。 コンテンツ・チェッカは、Oracle Service Registryコンソールの「Approve request」ページで、承認者が「Approve」ボタンを押すと実行されます。
このオプションのコンテンツ・チェックを設定するには、次の手順を実行します。
クラスorg.systinet.uddi.approval.checker.v3.CheckerApiを実装するクラスを作成します。
実装クラスをOracle Service Registryにデプロイします。
コンテンツ・チェッカ・クラスの実装をOracle Service Registryデータに登録します。
次に、各手順の詳細について説明します。
org.systinet.uddi.approval.checker.v3.CheckerApiを実装するクラスを作成します。
例15に示すように、コンテンツ・チェッカ・クラスを作成します。
CheckerApiImpl.javaをコンパイルし、jarをディレクトリPUBLICATION_REGISTRY_HOME/distからクラス・パスに追加します。
実装クラスをOracle Service Registryにデプロイします。
![]() | 注意 |
|---|---|
|
アプリケーション・サーバーにデプロイする場合は、これらが使用される場所に変更を加える必要があります。 これは、インストール・ディレクトリ内ではなく、アプリケーション・サーバーでレジストリが解凍されるレジストリ・ディレクトリ内である場合があります。 レジストリはデプロイされていないが、WAR/EARファイルが使用できる場合は、まずWAR/EARファイルを変更してからデプロイします。 ファイルの相対パスは同じですが、PUBLICATION_REGISTRY_HOMEは異なります。 | |
CheckerApiImpl.classを、jarファイルの内部のフォルダcom/systinet/uddi/approval/v3/approverのファイルPUBLICATION_REGISTRY_HOME/app/uddi/services/WASP-INF/lib/approval_staging_v3.jarにコピーします。
Publication Registryを停止しPUBLICATION_REGISTRY_HOME/workディレクトリを削除して、公開レジストリを再起動します。
Oracle Service Registryデータにコンテンツ・チェッカ・クラスの実装を登録します。
公開レジストリに承認者としてログオンします。コンテンツ・チェッカは、次の手順を実行する承認者に適用されます。
チェッカ・サービスのWSDLドキュメントを公開します。
新規または既存のビジネス・エンティティに対して、http://<host_name>:<http_port>/uddi/doc/wsdl/approval_checker.wsdlにあるWSDLドキュメントを公開します。Advanced publishingモードを使用し、既存のWSDL portType(tModel名: CheckerApi、tModelのキー: uddi:systinet.com:uddi:service:porttype:approvalchecker)を再使用します。WSDLサービスapproval_checker_SoapServiceが、ビジネス・エンティティに公開されます。
approval_checker_SoapServiceサービスの下にある新しいバインディング・テンプレートのアクセス・ポイントでチェッカを指定します。
class:接頭辞で始まるアクセス・ポイントの値を入力し、その後に完全修飾クラス名を入力します。たとえば、class:com.systinet.uddi.approval.v3.approver.CheckerApiImplと入力します。
例15 コンテンツ・チェッカの実装
package com.systinet.uddi.approval.v3.approver;
import org.systinet.uddi.InvalidParameterException;
import org.systinet.uddi.approval.checker.v3.CheckerApi;
import org.systinet.uddi.approval.checker.v3.struct.CheckRequest;
import org.systinet.uddi.approval.v3.ApprovalErrorCodes;
import org.systinet.uddi.approval.v3.ApprovalException;
import org.systinet.uddi.approval.v3.struct.ApprovalEntitiesDetail;
import org.systinet.uddi.approval.v3.struct.EntitiesDetail;
import org.systinet.uddi.client.v3.struct.*;
/**
* Checks if a BE starts with org_
*/
public class CheckerApiImpl implements CheckerApi {
public DispositionReport checkRequest(CheckRequest checkRequest)
throws ApprovalException {
try {
ResultArrayList resultArrayList = new ResultArrayList();
ApprovalEntitiesDetail approvalEntitiesDetail =
checkRequest.getApprovalEntitiesDetail();
if (approvalEntitiesDetail != null) {
EntitiesDetail entitiesDetail4Saving =
approvalEntitiesDetail.getEntitiesDetail4Saving();
BusinessEntityArrayList businessEntityArrayList =
entitiesDetail4Saving.getBusinessEntityArrayList();
if (businessEntityArrayList != null) {
for (int i = 0; i < businessEntityArrayList.size(); i++) {
BusinessEntity businessEntity = businessEntityArrayList.get(i);
if (businessEntity != null) {
NameArrayList nameArrayList =
businessEntity.getNameArrayList();
for (int j = 0; j < nameArrayList.size(); j++) {
Name name = nameArrayList.get(j);
if (name != null && !name.getValue().startsWith("org_")) {
resultArrayList.add(
new Result(ApprovalErrorCodes.INVALID_DATA,
new ErrInfo(ApprovalErrorCodes.getCode(
ApprovalErrorCodes.INVALID_DATA),
"Only business entities whose name start with the " +
"prefix \"org_\" are allowed" +
" (BE [key: " + businessEntity.getBusinessKey() +
", name: " + name.getValue() + "])"),
KeyType.businessKey));
}
}
}
}
}
}
if (resultArrayList.size() > 0) {
return new DispositionReport(resultArrayList);
} else {
return DispositionReport.DISPOSITION_REPORT_SUCCESS;
}
} catch (InvalidParameterException e) {
// should not occur
throw new ApprovalException(ApprovalErrorCodes.FATAL_ERROR, e.getMessage());
}
}
}