4

アプリケーションを 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 実装を変更する必要があるということですか? もしそうなら、これはかなりずさんなようです。

4

1 に答える 1

12

私の意見では、OpenJPA が WebSphere v7 の舞台裏で何をしているのかを確認する唯一の方法は、管理コンソールでトレースを有効にすることです。

管理コンソールで OpenJPA トレースを有効にするには、[トラブルシューティング] - [ログとトレース] - [サーバー] - [診断トレース] に移動します。[設定] ページで、右側の [ログ詳細レベルの変更] をクリックします。コンポーネント ツリーを展開し、OpenJPA ログの詳細レベルを選択するか、次のように入力します。

*=info: openjpa.Query=all: openjpa.jdbc_JDBC=all: openjpa.jdbc_SQL=all

テキストフィールドに。「OK」をクリックしてから「保存」をクリックします。サーバーを再起動する必要があります。

于 2011-04-08T09:57:27.770 に答える