テーブル内の行レベル ロックが原因でクエリがレコードの更新に失敗するたびに、WebLogic サーバー ログに迷惑なログが記録されます。複数のアプリケーションが同時にレコードを更新しようとするため、ロックが発生することが予想されます。アプリケーションは、これらの例外を処理し、間隔を置いて再試行するように設計されています。ただし、クエリが失敗するたびに、Hibernate はサーバー出力ファイルにエラー ログを書き込みます。
WARNING: SQL Error: -244, SQLState: IX000
16-Oct-2013 19:15:00 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: Could not do a physical-order read to fetch next row.
16-Oct-2013 19:15:00 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: -113, SQLState: IX000
16-Oct-2013 19:15:00 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ISAM error: the file is locked.
16-Oct-2013 19:15:00 org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SEVERE: Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: could not update: [uk.co.orange.rp.collections.entity.PpsServerLock#2]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
.
.
.
Eclipse では、クラスパスに slf4j-log4j12 jar を追加することで、コンソールへのログインを回避できます。しかし、WebLogic アプリケーションで同じことを達成することはできません。
weblogic-application.xml に以下を追加しようとしても、うまくいきません。
<prefer-application-packages>
<package-name>org.slf4j.*</package-name>
<package-name>org.apache.log4j.*</package-name>
</prefer-application-packages>
誰かが他に何ができるかを提案できますか。
Hibernate-3.3.2、Log4j-1.2.15、slf4j-1.5.6、JPA-1.1 を使用しています
よろしく