付録B.1 Component Container
トランザクション処理の状態(正常または異常)によって,Component Containerから出力されるコネクションIDの出力先が異なります。
- 正常の場合
-
性能解析トレースファイルに出力されます。
- 異常の場合
-
SQLException発生時の例外メッセージに出力されます。
性能解析トレースファイルには,次の三つのタイミングでコネクションIDが出力されます。
-
データベースとのコネクション取得時
HiRDBを使用している場合,DataSource.getConnection()メソッドまたはDataSource.getConnection(String username, String password)メソッドの終了直前に,取得したコネクションのコネクションIDを出力します。
Oracleを使用している場合,DataSource.getConnection()メソッドの終了直前に,取得したコネクションのコネクションIDを出力します。
-
データベースのコネクション解放時
Connection.close()メソッドの開始直後に,このメソッドに対応するgetConnectionメソッドで取得したコネクションのコネクションIDを出力します。
-
アソシエーション機能によってデータベースとのコネクションが差し替えられた時
ManagedConnection.associateConnection()メソッドの呼び出し時に,アソシエーション機能によって差し替えられた先のコネクションのコネクションIDを出力します。
上記のタイミングで取得したコネクションIDは,次の表に示すイベントIDのトレース情報のインタフェース名に出力されています。
イベントID |
説明 |
---|---|
0x8C01 |
DataSource.getConnection()メソッドの終了直前の処理で出力された情報です。 |
0x8C03 |
DataSource.getConnection(String username, String password)メソッドの終了直前の処理で出力された情報です。 |
0x8C20 |
Connection.close()メソッドの開始直後の処理で出力された情報です。 |
0x8C40 |
ManagedConnection.associateConnection()メソッドの呼び出し時の処理で出力された情報です。 |
なお,トレース取得ポイントと取得できるトレース情報の詳細については,「8.12 DB Connector,JCAコンテナのトレース取得ポイント」を参照してください。
性能解析トレース,およびSQLException発生時の例外メッセージの取得方法と出力形式について説明します。
(1) 性能解析トレースファイル
PRFトレースファイルに出力された,クライアントからデータベースなどのEISに至るまで,およびその処理結果がクライアントに返却されるまでのリクエストの一連の処理で出力されるトレース情報をCSV形式で編集出力したファイルです。
- コネクションIDが出力される条件
-
次の条件をすべて満たしている場合,性能解析トレースファイルにコネクションIDが出力されます。
-
使用しているデータベースが,次のどれかである。
HiRDB
Oracle
-
論理パフォーマンストレーサが起動中である。
-
リソースアダプタとしてDB Connectorを使用している。
-
(a) 留意事項
性能解析トレースを参照するときに留意することを次に示します。
-
コネクションの解放に関する留意事項
同一コネクションに対してConnection.close()メソッドを複数回呼び出した場合,その数だけ性能解析トレースが出力されます。
-
アソシエーション機能を使用する場合の留意事項
アソシエーション機能によってデータベースとのコネクションが差し替えられた場合,getConnection()メソッドで出力されたコネクションIDとは異なる物理コネクションでデータベースに接続されます。この場合,性能解析トレースには,ManagedConnection.associateConnection()メソッドの呼び出し時に,アソシエーション機能によって差し替えられた先の物理コネクションに対応するコネクションIDが出力されます。したがって,実際にデータベースに接続しているコネクションIDを特定するためには,イベントIDが「0x8C40」の性能解析トレースに出力されたコネクションIDも追跡する必要があります。
なお,ManagedConnection.associateConnection()メソッドを呼び出しても,コネクションが差し替えられない場合があります。この場合,コネクションIDは性能解析トレースに出力されません。
- 参考
-
アソシエーション機能は,通常,1:1で対応する論理コネクションと物理コネクションの対応を差し替えて,複数の論理コネクションで一つの物理コネクションを共有する機能です。
-
自動再接続機能を使用する場合の留意事項
HiRDBの自動再接続機能を使用する場合,性能解析トレースファイルに出力されるコネクションIDと,実際の接続に使用しているコネクションのコネクションIDが異なることがあります。この場合,HiRDBクライアントの再接続トレースも参照する必要があります。
(b) 取得方法
運用管理コマンド(mngsvrutil)を実行して性能解析トレースファイルを取得します。性能解析トレースファイルは,「<Managerのログ出力ディレクトリ>\prf」(Windowsの場合),または「<Managerのログ出力ディレクトリ>/prf」(UNIXの場合)に出力されます。取得方法については,「7.3.1 性能解析トレースファイルの収集方法」を参照してください。
(c) 出力形式
性能解析トレースの出力例を次に示します。コネクションIDはインタフェース名(「INT」欄)に出力されます。
(2) SQLException発生時の例外メッセージ
データベースアクセスまたはJDBCドライバでエラーが発生した場合に,例外としてSQLExceptionがスローされたことを示すメッセージです。
- コネクションIDが出力される条件
-
使用しているデータベースが次のどれかである場合,SQLException発生時の例外メッセージにコネクションIDが出力されます。
-
HiRDB
-
Oracle
-
(a) 留意事項
SQLException発生時の例外メッセージを参照するときに留意することを次に示します。
-
出力されるコネクションIDに関する留意事項
SQLException発生時の例外メッセージに出力されるコネクションIDは常に最新です。HiRDBの自動再接続機能によって再接続が実行された場合,再接続後のコネクションIDが出力されます。
(b) 取得方法
SQLException発生時に,次のログファイルに例外メッセージが出力されます。
-
Windowsの場合
-
<作業ディレクトリ>\ejb\<サーバ名称>\logs\cjexception[n].log
-
<作業ディレクトリ>\ejb\<サーバ名称>\logs\connectors\<リソースアダプタの表示名>[n].log
-
-
UNIXの場合
-
<作業ディレクトリ>/ejb/<サーバ名称>/logs/cjexception[n].log
-
<作業ディレクトリ>/ejb/<サーバ名称>/logs/connectors/<リソースアダプタの表示名>[n].log
-
ログファイル名の[n]の部分には,面の番号(1から面数(最大16)まで)が付きます。
(c) 出力形式
- HiRDBの場合
-
メッセージKFDJ00001-EのErrMsgの最後にコネクションIDが出力されます。出力例を次に示します。背景色付きの太字はコネクションIDです。
JP.co.Hitachi.soft.DBPSV_Driver.SQLException: KFDJ00001-E Error occurred at server. [JdbcDbpsvResultSQLExecute.SQLExecute] OperationType : 2002 ReturnCode : -100 ErrorCode : -404 WarningInfo : 0 ErrorMsg : KFPA11404-E Input data too long for column or assignment target in variable 1 [HiRDB_CONNECTION_ID(sds01:7:2988)]
- Oracleの場合
-
メッセージORA-00942のErrMsgの最後にコネクションIDが出力されます。出力例を次に示します。背景色付きの太字はコネクションIDです。
JP.co.Hitachi.soft.DBPSV_Driver.SQLException: KFDJ00001-E Error occurred at server. [JdbcDbpsvResultSQLExecute.SQLPrepare] OperationType : 2002 ReturnCode : -200 ErrorCode : 942 WarningInfo : 0 ErrorMsg : ORA-00942: 表またはビューが存在しません。[ORACLE_CONNECTION_ID(ORCL:17:5:920)] PreparedSQL : selectSectionID : 2