从 Glassfish 取消部署 Grails 应用程序会发生类不变性违规
我有一个在 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源码论坛上发现了这个,这很有趣:
建议使用以下方法来避免这个问题:
- 设置org.slf4j.LoggerFactory.getLogger (LoggerFactory.java:255) apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES 系统属性设置为 false。
- 应用 bug 40212 中的补丁或升级到应用了该补丁的版本。
- 升级到 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:
- Set the org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES system property to false.
- Apply the patch from bug 40212 or upgrade to a version that has that patch applied.
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论