В настоящее время мы разрабатываем новое программное обеспечение, для которого мы решили, что модульность OSGi будет весьма полезна, поскольку само программное обеспечение может быть хорошо разложено в модульную структуру, чтобы избежать кодового беспорядка в будущем и иметь возможность легко добавлять новые функции и подключить к существующим.подходит для OSGi платформа?
Я играл с двумя (возможно, самыми популярными) платформами OSGi, Eclipse Equinox (с Gemini Blueprint) и Apache Felix (с Овном). В основном я сейчас нахожусь в принятии решения, которое мы должны использовать.
Мы имеем довольно большой опыт работы с Spring, поэтому мы хотели бы продолжать использовать, что, наряду с аннотациями (например @Autowired
для автоматического связывания бобов ВНУТРИ ЖЕ пачки, @ServiceReference
для автоматического связывания по жгутам), некоторые частные пружина аддонов (например, Data JPA), Hibernate как поставщик JPA (до сих пор у нас есть опыт только с Hibernate в качестве реализации JPA, у него есть все возможности, которые нам нужны, поэтому мы хотим избежать необходимости переключиться на что-то еще), обмен сообщениями JMS (с клиентом ActiveMQ) и несколько других функций. Позже мы также хотим иметь возможность реализовать собственный диспетчер безопасности (для контроля доступа к определенным пакетам на основе, например, их цифровых подписей, сертификатов с встроенными в них разрешениями)
До сих пор я мог сделайте два пакета тестирования (один из них использовал услугу у другого) и рассматривайте их как «Весенние бобы» на равноденствии с Gemini BP. Однако у меня были некоторые проблемы с аннотациями (и мне не очень нравятся компоновки в XML-файлах, особенно с не столь сложной архитектурой - большинство из них - Singletons).
Я тоже пробовал Овна (но не удалось с помощью Spring, возможно, просто не потратил на это достаточно времени :)).
Какую платформу OSGi вы рекомендуете для такого использования?
Спасибо за очень подробный ответ. Так вы предлагаете сбросить весну? Как его использовать для некоторых других задач (а не как инжекторы зависимостей)? Например, Spring Data JPA предоставляет действительно отличные способы определения ваших DAO/репозиториев (как декларативных интерфейсов), было бы здорово, если бы я мог использовать это в моем пакете доступа к данным –
. Я предлагаю вам начать с OSGi таким образом, как ты можешь. Попробуйте некоторые обучающие программы о Declarative Services.Если вы не видите, как бы вы могли достичь своих целей, перейдите в Blueprint (возможно, Овен). Однако имейте в виду, что вы можете вернуться позже, когда у вас было несколько проектов с OSGi. Если вы хотите использовать пример JPA и DS, вы можете проверить пример enRoute, написанный Peter Kriens: https://github.com/osgi/osgi.enroute.blog –