InterceptorDataサンプル・インターセプタ
この章では、PersonQueryサンプル・アプリケーションで使用するために設計されている、次の2つのサンプル・インターセプタについて説明します。
ここでは、各インターセプタのしくみについて説明し、次にそれらをPersonQueryサンプル・アプリケーションでビルドして実行する方法を示します。
InterceptorDataClientインターセプタ
InterceptorDataClientインターセプタは、各クライアント・アプリケーションのリクエスト・パラメータと応答パラメータをインターセプトしてログに記録します。このインターセプタはまた、PersonQueryサーバー・アプリケーションに対するある特定のオペレーションを、クライアント・アプリケーションの特定の基準に一致するユーザーが呼び出せるようにします。InterceptorDataClientインターセプタは、
ClientRequestInterceptorクラスから継承される
InterceptorDataClientインタフェースを実装します。
InterceptorDataClientクラスは、次のメソッドを実装します。
このメソッドは、文字列
InterceptorDataClientを返します。
このメソッドは
trackerオブジェクトからのリクエストを削除します。
このメソッドは、ORBによって呼び出されると、
trackerオブジェクトからリクエストを削除します。
このメソッドは、インタフェースおよびオペレーションが関心の対象であるかどうかを判断します。クライアント・リクエストが関心の対象である場合、このメソッドはリクエスト・パラメータを解析して、パラメータをログ・ファイルに出力します。クライアント・リクエストが関心の対象ではない場合、メソッドは単に復帰します。
このメソッドは、リクエスト内のインタフェースおよびオペレーションが関心の対象であるかどうかを判断します。インタフェースおよびオペレーションが関心の対象である場合、メソッドはCORBA
DataInputStreamパラメータの中から応答パラメータを取得して、それをログ・ファイルに書き込みます。リクエスト内のインタフェースおよびオペレーションが関心の対象ではない場合、メソッドは単に復帰します。
さらに、データ・インターセプタが
InterceptorDataClientInitメソッドを提供して、クライアント・インターセプタ・クラスを初期化します。
InterceptorDataTargetインターセプタ
InterceptorDataTargetインターセプタはリクエストおよび応答データのパラメータをインターセプトしてログに記録します。このインターセプタはまた、
xの文字でデータをマスキングして特定の応答パラメータから、機密データを削除します。InterceptorDataTargetインターセプタは、
InterceptorDataTarget クラスから継承される
InterceptorDataTargetインタフェースを実装します。
InterceptorDataTargetクラスは、次のメソッドを実装します。
このメソッドは、文字列
InterceptorDataTargetを返します。
このメソッドは
trackerオブジェクトからのリクエストを削除します。
このメソッドは、インタフェースおよびオペレーションが関心の対象であるかどうかを判断します。関心の対象である場合、このメソッドはリクエスト・パラメータを解析して、そのデータをログ・ファイルに出力します。リクエスト内のインタフェースおよびオペレーションが関心の対象ではない場合、メソッドは単に復帰します。リクエスト内のオペレーションが
exitである場合、このメソッドはステータス値
INVOKE_NO_EXCEPTIONを戻します。
このメソッドは、インタフェースおよびオペレーションが関心の対象であるかどうかを判断します。関心の対象である場合、このメソッドは
DataInputStreamパラメータの中から、レスポンス・パラメータを取得してログ・ファイルに出力します。機密データは、ログ内では置換されます。たとえば、個人の社会保障番号は、ログには出力されません。リクエスト内のインタフェースおよびオペレーションが関心の対象ではない場合、メソッドは単に復帰します。
さらに、データ・インターセプタが
InterceptorDataTargetInitメソッドを提供して、ターゲット・インターセプタ・クラスを初期化します。
InterceptorDataインターセプタの実装
InterceptorDataインターセプタの登録および実行
第4章「PersonQueryサンプル・アプリケーション」で説明したPersonQueryサンプル・アプリケーションをビルドするmakefileを実行すると、InterceptorDataインターセプタを含むサンプル・インターセプタ一式もすべてビルドされます。この項では、実行時にPersonQueryアプリケーションと共に機能するようにInterceptorDataインターセプタを登録する方法を説明します。
InterceptorDataクライアント・インターセプタおよびサーバー・インターセプタを登録して実行するには、次の手順に従います。
> cd <
workdirectory>\cxx\data_cxx
$ cd <
workdirectory>/cxx/data_cxx
> nmake -f makefile.nt config
$ make -f makefile.mk config
3.
|
CORBAサーバーをブートしてCORBAクライアントを実行します。
|
> cd <
workdirectory>\cxx\app_cxx
> tmboot -y
> PersonQueryClient
> cd <
workdirectory>/cxx/app_cxx
> tmboot -y
> PersonQueryClient
5.
|
PersonQueryアプリケーションを停止します。
|
InterceptorDataクライアント・インターセプタおよびターゲット・インターセプタは、各呼出しをログに記録します。PersonQueryアプリケーションの各セッションについて、クライアント・インターセプタは
InterceptorDataClientxxx.outという名前のファイルを作成し、ターゲット・インターセプタは
InterceptorDataTargetxxx.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サンプル・アプリケーションを実行後に、次の手順でこれらのインターセプタの登録を解除できます。
1.
|
次のコマンドを入力して、実行中のCORBAアプリケーションをすべて停止します。
|
> cd <
workdirectory>\cxx\data_cxx
$ cd <
workdirectory>/cxx/data_cxx
> nmake -f makefile.nt unconfig
$ make -f makefile.mk unconfig