我有一个EAR文件,其中包含两个不同的jar,它们共享一些具有相同package.class名称的类。这些JAR部署在我的APP-INF / lib目录中。
让我们说一个jar包含最新版本的类,B包含旧版本的类。当引用一个类时,Weblogic首先进入B jar并加载破坏某些功能的旧版本。
如何告诉Weblogic从APP-INF / lib加载B之前的jar A?我需要定义一个特定的顺序,以避免加载旧类。
我已经尝试在<classloader-structure>
weblogic-application.xml
中添加一个jar,就像这样:
EAR结构:
EAR
\--->A.jar
\--->webapp.war
.....
WebLogic的application.xml中:
<classloader-structure>
<module-ref>
<module-uri>A.jar</module-uri>
</module-ref>
.......
</classloader-structure>
然后它抛出错误说
weblogic.management.DeploymentException: classloader-structure element in weblogic-application.xml is referencing the module-uri A.jar which does not exist in this application.
还有一件事要记住,A.jar不是模块,战争或EJB它只是一个普通的hibernate库:hibernate-jpa-2.0-api-1.0.1.Final.jar
我正在使用Weblogic 12c版本。
答案 0 :(得分:1)
你需要为class-loader设置父最后一个策略,请参考http://www.rgagnon.com/javadetails/java-0551.html,因为我记得weblogic服务器中有一个GUI来做同样的事情。