Weblogic 10.3.5 Переопределение версии Spring

Я разрабатываю веб-приложение с использованием дистрибутива OEPE Oracle, включая Weblogic server 10.3.5. WLS включает в себя собственную версию Spring, которая выглядит как 2.5.6.SEC01. Однако мы пытаемся использовать функции Spring и Spring Security, относящиеся к выпуску 3.1.

Maven POM определяет Spring Version как свойство 3.1.1.RELEASE (с этим свойством, подключенным к разделам, то есть:

 org.springframework spring-core ${spring.version}  

Я попробовал два разных способа в weblogic.xml, исключая встроенную Spring (один из них прокомментирован ниже, но будьте уверены, что я пробовал оба):

   com.oracle.ojdbc16.* antlr.* javax.persistence.* org.apache.commons.* org.springframework.* org.hibernate.* org.apache.xerces.*  <!-- true -->  

Что мне нужно сделать, чтобы использовать мою собственную версию Spring?

OPTION1: Разверните приложение Spring 3.x на сервере wls в домене, в котором нет JRF. Это подходит для меня.

OPTION2: используйте prefer-web-inf-classes в weblogic.xml и развертывайте как войну. Это сработало для меня с wls 10.3.6, домен JRF, Spring 3.2.2. Я не мог получить предпочтительные приложения-пакеты для работы, но предпочитал-web-inf-classes.

ПРИМЕЧАНИЯ: В домене, в котором установлен JRF, я пробовал использовать оба метода war / weblogic.xml / prefer-application-packages и ear / weblogic-application.xml / prefer-application-packages и не кажется эффективным. У меня есть тестовый jsp, который выводит org.springframework.core.SpringVersion.getVersion (), и он сохраняется в отчете 2.5.6.SEC01, несмотря на мои усилия (это версия Spring, включенная в папку oracle_common / modules).

Разверните одно и то же приложение в домене, отличном от JRF, но org.springframework.core.SpringVersion.getVersion () сообщит о любой версии весны, которую вы связали с вашим приложением.

У меня такая же проблема. Решением было создание weblogic-application.xml в папке META-INF проекта EAR. Вот код.

    org.apache.* org.springframework.*   

Возможно, ваша проблема заключается в том, что вы используете weblogic.xml в проекте WAR вместо weblogic-application.xml в проекте EAR.

Надеюсь, поможет.

Если вы используете Spring Framework, скорее всего, вы разворачиваете свои весенние бобы в WAR, а не EAR, даже в случае проекта Spring Integration. До 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; 

потому что платформа Spring Framework, встроенная в Oracle-JRF, выбирается загрузчиком classов.

В многосерверном домене не развертывание JRF для данного экземпляра сервера не решит проблему, но сделает весь домен без JRF.

Трюк вместо этого заключается в использовании параметра prefer-web-inf-classes в дескрипторе развертывания WEB-INF / weblogic.xml следующим образом:

    true   

и вы можете наслаждаться преимуществами Spring Framework 4.2 в домене WebLogic с помощью инструментария JRF. Не забудьте, конечно, включить Spring core 4.2 и связанные с ним зависимости в сборку WAR-файла (то есть проверить встроенный .war, чтобы он содержал WEB-INF / lib / spring * .jar).

Давайте будем гением компьютера.