Существующие реализации службы администрирования конфигурации OSGi?

Мы планируем использовать Configuration Admin Service в качестве основного API для настройки компонентов в нашем приложении на основе OSGi. Было бы хорошо, если бы мы могли повторно использовать некоторую существующую реализацию, поэтому я пытаюсь исследовать и оценивать самые популярные. Я знаю, что есть:

Есть ли какие-либо другие реализации, которые нужно учитывать?

Также я не смог найти хорошую документацию для этих реализаций. Меня в основном интересуют детали, специфичные для реализации. Например, мне было интересно, как различные реализации сохраняют данные конфигурации (например, несколько файлов свойств? XML файл? Несколько XML файлов? База данных?,...).

Ответ 1

Три публичных реализации, о которых я знаю,

Реализация Equinox службы ConfigurationAdmin не поддерживает тонкий контроль над политикой персистентности, как это делает Феликс, и реализация Knopflerfish (я только недавно прочитал источник), похожие на Equinox.

The Felix кажется последним обновленным и самым надежным.

В настоящее время это единственные, которые я могу найти; на сервере dm мы приняли решение использовать пакет Felix, и теперь его можно получить из SpringSource Enterprise Bundle Repository, где вы можете быстро найти Apache Felix или ConfigAdmin.

Ответ 2

Felix Configuration Admin имеет стандартную реализацию, которая сохраняется в файловой системе, но они определяют интерфейс службы (org.apache.felix.cm.PersistenceManager) для альтернативных бэкэнд, которые вы могли бы подключить вместо этого.

Реализация по умолчанию делает следующее:

В классе FilePersistenceManager хранятся данные конфигурации в свойства-подобные файлы внутри данного каталога. Все файлы конфигурации расположенный в том же каталоге.

Конфигурационные файлы создаются в каталоге конфигурации путем добавления расширение ".config" в PID конфигурации. PID преобразуется в относительное имя пути, заменяя вложенные точки на косые черты. Символы несимволического имени в PID кодируются с помощью Код символа Юникода в шестнадцатеричном формате.

Ответ 3

Просто для того, чтобы ответить дальше: я лично также предпочитаю реализацию Felix. Пример того, как изменить способ хранения в фоновом режиме с помощью PersistenceManager, см. Также this, в которой используются стандартные файлы свойств Java, как резервное хранилище. Имеет некоторые ограничения, но, по крайней мере, позволяет вам сохранять конфигурацию с вашим приложением и, помимо реализации вашей OSGi framework.