У вас уже есть свое программное обеспечение, но вам все еще нужен более эффективный метод, позволяющий вашим техническим пользователям расширять платформу.
Несмотря на то, что OSGi хорошо известна большинству Java-разработчиков, ее интеграция в ваш продукт может показаться сложной задачей. Отсутствие ясности в отношении точной работы OSGi еще больше затрудняет дальнейший путь.
В отличие от всего, с чем они хотели бы поэкспериментировать, OSGi кажется многим разработчикам Java скорее попыткой плыть по морю.
В этой статье вы познакомитесь с весенним учебным пособием OSGi Felix с использованием простой программы и расскажете о ее преимуществах и других важных деталях.
Так что же такое OSGi?
Создание и распространение модулей и компонентов стало возможным благодаря платформе Java, известной как OSGi (Инициатива Open Service Gateway).
Особое внимание уделяется инкапсуляции функций и слабой связанности, что дает разработчикам несколько преимуществ, включая модульную функциональность, легко переносимую между исходными кодами, и тестирование, не требующее бесконечных зависимостей.
Как работает OSGi?
Система динамических компонентов для Java определяется набором спецификаций, называемых OSGi. Эти спецификации обеспечивают подход к разработке, при котором приложение создается из нескольких частей, а затем упаковывается в пакеты.
Эти компоненты используют для связи локальные и сетевые сервисы. Цель состоит в том, чтобы сделать основной код программы настолько компактным, насколько это возможно. Возможна сильная связь между этим кодом и несколькими компонентами.
Повторно используемые строительные элементы приложения называются компонентами. Подумайте о таких функциях, как корзина покупок для вашего веб-сайта электронной коммерции или приложение для расчета заработной платы для вашей системы управления персоналом.
Компоненты могут использовать OSGi, чтобы скрыть свои реализации от других компонентов и предоставлять им только необходимые данные через сервисы.
Это предотвращает непреднамеренное изменение компонентами данных, к которым у них не должно быть доступа, и управляет зависимостями.
В идеальном мире все соединения между компонентами в приложении OSGi осуществляются через службы. Пакет Java содержит API, указанный для служб.
Сотрудничество между поставщиками услуг и клиентами требует использования классов и/или интерфейсов, составляющих API.
Все компоненты OSGi объединены в пакеты, каждый из которых включает ресурсы, необходимые для их работы. Связки довольно четко представляют, что им нужно от окружения и на что они способны.
Преимущества
- Приложения OSGi имеют доступ к внешним репозиториям пакетов.
- Фреймворк позволяет проектировать сервис-ориентированный на модульном уровне.
- Это позволяет управлять версиями и зависимостями пакетов приложений в дополнение к стандартизации и упрощению интеграции сторонних библиотек.
- Приложения лучше адаптируются к изменяющимся требованиям, более портативны и быстрее реинжинирингуются.
- A веб-приложение может быть развернута как группа версий OSGi с динамическим сроком службы благодаря интеграции платформы с моделью программирования Java EE.
- Вместо того, чтобы устанавливаться как сторонняя библиотека как часть приложения, платформа обеспечивает декларативную сборку и оптимизированное модульное тестирование Spring Framework в стандартизированной форме, которая предоставляется как часть среды выполнения сервера приложений.
- Для корпоративных приложений, состоящих из нескольких пакетов версий с динамическими жизненными циклами, платформа предлагает изоляцию.
- Он содержит интегрированный репозиторий пакетов, в котором могут храниться общие общие и версионные пакеты, используемые несколькими приложениями, что предотвращает развертывание каждым приложением отдельной копии каждой общей библиотеки.
Начало работы с OSGi Felix spring
Получение ресурсов
Загрузив самую последнюю версию Apache Karaf с Этот веб-сайт, мы можем начать наше OSGi-приключение.
Основанный на Apache Felix, реализации Apache спецификации OSGi, Apache Karaf предоставляет платформу для приложений на основе OSGi.
Karaf предоставляет различные полезные функции поверх Felix, которые помогут нам ознакомиться с OSGi, например, интерфейс командной строки, который позволит нам взаимодействовать с платформой.
Точка входа для пакетов
Приложение должно быть упаковано как пакет OSGi, прежде чем его можно будет запустить в среде OSGi. Кроме того, необходимо указать точку входа приложения; это не стандартная функция public static void main(String[] args).
Итак, давайте начнем с создания “Привет мирприложение на базе OSGi.
Начнем с установки базовой зависимости OSGi API:
Среда выполнения OSGi будет иметь доступ к зависимости, поэтому пакет не должен содержать ее. Поэтому он помечен как поставляемый.
Теперь давайте создадим простой класс HelloWorld:
Классы, действующие как точки входа для пакетов, должны реализовывать предоставляемый OSGi интерфейс BundleActivator.
Когда пакет, содержащий этот класс, запускается, платформа OSGi вызывает функцию start(). С другой стороны, незадолго до остановки пакета вызывается функция stop().
Не будем забывать, что в каждом комплекте может быть только один BundleActivator. Оба способа могут взаимодействовать со средой выполнения OSGi, используя заданный объект BundleContext.
Создание пакета
Сделайте pom.xml настоящим пакетом OSGi, внеся необходимые изменения.
Сначала мы должны ясно выразить, что наша цель — произвести набор.
Затем мы используем плагин maven-bundle-plugin для упаковки класса HelloWorld в виде пакета OSGi, предоставленного сообществом Apache Felix:
Значения заголовков OSGi, которые мы хотим включить в файл МАНИФЕСТА пакета, указаны в разделе инструкций.
Bundle-Activator — это действительно правильное имя решения BundleActivator, которое будет использоваться для запуска и остановки пакета. Он совместим с только что созданным классом.
Хотя это не заголовок OSGi, заголовок Private-Package указывает подключаемому модулю добавить пакет в пакет, но просто не сделать его доступным для других подключаемых модулей. Для создания пакета следует использовать команду mvn install.
Установка и запуск пакета
Давайте начнем Karaf, выполнив эту команду:
где «KARAF HOME» относится к папке, в которой был установлен Karaf. Мы можем использовать следующую команду для установки пакета, когда появится приглашение консоли Karaf:
Использование локального репозитория Maven — это то, как Карафу предлагается загрузить пакет.
Возвращая числовой идентификатор пакета, Караф записывает его. Этот идентификатор может отличаться в зависимости от того, сколько пакетов было ранее установлено. Теперь пакет успешно установлен, и команда для его запуска выглядит следующим образом:
В тот момент, когда вы запускаете пакет, отображается «Hello World by Jay». Теперь мы можем остановить и удалить пакет, используя:
На консоли отображается «Прощай, мир, Джей».
Заключение
Разработчики могут легко добавлять новые функции в существующее веб-приложение, сохраняя при этом его безопасность и изоляцию от других компонентов основной программы с помощью OSGi.
В этом посте мы узнали об OSGi, в том числе о том, как он работает, его преимуществах и простой программе. Несложно включить OSGi в ваше собственное приложение.
Удачного кодирования!
Оставьте комментарий