Я пытаюсь получить отдельный файл конфигурации/свойств для вещей, связанных с Camel, и других вещей. Использование Blueprint, но я думаю, что в этом конкретном случае это может быть и Spring.
Насколько я понимаю, в Karaf рекомендуется использовать свойство-заполнитель для данных конфигурации. который будет искаться в папке ../karaf/ect.
Хорошо, так как у нас нет фиксированного закодированного пути. У меня эта часть работает.
<blueprint ...
<cm:property-placeholder persistent-id="org.example.project" update-strategy="reload" id="prop">
...
</cm:property-placeholder>
<camelContext id="myCamelContext" xmlns="http://camel.apache.org/schema/blueprint">
<route id="watchfolder">
<from uri="file:{{ENDPOINT.IN}}"/>
<to uri="direct:test"/>
</route>
../karaf/ect/org.example.project.cfg файл:
ENDPOINT.IN=C:/Users/username/Documents/project/folderwatch
В camelContext у нас также есть возможность использовать свойствоPlaceholder. Работает, если я определяю это так
...
<propertyPlaceholder id="properties" location="file:C:/Users/username/Documents/project/camel.properties" />
...
и переместил свойство в файл C:/Users/username/Documents/project/camel.properties.
Но это фиксированный путь внутри моего файла чертежа. Я подумал, что было бы лучше сделать его настраиваемым для тестирования/работы в разных средах разработки/... Просто укажите другой файл конфигурации.
Я хотел бы сделать это, что не работает:
...
<propertyPlaceholder id="properties" location="file:{{CAMEL.PROPERTIES_FILE}}" />
...
../karaf/ect/org.example.project.cfg файл:
CAMEL.PROPERTIES_FILE=C:/Users/username/Documents/project/camel.properties
Результат:
..
Caused by: java.io.FileNotFoundException: {{CAMEL.PROPERTIES_FILE}} (The system cannot find the file specified)
..
Кажется, что значение не анализируется как свойство. Я пробовал такие варианты, как:
location="file:${CAMEL.PROPERTIES_FILE}"
location="file:{{blueprint:CAMEL.PROPERTIES_FILE}}"
location="file:{{blueprint:prop:CAMEL.PROPERTIES_FILE}}"
(Эти последние попытки были просто азартными играми. Я не понял смысла этой функциональности)
Итак, в конечном итоге, вопрос:
Как указать переменный файл свойств верблюда?
Я использую: Караф 4.0.0, Верблюд 2.15.3, Win7
${my.property}
вне контекста верблюда и{{another.property}}
внутри контекста верблюда, чтобы заменить указанные ключи значением из файла cfg. - person Ralf   schedule 31.12.2015