복붙노트

[SPRING] Weblogic 10.3.5 Spring 버전 무시

SPRING

Weblogic 10.3.5 Spring 버전 무시

웹 로직 서버 10.3.5를 포함하여 오라클의 OEPE 배포판을 사용하여 웹 애플리케이션을 개발 중입니다. WLS에는 스프링 버전 2.5.10.SEC01이 포함되어 있습니다. 그러나 우리는 3.1 릴리스에 고유 한 스프링 및 스프링 보안 기능을 사용하려고합니다.

Maven POM은 Spring 버전을 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>

내 자신의 스프링 버전을 사용하려면 전 세계에서해야 할 일이 무엇입니까?

해결법

  1. ==============================

    1.OPTION1 : JRF가 설치되지 않은 도메인의 wls 서버에 Spring 3.x 응용 프로그램을 배포하십시오. 그것은 나를 위해 일합니다.

    OPTION1 : JRF가 설치되지 않은 도메인의 wls 서버에 Spring 3.x 응용 프로그램을 배포하십시오. 그것은 나를 위해 일합니다.

    OPTION2 : weblogic.xml에서 prefer-web-inf-classes를 사용하고 전쟁으로 배포하십시오. 이것은 나를 위해 wls 10.3.6, JRF 도메인, 봄 3.2.2 근무했습니다. 나는 선호하는 응용 프로그램 패키지를 사용할 수 없었지만 웹 inf 클래스를 선호했습니다.

    NOTES : JRF가 설치되어있는 도메인에서 war / weblogic.xml / prefer-application-packages와 ear / weblogic-application.xml / prefer-application-packages 접근 방식을 모두 시도했지만 효과적이지는 않습니다. org.springframework.core.SpringVersion.getVersion ()을 출력하는 test jsp를 가지고 있으며 내 노력 (이것은 oracle_common / modules 폴더에 번들 된 Spring의 버전 임)에도 불구하고 2.5.6.SEC01에서 계속보고됩니다.

    하지만 JRF가 아닌 도메인에 동일한 앱을 배포하면 org.springframework.core.SpringVersion.getVersion ()은 앱에 번들로 제공되는 모든 버전의 Spring을보고합니다.

  2. ==============================

    2.나는 똑같은 문제가 있었다. 해결책은 EAR 프로젝트의 META-INF 폴더에 weblogic-application.xml을 작성하는 것이 었습니다. 여기에 코드가 있습니다.

    나는 똑같은 문제가 있었다. 해결책은 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-application.xml 대신 EAR 프로젝트에 weblogic.xml을 WAR 프로젝트에 사용하고 있다는 것입니다.

    희망이 도움이됩니다.

  3. ==============================

    3.Spring Framework를 사용하고 있다면 Spring Integration 프로젝트의 경우에도 EAR이 아닌 WAR에 Spring Bean을 배포 할 가능성이 높습니다. 특정 설정없이 최대 12c (12.2.1 포함)까지 Spring Framework 3.0.5 및 Spring Integration 2.2.6을 고수해야합니다. 더 높은 Spring 버전을 사용하려는 시도는 배포시에 발생합니다.

    Spring Framework를 사용하고 있다면 Spring Integration 프로젝트의 경우에도 EAR이 아닌 WAR에 Spring Bean을 배포 할 가능성이 높습니다. 특정 설정없이 최대 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 Framework는 클래스 로더에 의해 선택되기 때문입니다.

    다중 서버 도메인에서 JRF를 특정 서버 인스턴스에 배포하지 않아도 문제는 해결되지 않지만 JRF가없는 전체 도메인에서는 문제가 해결됩니다.

    대신 다음과 같이 WEB-INF / weblogic.xml 배포 설명자에서 prefer-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 도메인에서 Spring Framework 4.2의 이점을 누릴 수 있습니다. 물론 WAR 파일 어셈블리에 Spring core 4.2 및 관련 종속성을 포함하는 것을 잊지 마십시오 (예 : WEB-INF / lib / spring * .jar를 포함하도록 빌드 된 .war을 확인하십시오).

  4. from https://stackoverflow.com/questions/11476874/weblogic-10-3-5-overriding-spring-version by cc-by-sa and MIT license