Использование Apache Camel Blueprint — необходимо сохранять свойства внутри контейнера и автономно

У меня есть маршрут Camel, использующий план и Camel PropertiesComponent для настройки, я могу запустить его автономно через «mvn camel: run» или установить его в контейнер Karaf. Оба прекрасно работают и обнаруживают свойства и внедряют их в маршрут.

Чего я не могу понять, так это того, как сохранять свойства, когда они изменяются во время выполнения (например, я хочу установить маркер, когда маршрут останавливается/выключается, а затем считывать его обратно, когда маршрут начинается) .

Я читал об OSGi ConfigAdmin, но, похоже, он не поддерживает постоянные свойства. Я также читал о службе настроек OSGi (которая поддерживает сохраняемость) - но, как мне реализовать это, чтобы я мог запускать его автономно или в контейнере? который потребует ли маршрут Camel иметь ссылку на службу, таким образом, в зависимости от OSGi?

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

заранее спасибо.


person nocturnal    schedule 30.04.2014    source источник


Ответы (1)


Служба сборника ConfigurationAdmin в OSGi поддерживает сохраняемые свойства. На самом деле это происходит по умолчанию (данные попадают в кеш пакетов, поэтому вам нужно убедиться, что вы не стираете их при каждом перезапуске, что в любом случае является плохой практикой).

Если вы используете вариант от Apache Felix, у вас даже есть возможность:

  1. Перенастройте расположение, в котором сохраняются данные.
  2. Предоставьте собственное хранилище, если вы хотите использовать базу данных или что-то в этом роде.

См.: http://felix.apache.org/documentation/subprojects/apache-felix-config-admin.html

person Marcel Offermans    schedule 02.05.2014
comment
спасибо! да, теперь я это вижу - игра с тканью8 и изменение конфигурации в пользовательском интерфейсе сохраняются в файле свойств. Не знал о собственном хранилище.... отлично! - person nocturnal; 03.05.2014