Совместное использование файла конфигурации между пакетами OSGi в Apache Servicemix 4?

Кто-нибудь смог успешно разделить конфигурацию между двумя или более пакетами в SMX4? Что я ищу, так это:

  1. Иметь один файл в $SMX_HOME/etc/myconfiguration.cfg
  2. Сделать эту конфигурацию "доступной" для внедрения в мои пакеты через администратора конфигурации OSGi с использованием Spring dm, т.е.


        
            org.postgresql.Driver
            jdbc:postgresql://localhost/db
            someuser
            somepassword
            vm://default
        

        

Затем я могу добавить такие вещи в мои компоненты:

,,,
        
            
        ,,,

Все это просто замечательно, для одной связки. То, что я ищу, это способ определить это один раз, а затем иметь возможность повторно использовать тот же файл конфигурации, что и свойства для набора пакетов. Прямо сейчас у меня есть несколько пакетов, каждый со своим собственным экземпляром конфигурации (постоянный идентификатор), и, таким образом, каждый пакет, которому требуется соединение с базой данных, Java JMS и т. Д., Должен повторять конфигурацию в каждом файле.

В настоящее время я использую Apache Servicemix 4, который использует Apache Felix в качестве контейнера OSGi.

1 ответ

Решение

Я делюсь своей конфигурацией, расположенной в

$SMX_HOME/etc/my.config.cfg

используя это объявление

<!-- get properties as bean from OSGi Configuration Admin Service -->
<osgix:cm-properties id="myConfig" persistent-id="my.config" />

<!-- activate ${...} placeholder -->
<ctx:property-placeholder properties-ref="myConfig" />

в каждом из моих связок. Выглядит очень похоже на ваше решение и работает отлично! Вы можете поделиться своей конфигурацией (не нужно указывать файл конфигурации для каждого комплекта), но вы должны объявить ссылку на эту конфигурацию в каждом файле Spring-application-context.

Я использую FUSE 4.3, который основан на apache-servicemix-4.3.0-fuse-01-00.

Другие вопросы по тегам