从 Glassfish 取消部署 Grails 应用程序会发生类不变性违规

发布于 2024-12-01 03:37:22 字数 1288 浏览 0 评论 0原文

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

违反类不变性

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

我当时使用的是最新的 log4j log4j-1.2.16.jar

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

[Mon, 22-Aug-2011 @ 09:23:32.494] [admin-thread-pool-4848(64)] 错误 javax.enterprise.system.std.com.sun.enterprise.server.logging - java .lang.IllegalStateException:类不变性违规 在 org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199) 在 org.apache.log4j.LogManager.getLogger(LogManager.java:228) 在 org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)

[编辑1]

我刚刚在spring源码论坛上发现了这个,这很有趣:

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

  1. 设置org.slf4j.LoggerFactory.getLogger (LoggerFactory.java:255) apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES 系统属性设置为 false。
  2. 应用 bug 40212 中的补丁或升级到应用了该补丁的版本。
  3. 升级到 log4j 1.2.16 或更高版本,以更好地防御类加载器攻击或在发生攻击时提供更好的诊断消息。

[解决方案] 属性可以解决该问题

org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES = false 

在 Glassfish 中设置 domain.xml 文件中的

I have a Grails application that runs in Glassfish but when I undeploy it gets a

Class invariant violation

A quick look at the stacktrace and search on the web reports that this is a problem with Log4j

I am using the latest log4j at the time log4j-1.2.16.jar

Any suggestions how to overcome this error.

[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)

[Edit 1]

I have just found this on the spring source forum which is interesting:

The following are recommended to avoid this problem:

  1. Set the org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES system property to false.
  2. Apply the patch from bug 40212 or upgrade to a version that has that patch applied.
  3. Upgrade to log4j 1.2.16 or later to better defend against class loader attack or provide a better diagnostic message when it does occur.

[Solution]
Setting the property

org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES = false 

in the domain.xml file in Glassfish resolves the issue

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文