2015-11-26 9 views
0

Im пытается получить отдельный файл конфигурации/свойств для материалов, связанных с Camel, и других вещей. Использование Blueprint, но я предполагаю, что это может быть весна в этом конкретном случаеCamel и задание файла свойств без hardcoding

Как я понимаю, в 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 мы ALSE иметь возможность использовать propertyPlaceholder. Работает, если я определяю его как этот

... 
      <propertyPlaceholder id="properties" location="file:C:/Users/username/Documents/project/camel.properties" /> 
... 

и переместили свойство в файл C: /Users/username/Documents/project/camel.properties.

Но это фиксированный путь внутри моего файла чертежа. Я думал, что было бы лучше настроить его для тестирования/работы в разных средах dev/... Просто укажите другой файл конфигурации.

Я хотел бы сделать это, не работает:

... 
     <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}}" 

(. Эти последние попытки были просто играть в азартные игры, я не понял смысл за этой функциональности)

Так в конечном счете, вопрос:

Как определить переменный файл свойств верблюда?

Я использую: Karaf 4.0.0, 2.15.3 Camel, Win7

+0

Зачем вводить второй файл конфигурации, если y ou уже имеет файл cfg проекта? Просто поместите все свои свойства в файл cfg и используйте '$ {my.property}' вне контекста верблюда и '{{another.property}}' внутри контекста Camel, чтобы получить указанные ключи заменены значением из файла cfg , – Ralf

ответ

0

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

<propertyPlaceholder id="properties" location="${env:PROP_FILE_OS_ENV_LOC}"/> 

где PROP_FILE_OS_ENV_LOC является средой OS переменной

<propertyPlaceholder id="properties" location="${PROP_FILE_JVM_LOC}"/> 

где PROP_FILE_JVM_LOC - свойство JVM

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

  • Нет связанных вопросов^_^