tomcat中web项目迁移到weblogic上jar冲突概述和解决办法

当你在tomcat下开发web应用迁移到weblogic上运行时如果报诸如此类错误:

1:javax.validation.ValidationException: HV000041: Call to TraversableResolver.isReachable() threw an exception.

2:Caused By: javax.persistence.PersistenceException: Failed to load provider from META-INF/services

3:Caused By: java.lang.ClassCastException: org.apache.openjpa.persistence.PersistenceProviderImpl cannot be cast to javax.persistence.spi.PersistenceProvider

这个问题是由于weblogic自身的jpa jar包和web应用使用的jpa jar冲突导致的,解决以上问题:

1:需要在web应用的WEB-INF目录下添加weblogic.xml文件,其中要添加上<prefer-web-inf-classes>true</prefer-web-inf-classes>内容。需要注意的是weblogic.xml文件的xmlns最好和weblogic容器的weblogic.xml文件的xmlns一致。

2:以linux为准,在weblogic的安装目录下修改一下文件:

setDomainEnv.sh和startWebLogic.sh,这两个文件存放在一下目录:user_projects/domains/weblogic/bin

setDomainEnv.sh修改内容如下:tomcat中web项目迁移到weblogic上jar冲突概述和解决办法_第1张图片


添加了:JAVA_OPTIONS="${JAVA_OPTIONS} -DUseSunHttpHandler=true"


startWebLogic.sh修改内容如下:tomcat中web项目迁移到weblogic上jar冲突概述和解决办法_第2张图片

添加了:export EXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true",去掉了:export JAVA_OPTIONS内容


完成以上步骤后,重启weblogic即可。

参考地址为:http://blog.sina.com.cn/s/blog_4c925dca01014vnt.html

你可能感兴趣的:(tomcat中web项目迁移到weblogic上jar冲突概述和解决办法)