Weblogic 10.3.5覆盖Spring版本

Weblogic 10.3.5覆盖Spring版本,spring,weblogic,Spring,Weblogic,我正在使用Oracle的OEPE发行版开发一个web应用程序,包括Weblogic server 10.3.5。WLS包括它自己的Spring版本,看起来是2.5.6.SEC01。但是,我们正在尝试使用Spring和3.1版本特有的Spring安全特性 Maven POM将Spring版本定义为3.1.1.RELEASE的属性(该属性插入到章节中,即: <dependency> <groupId>org.springframework</groupId>

我正在使用Oracle的OEPE发行版开发一个web应用程序,包括Weblogic server 10.3.5。WLS包括它自己的Spring版本,看起来是2.5.6.SEC01。但是,我们正在尝试使用Spring和3.1版本特有的Spring安全特性

Maven POM将Spring版本定义为3.1.1.RELEASE的属性(该属性插入到章节中,即:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>

org.springframework
弹簧芯
${spring.version}
我在weblogic.xml中尝试了两种不同的方法来排除内置的Spring(下面有一种方法被注释掉了,但请放心,我已经尝试了这两种方法):


com.oracle.ojdbc16*
antlr*
javax.persistence*
org.apache.commons*
org.springframework*
org.hibernate*
org.apache.xerces*

要使用我自己版本的Spring,我到底需要做些什么?

我也遇到了同样的问题。解决方案是将weblogic-application.xml创建到EAR项目的META-INF文件夹中。下面是代码

<?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>

org.apache*
org.springframework*
可能您的问题是,您在WAR项目中使用了weblogic.xml,而不是在EAR项目中使用weblogic-application.xml


希望有帮助。

选项1:将Spring 3.x应用程序部署到未安装JRF的域中的wls服务器上。这对我很有用

选项2:在weblogic.xml中使用首选web inf类,并作为war部署。这在wls 10.3.6、JRF domain、Spring 3.2.2中对我有效。我无法让首选应用程序包正常工作,但首选web inf类

注意:对于一个安装了JRF的域,我尝试了war/weblogic.xml/preference-application-packages和ear/weblogic-application.xml/preference-application-packages两种方法,但两种方法都没有效果。我有一个输出org.springframework.core.SpringVersion.getVersion()的测试jsp尽管我付出了努力,它还是坚持报告2.5.6.SEC01(这是oracle_common/modules文件夹中捆绑的Spring版本)


不过,在非JRF域中部署相同的应用程序,org.springframework.core.SpringVersion.getVersion()将报告与应用程序捆绑的spring的任何版本。

如果您使用的是spring Framework,您很可能会在WAR而不是EAR中部署spring Bean,即使是在spring集成项目中。 高达12c(包括12.2.1),没有任何特定配置,您最多只能使用Spring framework 3.0.5和Spring Integration 2.2.6。任何使用更高Spring版本的尝试都可能在部署时失败:

weblogic.application.ModuleException: java.lang.NoSuchMethodError: org.springframework.core.MethodParameter.getNestedParameterType()Ljava/lang/Class;
因为Oracle JRF嵌入式Spring框架是由类加载器选择的

在多服务器域中,不将JRF部署到给定的服务器实例并不能解决问题,但是一个没有JRF的整个域可以解决问题

取而代之的技巧是在部署描述符web-inf/weblogic.xml中使用
preference web inf classes
参数,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.8/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
    </wls:container-descriptor>
</wls:weblogic-web-app>

真的
您可以在带有JRF工具的WebLogic域中享受SpringFramework4.2的好处。
当然,不要忘记将Spring core 4.2和相关依赖项包含到WAR文件程序集中(即检查build.WAR以包含WEB-INF/lib/Spring*.jar)。

我们确定不需要JRF,诅咒Oracle,继续我们的业务。
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.8/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
    </wls:container-descriptor>
</wls:weblogic-web-app>