Переход с Spring-DM и Spring 3 на Blueprint и Spring 4 на Karaf

У меня есть устаревшее приложение, написанное на Java 7 с использованием Spring 3.2.18, которое работает на Karaf 2.4.4 вместе с Spring-DM. Я планирую перейти на более новые версии Spring, Java и Karaf.

Я знаю, что spring-dm не поддерживается, и мне следует перейти на Blueprint, но я не уверен, смогу ли я затем загружать компоненты OSGI в контексте Spring, как это делает spring-dm. Karaf 2.4.4 его поддерживает?

Я бы не хотел слишком сильно менять исходный код и по-прежнему использовать @Autowired, как сейчас.

В качестве первого шага я планирую заменить spring-dm планом, следующим шагом будет обновление Spring 3 до Spring 4. Это правильный подход?


person Community    schedule 22.07.2017    source источник


Ответы (1)


Karaf по умолчанию использует Aries Blueprint, который вообще не поддерживает бины Spring, однако вы можете использовать blueprint-maven-plugin, который создает файл blueprint.xml из аннотированных классов.

Но если ваш код сильно зависит от Spring, например SpringMVC для предоставления сервлетов, вы можете использовать Gemini Blueprint , который является преемником Spring-DM и поддерживает Spring до версии 4.3.x, но я должен предупредить вас, что заставить его работать на karaf может быть сложно, особенно если вы используете SpringMVC.

person Cλstor    schedule 22.07.2017
comment
Существует расширение для Aries Blueprint, которое, кажется, поддерживает Spring/Spring-DM, но оно не задокументировано: github.com/apache/aries/tree/trunk/blueprint/blueprint-spring - person Jérémie B; 23.07.2017
comment
стоит сказать, что blueprint-maven-plugin, вероятно, прекратит поддержку весенних аннотаций: aries.apache.org/modules/ - person isco; 24.07.2017
comment
Похоже, что Karaf 3 по умолчанию использует расширитель Gemini github.com/apache/karaf/blob/karaf-3.0.8/assemblies/features/ Поскольку я не хочу слишком сильно менять исходный код, я думаю, что попробую просто изменить конфигурацию контекста XML SpringDM на Gemini Blueprint - person ; 24.07.2017
comment
@JérémieB Я знаю это, к сожалению, оно все еще находится на очень ранней стадии альфа-тестирования, поэтому его нельзя использовать в производстве. Если я хорошо помню, по умолчанию он имеет Gemini 1.0, который не поддерживает Spring 4, вам нужно будет использовать Gemini 2.x, вы можете создать для него свой собственный файл функций. - person Cλstor; 24.07.2017
comment
Согласен и не могу получить ответы от ребят из Овна по этому компоненту. К сожалению, большая часть документации Aries слишком легка, чтобы быть уверенной (прокси-сервер aries, jpa, пользовательское пространство имен blueprint, ...) - person Jérémie B; 24.07.2017
comment
Не могли бы вы пояснить, что заставить Близнецов работать с Карафом может быть непросто? - person jayant mishra; 07.05.2018
comment
@jayantmishra Конечно! Я обнаружил две основные проблемы с Gemini на Karaf. 1) Gemini-blueprint не может анализировать некоторые файлы blueprint.xml, потому что они тесно связаны с реализацией Aries, я уже отправил патч для исправления в gemini, который должен быть выпущен с gemini 3.1 правильно связываться с osgi, старый spring-dm имел реализацию OsgiBundleXmlWebApplicationContext, которая недоступна на Gemini, но есть на Virgo, поэтому вам нужно будет получить этот класс оттуда. Ну, это будет работать, но с некоторыми головными болями. - person Cλstor; 16.05.2018