我正在使用Oracle的OEPE发行版(包括Weblogic服务器10.3.5)开发Web应用程序。WLS包含自己的Spring版本,该版本似乎是2.5.6.SEC01。但是,我们正在尝试使用3.1发行版的Spring和Spring Security功能。
Maven POM将Spring Version定义为属性3.1.1.RELEASE(该属性已插入各节中,即:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency>
我在weblogic.xml中尝试了两种单独的方法来排除内置的Spring(一种在下面注释掉,但是请放心,我已经尝试过两种方法):
<wls:container-descriptor> <wls:prefer-application-packages> <wls:package-name>com.oracle.ojdbc16.*</wls:package-name> <wls:package-name>antlr.*</wls:package-name> <wls:package-name>javax.persistence.*</wls:package-name> <wls:package-name>org.apache.commons.*</wls:package-name> <wls:package-name>org.springframework.*</wls:package-name> <wls:package-name>org.hibernate.*</wls:package-name> <wls:package-name>org.apache.xerces.*</wls:package-name> </wls:prefer-application-packages> <!-- <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> --> </wls:container-descriptor>
使用我自己的Spring版本,我该怎么做?
选项1:将Spring 3.x应用程序部署到未安装JRF的域中的wls服务器。这对我行得通。
选项2:在weblogic.xml中使用preferred-web-inf-classs并进行战争部署。这对我来说适用于wls 10.3.6,JRF域,Spring 3.2.2。我无法使Preferred-Application-Package起作用,但是Preferred-web-inf-classs起作用了。
注意:在没有安装JRF的域中,我尝试了war / weblogic.xml / prefer-application-packages和ear / weblogic-application.xml / prefer-application-packages方法,但都没有效果。我有一个测试jsp,它输出org.springframework.core.SpringVersion.getVersion(),尽管我付出了很多努力,它仍然报告2.5.6.SEC01(这是oracle_common / modules文件夹中捆绑的Spring版本)。
但是,在非JRF域中部署相同的应用程序,并且org.springframework.core.SpringVersion.getVersion()将报告与应用程序捆绑在一起的spring的任何版本。
我有同样的问题。解决方案是在EAR项目的META-INF文件夹中创建weblogic-application.xml。这是代码。
<?xml version="1.0" encoding="UTF-8"?> <weblogic-application> <prefer-application-packages> <package-name>org.apache.*</package-name> <package-name>org.springframework.*</package-name> </prefer-application-packages> </weblogic-application>
也许你的问题是你将weblogic.xml用于WAR项目中,而不是将weblogic-application.xml用于EAR项目中。
希望能帮助到你。