Доступ к mule-app.properties в файле пользовательских свойств, расположенном в src/main/resources на cloudhub
У меня есть приложение мул, созданный с использованием мул апикит. Файл 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-файл конфигурации mule содержит свойство-заполнитель:
<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;"
Я не могу понять, что мне здесь не хватает?
3 ответа
Mule-app.properties будет добавлен в системные свойства вместо свойств classpath. Мы не можем ссылаться на системные свойства из файлов свойств, добавленных в classpath. Нам нужно переместить эти свойства в classpath, чтобы разрешить их во время выполнения.
Один из способов переопределить это поведение, импортировав mule-app.properties, используя:
<context:property-placeholder location="mule-app.properties,dev.properties”/>
Это говорит весне, чтобы загрузить свойства в соответствующем порядке. Итак, сначала загружается mule-app.properties, а затем dev.properties.
Но не рекомендуется включать файл mule-app.properties в путь к классам. Лучший способ - удалить свойства dev из mule-app.properties и поместить его в dev.properties.
По умолчанию при развертывании в cloudhub все свойства из mule-app.properties должны отображаться на вкладке свойств. Разве вы не видели их при первом развертывании?