Использование OSGi для реализации модульного API - PullRequest
2 голосов
/ 15 ноября 2010

Мы планируем разработать клиентский Java API для извлечения данных фондового рынка. Ожидается, что API будет разрабатываться как модульная система, чтобы различные компоненты могли быть подключены к базовому API для облегчения расширенных функций.

Компоненты должны быть подключены к базовому API динамически, и должен быть способ контролировать жизненный цикл компонента с помощью общего API.

До сих пор я выбирал использование контейнера OSGI для API и разработку подключаемых компонентов в виде пакетов OSGi. Поскольку это API, OSGi будет лучшим решением для этого контекста?

Кто-нибудь может посоветовать мне это?

Ответы [ 3 ]

4 голосов
/ 15 ноября 2010

Проработав с OSGi F / W около года, я был полностью впечатлен тем, что OSGi может предложить - сильной и принудительной модульностью, нулевым временем простоя, надежной подключаемостью модулей и производительностью.

Однако, сказав это, позвольте мне заверить вас, что все добро не сразу становится очевидным.Обязательно возьмите какой-нибудь хороший технический документ [книга в действии - это мелкий текст, как и спецификация r4 ].Недостаток понимания может поставить вас в компанию LinkageErrors и BundleExceptions, которые обычно очень загадочны и могут служить хорошим источником головной боли.

Помимо понимания ч / б, вам следует также обратить внимание на «передовой опыт», связанный со сплоченностью и слабой связью, программированием на основе интерфейсов.вам также следует взглянуть на инструмент BND , который является отличным способом упаковки пакетов OSGi.

вы можете часто сталкиваться с аргументами, утверждающими, что OSGi является "перебором", и я выигралне отрицаю.однако, если вы действительно хотите использовать уникальные функции, доступные через OSGi, проще запачкать руки в этом идиотском, чем реализовать сложный обходной путь с нуля.

И последнее: вы можетепродолжайте сталкиваться с Spring время от времени при работе с OSGi, но это на самом деле не требуется, и, если вы не знакомы с Spring, на самом деле, возможно, не стоит в этом разбираться.

2 голосов
/ 21 ноября 2010

Мы работаем над большим проектом, используя osgi и Apache Felix.С бонусной стороны: мы только редко сталкивались с проблемой из-за самого Osgi, никого в прошлом году в любом случае.Osgi действительно работает, как и было обещано.

С другой стороны, многие распространенные библиотеки и фреймворки не работают должным образом (например, Hibernate, который не возвращается правильно в цепочке ClassLoader).Попытка интеграции с БД и веб-контейнером, отличным от Jetty, может быть проблематичной.

На мой взгляд, самой большой проблемой является то, что что-то вроде Osgi должно быть частью Java Standard Api и должно поддерживаться всей цепочкой инструментов.Очевидно, Oracle хочет в будущем реализовать проект Java Jigsaw, который является гораздо менее амбициозным стандартом модульности.

В любом случае, если вам нужны динамические плагины, я думаю, что нет ничего лучше, чем Osgi, но будьте готовынаписать много кода для его поддержки.

1 голос
/ 15 ноября 2010

OSGi обеспечивает подключаемость и довольно зрелый. Развертывание вашей собственной эквивалентной структуры было бы большой работой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...