Доступ к mule-app.properties в файле настраиваемых свойств, расположенном в src / main / resources на cloudhub

У меня есть приложение mule, созданное с использованием mule apikit. Файл mule-app.properties содержит следующее свойство:

orig.db.url=jdbc:db2://mmrs001.nmd.net:1004/dudu:user=abc43;password=xxxx;

Файл настраиваемых свойств src / main / resources / dev.properties содержит следующее свойство:

db.url=${orig.db.url}

И XML-файл конфигурации мула содержит ниже заполнитель свойства:

<context:property-placeholder location="dev.properties"/>

Теперь, когда я развертываю его локально, все работает нормально, и я могу запустить поток. Но в то же время, когда я развертываю на Cloudhub, это дает мне исключение ниже:

Invalid bean definition with name 'get:/total_amount:total_amount-db-config' defined in null: Could not resolve placeholder 'orig.db.url' in string value "jdbc:db2://mmrs001.nmd.net:1004/dudu:user=abc43;password=xxxx;"

Я не могу понять, что мне здесь не хватает?


person Sumved Shami    schedule 07.12.2015    source источник


Ответы (3)


Как вы выполняли развертывание в CloudHub? Если вы использовали инструмент развертывания из Anypoint Studio, у вас есть возможность установить свойства перед развертыванием. Изображение из Anypoint Studio

person granthbr    schedule 08.12.2015

Mule-app.properties будет добавлен к свойствам системы вместо свойств пути к классам. Мы не можем ссылаться на системные свойства из файлов свойств, добавленных в путь к классам. Нам нужно переместить эти свойства в classpath, чтобы разрешить их во время выполнения.

Один из способов изменить это поведение, импортировав mule-app.properties, используя:

<context:property-placeholder location="mule-app.properties,dev.properties”/>

Он сообщает Spring загружать свойства в соответствующем порядке. Итак, сначала загружается mule-app.properties, а затем dev.properties.

Но не рекомендуется включать файл mule-app.properties в путь к классам. Лучший способ - удалить свойства dev из mule-app.properties и поместить их в dev.properties.

person Sumved Shami    schedule 08.12.2015

По умолчанию при развертывании в cloudhub все свойства из mule-app.properties должны отображаться на вкладке свойств. Вы их не видели при первом развертывании?

person Matias Suarez    schedule 08.12.2015
comment
Да! Ты прав. Свойства из mule-app.properties действительно отображаются на вкладке свойств. Но я хочу здесь сослаться на свойство из mule-app.properties в src / main / resources / custom.properties. Это возможно? - person Sumved Shami; 08.12.2015
comment
@SumvedShami, вы читали другой ответ? Если вы применили свойства через настройки CloudHub, вы добьетесь того, что вам нужно. - person granthbr; 09.12.2015
comment
@granthbr Я определенно прочитал другой ответ. Но у меня вопрос, как получить доступ к свойствам из mule-app.properties в файле свойств, расположенном в пути к классам. - person Sumved Shami; 09.12.2015