アプリケーションを WebSphere Application Server 7 にデプロイしました。アプリケーション サーバーでデフォルトの OpenJPA 1.2.2 ライブラリを使用していますが、ログに記録できません。persistence.xml にこれがあります。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="SvcsLogic" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>jdbc/mydatasource</jta-data-source>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="openjpa.log" value="log4j, DefaultLevel=TRACE" />
<property name="openjpa.Log" value="log4j, DefaultLevel=TRACE" />
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(SchemaAction='add',foreignKeys=true)" />
</properties>
</persistence-unit>
</persistence>
ただし、log4j を使用してログを記録したいという事実は無視されます。log4j の設定を削除しても、WAS のログとトレースのログ チャネルは変更されません。念のためすべてをログに記録するようにすべて設定しましたが、機能しません。
ただし、JPA Logging に関する WAS Infocenter のドキュメントには、 「トラブルの回避: アプリケーション サーバーで提供される永続化プロバイダーを使用するコンテナー管理の永続化ユニットで定義されている場合、「openjpa.Log」プロパティは無視されます」と記載されています。この場合、アプリケーション サーバーの標準トレース仕様を使用する必要があります。
これは、ロギングを機能させるためだけに JPA 実装を変更する必要があるということですか? もしそうなら、これはかなりずさんなようです。