|
|
InterceptorData サンプル・インターセプタ
この章では、PersonQuery サンプル・アプリケーションで使用するために設計されている、次の 2 つのサンプル・インターセプタについて説明します。
ここでは、各インターセプタのしくみについて説明し、次にそれらを PersonQuery サンプル・アプリケーションでビルドして実行する方法を示します。
InterceptorDataClient インターセプタ
InterceptorDataClient インターセプタは、各クライアント・アプリケーションの要求パラメータと応答パラメータをインターセプトしてログに記録します。このインターセプタはまた、PersonQuery サーバ・アプリケーションに対するある特定のオペレーションを、クライアント・アプリケーションの特定の基準に一致するユーザが呼び出せるようにします。InterceptorDataClient インターセプタは、ClientRequestInterceptor
クラスから継承される InterceptorDataClient
インターフェイスをインプリメントします。
InterceptorDataClient クラスは、次のメソッドをインプリメントします。
id()
このメソッドは、文字列 InterceptorDataClient
を返します。
shutdown()
このメソッドは tracker
オブジェクトからの要求を削除します。
exception_occurred()
このメソッドは、ORB によって呼び出されると、tracker
オブジェクトから要求を削除します。
client_invoke()
このメソッドは、インターフェイスおよびオペレーションが「関心の対象」であるかどうかを判断します。クライアント要求が「関心の対象」である場合、このメソッドは要求パラメータを解析して、パラメータをログ・ファイルに出力します。クライアント要求が「関心の対象」ではない場合、メソッドは単に復帰します。
client_response()
このメソッドは、要求内のインターフェイスおよびオペレーションが「関心の対象」であるかどうかを判断します。インターフェイスおよびオペレーションが「関心の対象」である場合、メソッドは CORBA DataInputStream
パラメータの中から応答パラメータを取得して、それをログ・ファイルに書き込みます。要求内のインターフェイスおよびオペレーションが「関心の対象」ではない場合、メソッドは単に復帰します。
さらに、データ・インターセプタが InterceptorDataClientInit
メソッドを提供して、クライアント・インターセプタ・クラスを初期化します。
InterceptorDataTarget インターセプタ
InterceptorDataTarget インターセプタは要求および応答データのパラメータをインターセプトしてログに記録します。このインターセプタはまた、x
の文字でデータをマスキングして特定の応答パラメータから、機密データを削除します。InterceptorDataTarget インターセプタは、InterceptorDataTarget
クラスから継承される InterceptorDataTarget
インターフェイスをインプリメントします。
InterceptorDataTarget
クラスは、次のメソッドをインプリメントします。
id()
このメソッドは、文字列 InterceptorDataTarget
を返します。
shutdown()
このメソッドは、単に復帰します。
exception_occurred()
このメソッドは tracker
オブジェクトからの要求を削除します。
target_invoke()
このメソッドは、インターフェイスおよびオペレーションが「関心の対象」であるかどうかを判断します。「関心の対象」である場合、このメソッドは要求パラメータを解析して、そのデータをログ・ファイルに出力します。要求内のインターフェイスおよびオペレーションが「関心の対象」ではない場合、メソッドは単に復帰します。要求内のオペレーションが exit
である場合、このメソッドはステータス値 INVOKE_NO_EXCEPTION
を返します。
target_response()
このメソッドは、インターフェイスおよびオペレーションが「関心の対象」であるかどうかを判断します。「関心の対象」である場合、このメソッドは DataInputStream
パラメータの中から、応答パラメータを取得してログ・ファイルに出力します。機密データは、ログ内では置換されます。たとえば、個人の社会保障番号は、ログには出力されません。要求内のインターフェイスおよびオペレーションが「関心の対象」ではない場合、メソッドは単に復帰します。
さらに、データ・インターセプタが InterceptorDataTargetInit
メソッドを提供して、ターゲット・インターセプタ・クラスを初期化します。
InterceptorData インターセプタのインプリメント
InterceptorData インターセプタをインプリメントするために使用されるコードについては、CORBA 要求レベルのインターセプタの開発で示しています。次の操作を行う方法については、そちらを参照してください。
InterceptorData インターセプタの登録および実行
PersonQuery サンプル・アプリケーションで説明した PersonQuery サンプル・アプリケーションをビルドする makefile を実行すると、InterceptorData インターセプタを含むサンプル・インターセプタ一式全部が、同様にビルドされます。この節では、実行時に PersonQuery アプリケーションと共に機能するように InterceptorData インターセプタを登録する方法を説明します。
InterceptorData クライアント・インターセプタおよびサーバ・インターセプタを登録して実行するには、次の手順に従います。
workdirectory
は、PersonQuery サンプル・アプリケーションに示す手順で
インターセプタのサンプル・アプリケーションをコピーしたディレクトリの
名前を表します。
Windows 2000
> cd <
workdirectory
>\cxx\data_cxx
UNIX
$ cd <
workdirectory
>/cxx/data_cxx
Windows 2000
> nmake -f makefile.nt config
UNIX
$ make -f makefile.mk config
Windows 200
> cd <
workdirectory
>\cxx\app_cxx
> tmboot -y
> PersonQueryClient
UNIX
> cd <
workdirectory
>/cxx/app_cxx
> tmboot -y
> PersonQueryClient
> tmshutdown -y
インターセプタ出力の検証
InterceptorData クライアント・インターセプタおよびターゲット・インターセプタは、各呼び出しをログに記録します。PersonQuery アプリケーションの各セッションについて、クライアント・インターセプタは InterceptorDataClient
xxx
.out
という名前のファイルを作成し、ターゲット・インターセプタは InterceptorDataTarget
xxx
.out
という名前のファイルを作成します。ここでは、各インターセプタのログ・ファイルのサンプルを示します。
クライアント・インターセプタのログ出力例
InterceptorDataClientInit called
ClientInterceptorData::id called
ClientInterceptorData::client_invoke called
ClientInterceptorData::client_response called
Request Id: 1
unable to find request for this reply (must not be one we care about)
ClientInterceptorData::client_invoke called
Request Id: 2
Interface: IDL:beasys.com/PersonQuery:1.0
Operation: findPerson
Parameters:
name: ALISTER LANCASHIRE
address: 3 PENNY LANE
LONDON GB UK
ss: 999-99-9999
sex: can't tell
age(yrs.): 85
marital status: single
hobby: stamp collecting
date-of-birth: 11/25/1913
height(in.): 32
weight(lbs.): 57
hair color: unknown
eye color: blue
skin color: white
other markings: missing limb
ターゲット・インターセプタのログ出力例
InterceptorDataTargetInit called
TargetInterceptorData::id called
TargetInterceptorData::target_response called
Request Id: 2
ReplyStatus: GIOP::NO_EXCEPTION
Interface: IDL:beasys.com/PersonQuery:1.0
Operation: findPerson
Method Result: TRUE
Parameters:
Maximum: 8
Length: 8
Item 0
name: ALISTER LANCASHIRE
address: 3 PENNY LANE
LONDON GB UK
ss: NO PRIVILEDGE
sex: NO PRIVILEDGE
age (years): NO PRIVILEDGE
marital status: NO PRIVILEDGE
hobby: stamp collecting
date-of-birth: NO PRIVILEDGE
height (in.): 32
weight (lbs.): 57
hair color: unknown
eye color: blue
skin color: NO PRIVILEDGE
other markings: missing limb
インターセプタの登録解除
InterceptorData サンプル・インターセプタで PersonQuery サンプル・アプリケーションを実行後に、次の手順でこれらのインターセプタの登録を解除できます。
> tmshutdown -y
workdirectory
は、PersonQuery サンプル・アプリケーションに示す手順で
インターセプタのサンプル・アプリケーションをコピーしたディレクトリの
名前を表します。
Windows 2000
> cd <
workdirectory
>\cxx\data_cxx
UNIX
$ cd <
workdirectory
>/cxx/data_cxx
Windows 2000
> nmake -f makefile.nt unconfig
UNIX
$ make -f makefile.mk unconfig
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|