Java web项目从tomcat转为weblogic环境所遇到的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lin051124/article/details/53742218

最近公司需要将原本在tomcat上开发的项目部署在weblogic上运行,因为原先对weblogic没有接触,不知道tomcat和weblogic的主要区别,只能边学边找资料,所以避免不了走了许许多多的弯路。网上的资料可能因为版本、环境的不一致,无法解决问题。
1、出现jar冲突 java.lang.NoSuchMethodError: javax/persistence/Persistence.getPersistenceUtil()L
javax/persistence/PersistenceUtil;
经检测 10.3.6 版本的wlc默认配置加载的 javax.persistence_1.0.0.0_1-0-2.jar, 此jar包版本跟项目中用到的 hibernate-jpa-2.0-api-1.0.0.Final.jar 版本不兼容 ,
而 javax.persistence_1.1.0.0_2-0.jar 与 项目中的hibernate-jpa-2.0-api-1.0.0.Final.jar 版本是兼容的, 因此只需要将 javax.persistence_1.0.0.0_1-0-2.jar 替换成 javax.persistence_1.1.0.0_2-0.jar 即可.
2、 在weblogic中发布的应用使用了commons-lang-2.4.jar,但在调用。StringUtils.startsWith方法时,报异常
Java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.startsWith(Ljava/lang/String;Ljava/lang/String;)Z。
其实这个问题原因就是weblogic启动时预先加载了一个commons-lang的包(bea11g\modules\com.bea.core.apache.commons.lang_2.1.0.jar)。导致应用下面的2.4的包未加载。
解决办法:
在WEB-INF下面添加weblogic.xml文件,其中添加以下内容:

<container-descriptor>  
  <prefer-web-inf-classes>true</prefer-web-inf-classes>  
</container-descriptor>  

3、log4j冲突
在tomcat中需要配置log4j,但是到weblogic会产生冲突,目前知道主要原因是weblogic本身也有加载log4j,所以现在把项目中的web.xml中的log4j的配置注释掉
4、webservice不能用

猜你喜欢

转载自blog.csdn.net/lin051124/article/details/53742218