OSGi или URLClassLoader? - PullRequest
       24

OSGi или URLClassLoader?

2 голосов
/ 22 февраля 2011

У меня довольно простой сценарий:

В моем приложении есть файл jar ядра, который содержит логику моего приложения.Этот основной jar-файл должен динамически наблюдать за папкой во время выполнения, и когда jar-файл плагина будет удален, он должен загрузить его и быть готовым к его использованию.Может быть много плагинов.

Какой, по вашему мнению, самый быстрый и наиболее удобный способ реализовать это?У меня есть 2 предложения:

1) Некоторый контейнер OSGi, Apache Felix File Install (чтобы посмотреть каталог для нового пакета).Принимая во внимание, что основная банка установлена ​​как пакет в контейнер.

1.1. Проблема в том, как основной jar обнаруживает, что вновь установленный пакет является его плагином?Есть ли способ наблюдать за каждым добавленным пакетом и искать какие-то настройки с моей уникальной строкой, что-то вроде «kalazplugin»?Другими словами: как отличить мои комплекты плагинов?

2) Просто следите за каталогом на предмет изменений и, когда jar отбрасывается, загружайте его динамически с помощью URLClassLoader и реализуйте все это самостоятельно.Я мог бы потребовать какой-то файл конфигурации для каждого плагина, который бы указывал некоторые настройки, например ...

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Если вы выбираете OSGi, вы можете использовать Extender Pattern для просмотра любых пакетов (уже установленных и установленных позже) и предпринять какие-либо действия, если определите, что пакет является одним из ваших плагинов.Шаблон прост в реализации, особенно в OSGi 4.2, которая уже содержит BundleTracker, но лишь немного сложнее в более ранних версиях OSGi.

Просто Google «шаблон расширения osgi», и вы увидите множество ссылок и реализаций.

1 голос
/ 22 февраля 2011

Вы могли бы обратиться к реализации 'org.eclipse.equinox.p2.directorywatcher', которая делает именно то, что вы хотите.

...