【发布时间】:2017-07-11 05:16:34
【问题描述】:
我希望使用正确的属性方式在多个环境中部署......但该示例不起作用: 网址:https://docs.mulesoft.com/mule-user-guide/v/3.8/deploying-to-multiple-environments
我创建了一个配置了 http 的项目,如示例中所示:
<http:listener-config name="HttpListenerConfiguration"
doc:name="HTTP Listener Configuration"
host="${mule.env.host}"
port="${mule.env.port}"
basePath="${mule.env.basePath}" />
他们说的地方
这个例子使用了 Spring 的属性占位符解析机制。变量位清晰可见:基本路径、主机和端口可能因部署此连接器的每个环境而异。部署应用程序时,mule.env 可以动态替换为您要部署到的特定环境,例如作为 qa 或 prod。
我在 java/main/resources 中创建了一个名为 config.properties 的文件:
dev.basePath=test/products
dev.host=localhost
dev.port=8082
prod.basePath=products
prod.host=www.acme.com
prod.port=8081
并设置占位符:
<context:property-placeholder location="config.properties"/>
我的 mule-app.properties:
mule.env=dev
当我在 AS 中运行它时:
[Could not resolve placeholder 'mule.env.host' in string value "<http:listener-config name="ejemplop....]
如果我从以下位置更改值:
${mule.env.host} to ${${mule.env}.host}
并且主机属性有效,但如果我对端口做同样的事情
(${${mule.env}.port}
给我一个错误
[..${${mule.env}.port}' is not a valid value of union type 'substitutableInt'....]
但如果我添加到我的属性文件中
env.port=${${mule.env}.port}
并将连接器更改为:
<http:listener-config name="HttpListenerConfiguration"
doc:name="HTTP Listener Configuration"
host="${${mule.env}.host}"
port="${env.port}"
basePath="${mule.env.basePath}" />
它的作品。 有什么花哨或正确的方法吗?
【问题讨论】:
标签: java spring deployment mule placeholder