EJBクライアントアプリケーションでユーザログ機能を利用する場合には,次の準備が必要です。
なお,EJBクライアントアプリケーションでユーザログ機能を利用する前提として,Application Server側での設定が必要になります。ユーザログの具体的な設定内容については,マニュアル「Cosminexus システム構築ガイド」のアプリケーションのユーザログ出力の設定に関する説明を参照してください。
- ユーザログ機能用の設定ファイルの準備
システムプロパティを設定するための,ユーザログ機能用の設定ファイルを準備します。設定ファイルは,J2SEのプロパティファイル形式で記述します。ファイル名称および格納ディレクトリは任意です。
設定ファイルには,J2EEサーバ用のusrconf.propertiesに指定できるキーのうち,「ejbserver.application.userlog」で始まるキーを指定できます。指定できるキーについては,マニュアル「Cosminexus リファレンス 定義編」を参照してください。
- システムプロパティの設定処理の実装
設定ファイルを読み込んでシステムプロパティに設定するための処理を,EJBクライアントアプリケーションのソースコードに追加する必要があります。この処理は,EJBクライアント機能の初期化が実行される処理よりも前に実行されるようにする必要があります。
- JARファイルのクラスパスの追加
EJBクライアントアプリケーションを開始するときのクラスパスに,使用するハンドラに対応するJARファイルのクラスパスを追加してください。クラスパスの指定については,マニュアル「Cosminexus システム構築ガイド」のEJBクライアントアプリケーションのクラスパスへのJARファイルの設定に関する説明を参照してください。
- 参考
- EJBクライアントアプリケーションでユーザログ機能を利用する場合,セキュリティポリシーを設定する必要はありません。
EJBクライアントアプリケーションでのユーザログの出力は,次の流れで行われます。
- システムプロパティの設定
設定ファイルを利用してシステムプロパティが設定されます。
- EJBクライアントの初期化
EJBクライアント機能を初期化するメソッドが呼び出されて,ログ体系が構築されます。
- JavaロギングAPIの実行
JavaロギングAPIの実行によって,ユーザログが出力されます。
流れに沿って,それぞれの処理内容について説明します。
(a) システムプロパティの設定
EJBクライアントアプリケーションのユーザログ機能用のシステムプロパティは,設定ファイルを利用して設定されます。
システムプロパティで設定できるプロパティは,J2EEサーバ用のusrconf.propertiesに指定できるプロパティのうち,「ejbserver.application.userlog」で始まるキーです。設定例を次に示します。
# user-log handler function
ejbserver.application.userlog.CJLogHandler.conf1.appname=my_app1
ejbserver.application.userlog.CJLogHandler.conf1.path=application1/logfileA
ejbserver.application.userlog.CJLogHandler.conf1.limit=10485760
ejbserver.application.userlog.CJLogHandler.conf1.count=2
ejbserver.application.userlog.CJLogHandler.conf1.level=SEVERE
# user-log logger function
ejbserver.application.userlog.Logger.com.example.userlogger1.handlers=com.hitachi.software.ejb.application.userlog.CJMPMessageFileHandler;conf1
ejbserver.application.userlog.Logger.com.example.userlogger1.useParentHandlers=true
ejbserver.application.userlog.Logger.com.example.userlogger1.level=INFO
ejbserver.application.userlog.loggers=com.example.userlogger1 |
EJBクライアントアプリケーションでは,ユーザログを出力するためのハンドラとして,CJMPMessageFileHandlerまたはCJMessageFileHandlerを指定できます。使用するハンドラは,ejbserver.application.userlog.Logger.<ロガー名>.handlersキーに指定します。例の場合は,userlogger1というロガーに,CJMPMessageFileHandlerクラスを指定しています。
CJMPMessageFileHandlerは,複数のプロセスから同時に同じファイルにログ出力できる機能を持つハンドラです。このため,EJBクライアントアプリケーションの複数のプロセスが出力するユーザログをまとめて出力できます。このハンドラは,EJBクライアントアプリケーションの場合だけ使用できるハンドラです。
なお,複数のプロセスから同時に同じファイルにログ出力しない場合は,J2EEアプリケーションのユーザログを出力する場合と同様に,CJMessageFileHandlerも使用できます。CJMessageFileHandlerを使用すると,CJMPMessageFileHandlerを使用する場合に比べて,ログ出力性能が高くなります。
- 注意
- CJMPMessageFileHandlerクラスを使用すると,日立トレース共通ライブラリがログ管理に使用するファイルを「<ユーザログ出力ディレクトリ>/mmap/<ログファイル名のプレフィックス>.mm」に作成します。このユーザログ出力ディレクトリを使用している間は,このファイルを変更または削除しないでください。
(b) EJBクライアント機能の初期化
EJBクライアント機能を初期化するメソッドが呼び出されて,ログ体系が構築されます。EJBクライアント機能は,次のどれかのタイミングで初期化されます。
- JNDIの初期コンテキスト生成(new InitialContextメソッド)
- セキュリティ機能APIでのログイン(LoginInfoManagerクラスのloginメソッド)
- 通信タイムアウト機能APIでの通信タイムアウト設定用オブジェクトの取得(RequestTimeoutConfigFactoryクラスのgetRequestTimeoutConfigメソッド)
- 注意
- 初期化処理が失敗した場合,EJBクライアントアプリケーションのユーザログを出力する機能は使用できません。ただし,ユーザアプリケーションのソースコード上で,J2SE標準のHandlerクラスやLoggerクラス,またはユーザが独自に作成したHandlerクラスやLoggerクラスの設定および構築をして,ログを出力することはできます。
(c) JavaロギングAPIの実行
アプリケーション内の処理で,JavaロギングAPIが実行されて,ユーザログが出力されます。CJMPMessageFileHandlerを使用するときは,次の点に注意してください。
- CJMPMessageFileHandler使用時の注意
- CJMPMessageFileHandlerを使用する場合,メモリマップトファイルを使用しているため,実際にファイルへ反映されるまで遅延が発生することがあります。プロセスが終了するときにはファイルに反映されますが,長時間動作し続ける場合やファイルへの反映が遅延すると問題がある場合などは,flushを実行することをお勧めします。
- flushを実行する方法には,次の二つの方法があります。
- Logger.getHandlersメソッドが返すすべてのHandlerに対して,flushメソッドを呼び出す。
- ejbserver.application.userlog.CJLogHandler.<ハンドラ名>.autoFlush.enabledプロパティを指定する。
- ejbserver.application.userlog.CJLogHandler.<ハンドラ名>.autoFlush.enabledプロパティを指定する場合,flushは自動的に実行されます。このため,flushメソッドは使用しないでください。