刚刚帮同事解决了在weblogic部署webapp的问题; 最终的问题是jar包冲突;
找问题的过程就不赘述了,各种try之后,确定了问题;
然后我就查询了weblogic的类加载顺序的问题,不同于tomcat,weblogic的类加载顺序是:
首先加载domain/lib下的jar,然后再加载webapp/web-inf/lib下的jar
同事的项目是flex+spring,通信框架要求spring.jar必须放在web-inf/lib下;
其实目前一个最简单的解决方案就是删掉domain/lib下的spring.jar,但其他的app就不好使了;
所以问题就定位在类加载顺序的问题上,只要让weblogic的加载顺序修改为先加载web-inf/lib下的jar就ok
随后我在weblogic的文档(http://edocs.weblogicfans.net/wls/docs92/webapp/weblogic_xml.html#wp1067857)找到了如下解决方案:
prefer-web-inf-classes
如果将 <prefer-web-inf-classes> 元素设置为 true,则将优先加载位于 Web 应用程序的 WEB-INF 目录中的类,然后再加载应用程序或系统类加载器中的类。默认值为 false。控制台中指定的值优先于手工设置的值。
最终的解决办法:
在web-inf下创建一个weblogic.xml文件(如果没有的话)
然后在其中增加如下信息:
<?xml version="1.0" encoding="utf-8"?>
找问题的过程就不赘述了,各种try之后,确定了问题;
然后我就查询了weblogic的类加载顺序的问题,不同于tomcat,weblogic的类加载顺序是:
首先加载domain/lib下的jar,然后再加载webapp/web-inf/lib下的jar
同事的项目是flex+spring,通信框架要求spring.jar必须放在web-inf/lib下;
其实目前一个最简单的解决方案就是删掉domain/lib下的spring.jar,但其他的app就不好使了;
所以问题就定位在类加载顺序的问题上,只要让weblogic的加载顺序修改为先加载web-inf/lib下的jar就ok
随后我在weblogic的文档(http://edocs.weblogicfans.net/wls/docs92/webapp/weblogic_xml.html#wp1067857)找到了如下解决方案:
prefer-web-inf-classes
如果将 <prefer-web-inf-classes> 元素设置为 true,则将优先加载位于 Web 应用程序的 WEB-INF 目录中的类,然后再加载应用程序或系统类加载器中的类。默认值为 false。控制台中指定的值优先于手工设置的值。
最终的解决办法:
在web-inf下创建一个weblogic.xml文件(如果没有的话)
然后在其中增加如下信息:
<?xml version="1.0" encoding="utf-8"?>
<weblogic-web-app
xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
重新部署,ok,问题解决
来源:oschina
链接:https://my.oschina.net/u/96894/blog/124259