Что лучший способ состоит в том, чтобы начать с OSGI? [закрытый]

function compareArrays(arrayA, arrayB) {
    if (arrayA.length != arrayB.length) return true;
    for (i = 0; i < arrayA.length; i++)
        if (arrayB.indexOf(arrayA[i]) == -1) {
            return true;
        }
    }
    for (i = 0; i < arrayB.length; i++) {
        if (arrayA.indexOf(arrayB[i]) == -1) {
            return true;
        }
    }
    return false;
}
42
задан Nicholas Trandem 20 August 2008 в 04:00
поделиться

6 ответов

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

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

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

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

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

  • Спецификация OSGi R4: Получите PDFs спецификации Ядра и Резюме, они являются каноническими, авторитетными и очень читаемыми. Имейте ярлык на них удобный в любом случае, Вы будете консультироваться с ними.
  • Read на лучших практиках OSGi, существует большой набор вещей, которые Вы можете делать, но несколько меньший набор вещей, Вы должны , делает и существуют некоторые вещи, которые Вы должны никогда не делать (DynamicImport: *, например).

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

39
ответ дан Ashutosh Jindal 23 September 2019 в 14:01
поделиться

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

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

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

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

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

Другое хорошее учебное руководство может быть найдено здесь. https://Peter Kriens pro40.abac.com/deanhiller/cgi-bin/moin.cgi/OsgiTutorial

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

3
ответ дан Andreas Kraft 23 September 2019 в 14:01
поделиться

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

4
ответ дан Kamlesh 23 September 2019 в 14:01
поделиться

При изучении новой технологии богатые инструменты получают Вас в вещи без больших головных болей. В этой точке сообщество в ops4j.org обеспечивает богатый комплект инструментальных средств под названием "МИР", который включает:

  • Бегун Мира : Выполненный и переключатель между Felix, Равноденствием, Knopflerfish и Concierge легко
  • Конструкция Мира : Создайте, Организуйте & Разработайте проекты OSGi со знатоком легко
  • Беспилотник Мира : Протестируйте свои пакеты OSGi с Junit будучи независимой платформой (использует PaxRunner)

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

  • Мир, Регистрирующийся (вход),
  • сеть Мира (http сервис),
  • веб-Расширитель Мира (военная поддержка),
  • Монета Мира (конфигурация),
  • мир Shell (окружают реализацию, часть следующего выпуска osgi)
  • и многое другое.

.. и существует полезное, платформа независимое сообщество, - но это - теперь реклама;-)

9
ответ дан Toni Menzel 23 September 2019 в 14:01
поделиться

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

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

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

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

4
ответ дан Steven Dick 23 September 2019 в 14:01
поделиться

Мне действительно нравится Apache учебные руководства Felix . Однако я думаю в общем усилении, OSGi в Вашем приложении не является одним из тех, "давайте использовать эту платформу, потому что это - шумиха" решение. Это - больше вопроса о дизайне, но тогда все, что OSGi дает Вам с точки зрения дизайна, Вы можете иметь с Java ванили также.

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

1
ответ дан dlinsin 23 September 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: