问题是在Tomcat移植到Weblogic10上出现的问题,主要原因就是Spring Hibernate与WebLogic包的冲突造成的,但是我进行了很多尝试,仍然不能解决这个问题。
以下是我所使用的Log4j配置,在Tomcat下运行都是正常的:
- ### direct log messages to stdout ###
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d - %c -%-4r [%t] %-5p %c %x - %m%n
- ### direct messages to file MaxBackup test.log ###
- log4j.appender.file=org.apache.log4j.RollingFileAppender
- log4j.appender.file.File=test.log
- log4j.appender.file.MaxFileSize=100KB
- log4j.appender.file.MaxBackupIndex=1
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d - %c -%-4r [%t] %-5p %c %x - %m%n
- ### set log levels - for more verbose logging change 'INFO' to 'DEBUG' ###
- log4j.rootLogger=DEBUG,stdout,file
- log4j.logger.org.hibernate=error
- log4j.logger.org.springframework=error
- log4j.logger.org.apache=error
- log4j.logger.org.apache=error
- ### log JDBC bind parameters ###
- log4j.logger.org.hibernate.type=error
1.Spring2.0.5运行于WebLogic10上
在服务器上很难成功的打印出log 一般只能生成一次Log,就是在domain管理器启动的时候,然后将我生成的test.log删除后,就不会再次生成Log
2.Spring2.0.5 运行于WebLogic10上,使用Spring Log4jConfigServlet自定义加载Log4j
方法参考:http://blog.csdn.net/zhizhesky/archive/2007/06/02/1634908.aspx 上面提供的配置,但是仍然无效,并且抛出Cannot set web app root system property when WAR file is not expanded这样严重的错误。错误原因是明显的,由于WebLogic上获得资源文件时不能采用getRealPath("/")这样的方法,但是考虑到这种不兼容对系统的潜在威胁,我决定直接放弃Spring2.0.5(目前使用Spring2.0.5只是因为Spring提供的快速加载Beans的好处,而没有使用Spring2提供的自定义xml和AspectJ风格的AOP配置,所以降级没有什么问题)。
3.Spring-on-wls 1.2.5 运行于Webogic10上
由于WebLogic与Sping冲突非常多,所以被迫采用Spring版本降级,采用bea官方提供的Spring-on-wls 1.2.5来进行系统集成,为的是减少更多潜在的兼容性问题。
但是使用以后仍然没有获得满意的效果,而且出现了更为奇怪的错误情况:
A.首次更换spring.jar,系统正常运行Log文件test.log正常输出,但是我重新deploy以后就出现Log4j的错误警告:
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
仍然是Spring与Weblogic的冲突造成,我晕,没办法,做一次修改,将log4j.properties进行修改,将log4j.logger.org.springframework=error注释掉,结果运行正常,日志也正常打出,但是这样在debug级别Spring的所有日志都会被打出,造成服务器启动异常缓慢。
无奈,将刚才的配置释放,这次不再出现上面的警告,而是出现了更奇怪的现象,Hibernate的所有debug日志都打出,比Spring的所有debug还慢许多!我吐血……
这个问题已经搞了我一个星期了,实在是没有办法解决,所以拿出来请大家,谢谢了先!就目前的情况Spring Hibernate移植到Weblogic上将会有更多不可预知的麻烦发生,紧张ing……