場合によっては、Java™ SE 環境から Java Persistence API (JPA) トレースを実行する必要があることがあります。
このタスクについて
拡張トレースは、Java SE 環境での追加 JPA トレース情報の収集にも使用できます。WebSphere® Application Server 環境では、アプリケーション・サーバーによって標準 OpenJPA トレースと拡張トレース機能の結合が管理され、単一のトレース出力が生成されます。
Java SE 環境では、このプロセスを手動で実行する必要があります。以下に、Java SE
環境で拡張トレースを使用するステップを示します。
手順
- ロギング構成プロパティー・ファイルを作成します。 構成プロパティー・ファイルでは、標準の java.util.logging 構成ファイル・フォーマットを使用する必要があります。
以下のコードは、構成ファイルの例です。表で定義されているトレース・カテゴリーは、構成ファイルでも使用できます。
java.util.logging 構成ファイルの規格では、トレース・カテゴリーに .level のサフィックスを付ける必要があります。
# Sample logger.properties file
# Enable a file handler
handlers = java.util.logging.FileHandler
# Set a trace file pattern - the example writes a file named jpa_jse.log to the current working directory
java.util.logging.FileHandler.pattern = jpa_jse.log
# Configure the basic logging level of the file handler
java.util.logging.FileHandler.level = ALL
# Set the openjp.jdbc.SQL category trace to ALL
openjpa.jdbc.SQL.level = ALL
# Set the enhanced General category trace to FINEST
openjpa.xtrace.General.level = FINEST
# Set the enhanced Kernel category to trace at FINER
openjpa.xtrace.Kernel.level = FINER
表 1. トレース・カテゴリー. 拡張トレースを有効にする前に、サーバー構成をバックアップしてください。カテゴリー |
該当するトレース・レベル |
説明 |
JPA |
OFF、ALL、FINER、FINEST |
JPA トレース・グループに拡張トレースを追加します。 |
openjpa.* |
OFF、ALL、FINER、FINEST |
通常の OpenJPA トレース、および拡張トレースが有効である場合の OpenJPA のすべてのカテゴリーに対する拡張トレース。 |
openjpa.xtrace.* |
OFF、ALL、FINER、FINEST |
拡張トレースが有効である場合の OpenJPA のすべてのカテゴリーに対する拡張トレース。 |
openjpa.xtrace.Jdbc |
OFF、ALL、FINER、FINEST |
拡張トレースが有効である場合の OpenJPA JDBC クラスに対する拡張トレース。 |
openjpa.xtrace.Lib |
OFF、ALL、FINER、FINEST |
拡張トレースが有効である場合の OpenJPA ライブラリー・クラスに対する拡張トレース。 |
openjpa.xtrace.Persist |
OFF、ALL、FINER、FINEST |
拡張トレースが有効である場合の OpenJPA パーシスタンス・クラスに対する拡張トレース。 |
openjpa.xtrace.Kernel |
OFF、ALL、FINER、FINEST |
拡張トレースが有効である場合の OpenJPA カーネル・クラスに対する拡張トレース。 |
openjpa.xtrace.General |
OFF、ALL、FINER、FINEST |
拡張トレースが有効である場合の JDBC、ライブラリー、パーシスタンス、またはカーネルの各カテゴリーに含まれない OpenJPA クラスに対する拡張トレース。 |
- persistence.xml ファイルを変更し、デフォルトの OpenJPA ロガーではなく、Apache の共通ロギングを使用するようにします。 次のプロパティーをパーシスタンス・ユニットに追加します。
<property name="openjpa.Log" value="commons"/>
- Apache Commons Logging の Java アーカイブ (JAR) ファイルをクラスパスに追加します。
この JAR ファイルは、Apache の Web サイトからダウンロードできます。
- Java 仮想マシン (JVM) に次の引数を追加します。
ここで、<WAS_install_path> は、アプリケーション・サーバーのインストール・ディレクトリーの完全修飾パスです。 ご使用のオペレーティング・システムに適合するパス分離文字を使用しているかを確認してください。
このパラメーターは、使用されるクラス名または JAR ファイル名の前に指定する必要があります。
-javaagent:<WAS_install_path>/optionalLibraries/IBM/wsjpa/wsjpatrace.jar
- ロギング構成ファイルへのパスを指定するこの追加引数を、JVM に追加します。 このオプションも、使用されるクラス名または JAR 名の前に指定する必要があります。
-Djava.util.Logging.config.file=Logger.properties
- Java SE アプリケーションを実行します。 以下に、拡張トレースを有効にした Java SE アプリケーションの呼び出しの例を示します。
java
-javaagent:"<WAS_install_path>/optionalLibraries/IBM/wsjpa/wsjpatrace.jar"
-Djava.util.logging.config.file=Logger.properties
my.JPAApplication
タスクの結果
これで、Java SE 環境で拡張トレースが機能するようになりました。
次のタスク
トラブルの回避 (Avoid trouble): Java SE 環境では、拡張トレース・エージェントを OpenJPA PCEnhancer エージェントと組み合わせて使用しないでください。拡張トレースが使用されている場合、OpenJPA PCEnhancer はコンパイル時に使用する必要があります。
OpenJPA PCEnhancer および拡張トレースの各エージェントが同時に使用されると、予測不能の結果を招きます。
gotcha