0

每当查询由于表中的行级锁定而无法更新记录时,我都会在 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

问候

4

2 回答 2

0

正如您提到的,您使用 sl4j 作为日志记录外观和 log4j 作为底层日志库,您必须在应用程序类路径中的某处使用特定于应用程序的 log4j 属性(或 xml 配置)文件。尝试将 org.hibernate 的 log4j 记录器设置为 FATAL 或高于您在应用程序代码中捕获异常的任何级别。

于 2013-10-16T19:08:25.533 回答
0

我找到了原因,我在服务器类路径中有 slf4j-log4j 和 slf4j-jdk14 jar。我已经从类路径中删除了 slf4j-jdk14 并且一切都按预期工作。由于我不想要任何休眠日志,因此不需要对 log4j.xml 进行任何更改。

谢谢大家。

于 2013-10-17T10:37:39.680 回答