Использование файла свойств в комплекте osgi
Я создал простой пакет OSGi для своего приложения CQ5. Я хочу прочитать определенные свойства из файла свойств (обычный файл ключ-значение)
Я попытался поместить файл в папку /resources пакета и за ее пределами (в /etc/designs/), но файл всегда не загружается и выдает исключение, как показано ниже:
java.io.FileNotFoundException: \path\to\the\file\filename.properties
(The system cannot find the path specified)
Я хотел бы сохранить файл за пределами пакета, чтобы его можно было редактировать без изменения пакета
2 ответа
Ресурсы пакета могут быть возвращены с использованием метода Bundle.getEntry(). Смотрите этот ответ для более подробной информации.
Можно загружать ресурсы через загрузчик классов (например, this.getClass().getClassLoader().getResource("path.to.the.file.filename.properties");
) Имейте в виду, однако, что пакеты не могут экспортировать корневой путь / путь по умолчанию, так как его нельзя экспортировать / импортировать, поэтому ваши ресурсы должны будут находиться в экспортируемом пакете.
Для загрузки файлов из хранилища вам необходимо использовать ResourceResolver.getResource('/etc/design/path/to/the/file/filename.properties')
Рассматривали ли вы использование администратора конфигурации OSGi для управления этими свойствами?
Вы можете определить свойства компонента / службы OSGi, которые можно настроить через консоль felix (например, localhost:4502/system/console/configMgr
). Или вы можете развернуть конфигурацию как контент, если это необходимо для конкретных режимов выполнения (например, автор, публикация)
Это имеет некоторые преимущества перед внешними файлами конфигурации. Параметры конфигурации могут быть изменены независимо от развернутого пакета. Также есть преимущество в том, что изменения конфигурации могут быть внесены в работающее приложение без необходимости перезапуска.
Вам необходимо аннотировать свойства конфигурации с помощью аннотации @Property SCR.
Дополнительную информацию можно найти в следующем сообщении в блоге: http://www.wemblog.com/2012/10/how-to-work-with-configurations-in-cq.html или в этой презентации "OSGI для простых смертных".