2013-05-17 2 views
1

Я создал простой комплект OSGi для моего приложения CQ5. Я хочу прочитать некоторые свойства из файла свойств (обычный файл ключа)Использование файла свойств в пакете osgi

Я попытался поместить файл в папку/resources пакета и снаружи также (в/etc/designs /), но файл всегда не загружается и бросает исключение, как показано ниже:

java.io.FileNotFoundException: \path\to\the\file\filename.properties 
(The system cannot find the path specified) 

Я хотел бы сохранить файл вне пучка, так что он может быть отредактирован без изменения сверток

+0

Вы сохраняя файл свойств в JCR хранилище или в файловой системе? – Chetan

ответ

0

Рассматривали ли вы с помощью администратора конфигурации OSGi для управление этими свойствами?

Свойства объекта OSGi/сервисов, которые можно настроить через консоль felix (например, localhost:4502/system/console/configMgr). Или вы можете развернуть конфигурацию в качестве содержимого, если это необходимо для конкретных режимов работы (например, автор, публикация)

Это имеет некоторые преимущества перед внешними файлами конфигурации. Параметры конфигурации могут быть изменены независимо от развернутого пакета. Существует также то преимущество, что изменения конфигурации могут быть внесены в запущенное приложение без необходимости перезапуска.

Вам необходимо будет аннотировать ваши свойства конфигурации с помощью @Property SCR annotation.

Существует дополнительная информация о следующем блоге: http://www.wemblog.com/2012/10/how-to-work-with-configurations-in-cq.html или в этом "OSGI for mere mortals" презентации

+0

Спасибо за понимание конфигурации OSGI. Но мой проект в настоящее время нуждается специально для использования файла .properties. Но мой код связки никогда не находит файл, где бы я ни хранил его. –

+0

как вы загружаете файл свойств? – diffa

+0

Я попытался добавить его в пакет (в каталоге/resources/resources) и попытался сохранить его в файле/etc/designs/myFolder .. но всегда получал тот же результат, то есть FileNotFoundException –

1

Bundle ресурсы могут быть возвращены с помощью метода Bundle.getEntry(). См. this answer для получения более подробной информации.

Можно загружать ресурсы через загрузчик классов (например, this.getClass().getClassLoader().getResource("path.to.the.file.filename.properties");). Имейте в виду, что эти пакеты не могут экспортировать путь к корню/умолчанию, поскольку это невозможно экспортировать/импортировать, поэтому ваши ресурсы должны будут жить в экспортированном пакете.

Для загрузки файлов из хранилища, вы должны использовать ResourceResolver.getResource('/etc/design/path/to/the/file/filename.properties')

Смежные вопросы