我有一个要求,例如id将通过HTTP请求传递,并且根据该ID,我需要动态调用属性值。
对于一个ID,我需要以下属性 dgc.metamodel.CommunityToSync=Community1 dgc.metamodel.DomainToSync=Domain1
对于另一个ID,我需要像 dgc.metamodel.CommunityToSync=Community2 dgc.metamodel.DomainToSync=Domain2
有可能在this子中做到这一点吗?
AFAIK,将在首次运行服务器时读取属性文件。尽管有许多属性,但仅将引用一个键(唯一)。
但是,为了适应这一要求,我认为我们应该利用Java代码。此代码将负责根据请求(id)读取某些属性文件。然后读取属性并将其设置为变量以供进一步使用:
private Properties prop = new Properties();
private InputStream input = null;
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
String id = ((ParameterMap)message.getInboundProperty("http.query.params")).get("id");
input = getClass().getResourceAsStream("../property" + id + ".properties");
prop.load(input);
message.setInvocationProperty("communityToSync", prop.getProperty("dgc.metamodel.CommunityToSync"));
message.setInvocationProperty("domainToSync", prop.getProperty("dgc.metamodel.DomainToSync"));
我用一个简单的流程进行了测试
<flow name="propertyFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/prop" allowedMethods="GET" doc:name="HTTP"/>
<custom-transformer class="example.ReadProperty" doc:name="Java"/>
<logger message="CommunityToSync = #[flowVars.communityToSync], DomainToSync = #[flowVars.domainToSync]" level="INFO" doc:name="Logger"/>
</flow>
通过浏览器执行它:http:// localhost:8081 / prop?id = 1或http:// localhost:8081 / prop?id = 2以获取不同的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句