Различная конфигурация / запуск "режимов" под OSGi? - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть Java-приложение, созданное с OSGi, которое я хочу запускать в разных режимах, скажем, из удаленного и локального источника данных. Я хотел бы иметь возможность создать и развернуть одну версию, чтобы я мог запустить приложение как службу в удаленном режиме, а затем остановить службу и попробовать разные вещи в локальном режиме.

Я пользуюсь декларативными услугами.

Есть ли способ сделать это?

# app -remote
Starting app in remote mode
Disabling com.example.data.local.FileStoreDao
Enabling com.example.data.remote.MySqlDao
...

И наоборот:

# app -local
Starting app in localmode
Disabling com.example.data.remote.MySqlDao
Enabling com.example.data.local.FileStoreDao
...

или что-то подобное.

Ответы [ 2 ]

3 голосов
/ 11 ноября 2011

Цитировать Ричарда Холла:

Конфигурация вашего приложения == Набор установленных пакетов.

Лучшим и наиболее приемлемым решением будет установка (немного) различного набора пакетов для каждого из ваших "режимов" времени выполнения. Так, например, большинство пакетов будет одинаковым, но вы развернете или пакета MySqlDao или FileStoreDao. Использование инструмента или средства запуска, которое позволяет легко настраивать и запускать различные комбинации пакетов, будет иметь решающее значение.

Если вы действительно хотите сделать это без изменения набора пакетов, вы можете упаковать MySqlDao и FileStoreDao в один пакет и использовать DS для включения / отключения одного или другого на основе данных конфигурации, поступающих от Config Admin.

1 голос
/ 11 ноября 2011

Не уверен, какую платформу вы используете, но в Equinox вы можете передать другой файл конфигурации с помощью командной строки swich:

http://www.eclipse.org/equinox/documents/quickstart-framework.php

У вас может быть два файла конфигурациии иметь оболочку (Java или пакетный файл?) вокруг загрузчика OSGi, чтобы выбрать правильный файл конфигурации.Я сделал что-то вроде этого, но в моем случае я получил два дистрибутива с разными плагинами, поскольку это было проще и это было все, что мне было нужно.Надеюсь, это поможет

...