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;
}
Ну, так как у Вас не может быть одной части OSGi и одна часть non-OSGi, необходимо будет сделать целое приложение OSGi. В его самой простой форме Вы заставляете единственный OSGi связаться из Вашего целого приложения. Очевидно это не лучшая практика, но может быть полезно получить ощущение развертывания пакета в контейнере OSGi (Равноденствие, Felix, Knoplerfish, и т.д.).
Для взятия его к следующему уровню Вы захотите начать разделять свое приложение на компоненты, компоненты должны обычно иметь ряд обязанностей, которые могут быть изолированы от остальной части Вашего приложения через ряд зависимости от класса и интерфейсы. Идентификация их просто вручную может расположиться от довольно простого для хорошо разработанного очень связного, но слабо связанного приложения к кошмару для взаимно блокируемого исходного кода, с которым Вы не знакомы.
Некоторая справка может прибыть из инструментов как JDepend, который может показать Вам связь пакетов Java против других пакетов/классов в Вашей системе. Пакет с низкой центробежной связью должно быть легче извлечь в пакет OSGi, чем один с высокой центробежной связью. Еще больше архитектурного понимания может иметься с про инструментами как Структура 101 .
Просто на техническом уровне, работая ежедневно с приложением, которое состоит из 160 пакетов OSGi и DM Spring использования, я могу подтвердить, что переход от "нормального" Spring до DM Spring является в основном свободной болью. Дополнительное пространство имен и то, что Вы можете (и если), изолируют Вашу определенную конфигурацию Spring OSGi в отдельных файлах, делает еще легче иметь и с и без сценариев развертывания OSGi.
OSGi является глубокой и широкой компонентной моделью, документация, которую я рекомендую:
Некоторые ссылки:
Существуют, несколько думают, чтобы иметь в виду, начинаете ли Вы с 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
Попробуйте http://neilbartlett.name/blog/osgibook/ . Книга имеет руки на примеры с лучшими практиками OSGi.
При изучении новой технологии богатые инструменты получают Вас в вещи без больших головных болей. В этой точке сообщество в ops4j.org обеспечивает богатый комплект инструментальных средств под названием "МИР", который включает:
Тогда существует много реализаций сервисов резюме OSGi:
.. и существует полезное, платформа независимое сообщество, - но это - теперь реклама;-)
Ваше существующее приложение является монолитным или многоуровневым в отдельных процессах/слоях?
, Если разделено на уровни, можно преобразовать середину/уровень приложений для выполнения в контейнере OSGi.
В опыте моей команды, мы нашли попытку выполнить в веб-материале болезненный OSGi. Другие болевые точки, в спящем режиме и Джакартский Вход палаты общин.
я нахожу спецификации OSGi довольно читаемыми, и я рекомендую распечатать блок-схему, которая показывает алгоритм для загрузки класса. Я гарантирую, что у Вас будут моменты, "почему я получаю NoClassDefFoundError?": блок-схема скажет Вам почему.
Мне действительно нравится Apache учебные руководства Felix . Однако я думаю в общем усилении, OSGi в Вашем приложении не является одним из тех, "давайте использовать эту платформу, потому что это - шумиха" решение. Это - больше вопроса о дизайне, но тогда все, что OSGi дает Вам с точки зрения дизайна, Вы можете иметь с Java ванили также.
Что касается времени выполнения, Вы не можете только добавить существующее приложение и сделать его, OSGi включил. Это должен быть дизайн, чтобы быть динамичным. DM Spring облегчает скрывать это от Вас, но это все еще там, и необходимо знать о нем.