我们尝试添加Rampart到我们模块的 POM 文件中,但这样做之后,我们ear不能再以以下异常开始:
java.lang.IllegalAccessError: tried to access method org.apache.log4j.Logger.<init>(Ljava/lang/String;)V from class org.apache.log4j.spi.RootLogger
at org.apache.log4j.spi.RootLogger.<init>(RootLogger.java:43)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:78)
at org.apache.log4j.xml.XMLWatchdog.doOnChange(DOMConfigurator.java:862)
at org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:88)
at org.apache.log4j.helpers.FileWatchdog.<init>(FileWatchdog.java:57)
at org.apache.log4j.xml.XMLWatchdog.<init>(DOMConfigurator.java:853)
at org.apache.log4j.xml.DOMConfigurator.configureAndWatch(DOMConfigurator.java:584)
org.apache.log4j.Logger在两个 jar 中定义 -log4j和log4j-over-slf4j. 在log4j- 有一个构造函数:
protected Logger(String name)
里面有log4j-over-slf4j一个构造函数:
Logger(String name) //Package access only
似乎由于某种原因Rampart触发了错误的类路径顺序并放置log4j-over-slf4j在log4j.
然而,最麻烦的问题是我们无法改变我们ear的清单来改变顺序——所以最终我们通过将log4jjar 添加到系统类路径来“解决”它
我的问题有两个部分:
- 问题是否
Rampart熟悉,是否有解决方案? - 改变耳朵的清单不会影响类路径的原因是什么?(我对应用程序服务器没有那么丰富的经验 - 欢迎提供明显的答案)
我们正在使用Weblogic 10.3和Rampart 1.5.1。我们正在使用Maven来编译和构建ear文件——我今天刚刚了解了一个mar文件,所以任何关于它的输入也将受到欢迎。