从Glassfish取消部署Grails应用程序会导致Class不变违规

时间:2011-08-22 08:37:56

标签: grails glassfish log4j

我有一个在Glassfish中运行的Grails应用程序,但是当我取消部署它时会得到一个

  

类不变违规

快速查看堆栈跟踪并在网上搜索报告这是Log4j的一个问题

我正在使用log4j-1.2.16.jar

时的最新log4j

有关如何克服此错误的任何建议。

[Mon, 22-Aug-2011 @ 09:23:32.494] [admin-thread-pool-4848(64)] ERROR javax.enterprise.system.std.com.sun.enterprise.server.logging - java.lang.IllegalStateException: Class invariant violation at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199) at org.apache.log4j.LogManager.getLogger(LogManager.java:228) at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)

[编辑1]

我刚刚在Spring源论坛上发现了这个有趣的内容:

建议使用以下方法来避免此问题:

  1. 将org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES系统属性设置为false。
  2. 应用bug 40212中的补丁或升级到已应用该补丁的版本。
  3. 升级到log4j 1.2.16或更高版本以更好地防御类加载器攻击或在发生时提供更好的诊断消息。
  4. [解决] 设置属性

    org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES = false 
    
    Glassfish中的domain.xml文件中的

    解决了问题

0 个答案:

没有答案