基本环境:
spring 3.1.0
amp 5.9.x
weblogic 10.3.5
jdk 1.6.x
linux 2.6
在将APP部署到weblogic上时,无法启动,提示”找不到匹配的方法setLifo“。
原因是weblogic与amp都用到了apache commons lang包,且依赖的版本号不同,存在兼容问题。
其中,amq依赖commons-lang包只是在组件console中输出日志,其他组件输出的日志我们还是可以依赖log4j或logback来输出到我们制定的目录和文件上。
因此,我们可以做如下调整,让APP跑起来:
1、修改weblogic.xml优先加载jar包位置:
<?xml version="1.0"?> <weblogic-web-app> <container-descriptor> <prefer-application-packages> <package-name>org.apache.*</package-name> </prefer-application-packages> </container-descriptor> <session-descriptor> <!-- 避免多个应用部署到同一台weblogic时, session cookie相互覆盖 --> <cookie-name>JSESSIONID_XXX_WEB</cookie-name> </session-descriptor> </weblogic-web-app>
2、从maven amq-console的依赖中将commons-lang包排除:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-console</artifactId> <exclusions> <exclusion> <artifactId>commons-lang</artifactId> <groupId>commons-lang</groupId> </exclusion> </exclusions> </dependency>