Какой самый лучший способ, чтобы начать работу с OSGI?

голоса
40

Что делает модуль / сервис / бит функциональности приложения особенно хорошим кандидатом для модуля OSGi?

Я заинтересован в использовании OSGi в своих приложениях. Мы магазин Java , и мы используем Весна довольно широко, поэтому я склоняюсь к использованию Spring Dynamic Modules для платформы OSGi (тм) услуг . Я ищу хороший способ включить немного OSGi в приложение в качестве суда. Кто здесь использовал это или аналогичные технологии OSGi? Есть ли подводные камни?

@Nicolas - Спасибо, я видел, что один. Это хороший учебник, но я ищу больше для идей о том, как сделать свой первый «реальный» OSGi расслоения, в отличие от примера Hello World.

@David - Спасибо за ссылку! В идеале, с приложением с нуля, я бы разработать все это, чтобы быть динамичным. То, что я ищу прямо сейчас, хотя, чтобы ввести его в небольшой кусок существующего приложения. Предполагая, что я могу выбрать любую часть приложения, что некоторые факторы, которые следует учитывать, что бы сделать этот кусок лучше или хуже, как OSGi морской свинки?

Задан 19/08/2008 в 14:20
источник пользователем
На других языках...                            


8 ответов

голоса
37

Ну, так как вы не можете иметь одну часть OSGi и одну часть, не OSGi вам нужно сделать все ваше приложение OSGi. В своей простейшей форме вы делаете один OSGi сверток из всего приложения. Очевидно, что это не лучшая практика, но это может быть полезно, чтобы получить чувство для развертывания сверток в OSGi контейнер (равноденствия, Феликс, Knoplerfish и т.д.).

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

Некоторая помощь может прийти из таких инструментов , как JDepend , которые могут показать вам связывание пакетов Java против других пакетов / классов в вашей системе. Пакет с низкой связью эфферентной должно быть легче извлечь в OSGi расслоения , чем один с высокой связью эфферентной. Еще более архитектурное понимание можно было с профессиональными инструментами , как структура 101 .

Чисто с технической точки зрения, работает ежедневно с приложением, которое состоит из 160 OSGi расслоения и с помощью Spring DM Я могу подтвердить, что переход от «нормального» весны до весны DM в значительной степени безболезненной. Дополнительное пространство имен и тот факт, что вы можете (и должны) изолировать OSGi специфическую конфигурацию Spring в отдельных файлах делает его еще проще иметь с и без сценариев развертывания OSGi.

OSGi является глубокая и широкая компонентной модели, документация, я рекомендую:

  • OSGi R4 Спецификация : Получить PDF - файлы ядра и Compendium спецификации, они являются каноническими, авторитетный и очень читаемым. Есть ярлык для них под рукой в любое время, вы будете консультироваться с ними.
  • Читайте на OSGi наилучшей практики, существует большой набор вещей , которые вы можете сделать , но несколько меньший набор вещей , которые вы должны сделать , и есть некоторые вещи , которые вы не должны никогда делать (DynamicImport: *, например).

Некоторые ссылки:

Ответил 19/08/2008 d 20:51
источник пользователем

голоса
8

При изучении новой технологии богатый инструментарий получает вас в вещи без больших головных болей. На данный момент сообщество в ops4j.org предоставляет богатый набор инструментов под названием «PAX» , который включает в себя:

  • Пакс Runner : Запуск и переключаться между Феликсом, Equinox, Knopflerfish и консьержем легко
  • Pax Construct : Construct, организация и построить OSGi проектов с мавенно легко
  • Pax Drone : Проверьте свои OSGi расслоения с JUnit, будучи основой независимой (использует PaxRunner)

Тогда существует множество реализаций OSGi услуг Compendium:

  • Pax Logging (регистрация),
  • Pax Web (HTTP сервис),
  • Pax Web Extender (война поддержки),
  • Пакс монеты (конфигурация),
  • Pax Shell (реализация оболочки, часть следующего выпуска OSGi)
  • и многое другое.

.. и есть полезно, структура сообщества зависимы друг от друга, - но то в настоящее время реклама ;-)

Ответил 30/09/2008 d 10:45
источник пользователем

голоса
4

Этот ответ приходит почти 3 лет после того, как был задан вопрос, но ссылка я только что нашел это очень хорошо , особенно для начинающих с использованием Maven. Шаг за шагом объяснение.

Ответил 24/04/2011 d 01:14
источник пользователем

голоса
3

Попробуйте http://njbartlett.name/files/osgibook_preview_20091217.pdf

ИЛИ

http://www.manning.com/hall/

Вторая книга не я прочитал сам, но я слышал хорошие вещи о нем.

Первый был очень полезен для меня. Он берет вас через архитектуру первоначально, а затем это руки на OSGi.

Ответил 23/07/2013 d 05:50
источник пользователем

голоса
3

Попробуйте http://neilbartlett.name/blog/osgibook/ . В книге есть руки на примерах с OSGi наилучшей практикой.

Ответил 27/09/2008 d 20:24
источник пользователем

голоса
2

Есть несколько думает, чтобы иметь в виду, если вы начинаете с OSGi.

Как уже упоминалось в другом месте в этой теме, зная о загрузки классов очень важно. По моему опыту, все рано или поздно сталкивается с проблемами с ним.

Еще одна важная вещь, чтобы помнить: никогда не хранить ссылки! Посмотрите на доску шаблона, на котором понятие услуги по OSGi является строительство (ссылка в одном из других ответов).

По моему опыту, вы не должны пытаться преобразовать монолитные приложения в OSGi на основе одного. Это обычно приводит к плохо и неуправляемому беспорядку. Начать все заново.

Загрузите один из свободно доступных реализаций OSGi автономных. Я нашел Knopflerfish довольно хорошие и стабильные (я использую его во многих проектах). Он также поставляется с большим количеством исходного кода. Вы можете найти это здесь: http://www.knopflerfish.org

Еще один хороший учебник можно найти здесь. https://pro40.abac.com/deanhiller/cgi-bin/moin.cgi/OsgiTutorial

Питер Крайенс из OSGi Alliance дал хорошее интервью: http://www.infoq.com/interviews/osgi-peter-kriens . Его домашняя страница и блог (который всегда хорошо читать , можно найти здесь: http://www.aqute.biz

Ответил 05/09/2008 d 22:07
источник пользователем

голоса
2

Является ли существующее применение монолитным или многоуровневым в раздельных процессах / слоях?

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

По опыту моей команды, мы обнаружили, пытаясь сделать веб-вещи в OSGi болезненного. Другие болевые точки являются Hibernate и Jakarta Commons Logging.

Я считаю, что OSGi спецификация довольно читаемой и я рекомендую вам распечатать схему, которая показывает алгоритм для загрузки класса. Я гарантирую, вы будете иметь моменты, «почему я получаю NoClassDefFoundError?»: Блок-схема покажет вам, почему.

Ответил 19/08/2008 d 22:51
источник пользователем

голоса
1

Мне очень нравятся учебники Apache Felix . Тем не менее, я думаю , в общем Усиливая OSGi в приложении не один из тех «давайте использовать эти рамки, потому что это обман» решения. Это больше вопрос дизайна, но потом все , что OSGi дает вам с точки зрения дизайна, вы можете иметь с ванильным Java , а также.

Что касается выполнения, то вы не можете просто добавить существующие приложения и сделать его OSGi включен. Он должен быть дизайн, чтобы быть динамичным. Spring DM позволяет легко скрыть от вас, но он все еще там, и вы должны знать об этом.

Ответил 19/08/2008 d 16:32
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more