我的WSO2 ESB代理服务引用位于不同环境中的不同URL的端点 - DEV,TEST,PROD。根据WSO2文档,我需要将端点定义存储在Governance Registry中,并修改每个环境中端点XML文件中的URL。对于拥有1或2个代理的组织而言,这可能会正常工作,但对于10个以上的代理来说,这会成为一个重要的开销。
另一种情况是我需要在ESB序列中读取某些特定于环境的属性。
有没有办法在外部* .properties文件中定义一堆属性,然后在ESB和Registry定义中读取它们?
答案 0 :(得分:7)
您可以使用脚本介体访问ESB序列/代理服务中的系统属性,如下所示;
<script language="js">mc.setProperty("file.separator",java.lang.System.getProperty("file.separator"));</script>
<log level="custom">
<property name="file.separator" expression="get-property('file.separator')"/>
</log>
此处“file.separator”属性设置为脚本介体内的消息上下文中的属性,并且可以在后续调解器中使用。
您还可以访问ESB注册表中文件中定义的属性。例如,如果配置注册表(test.xml)中的文件包含以下内容,则
<a>Helloo<b>World</b></a>
可以使用属性介体访问<b>
中的文本元素“World”,如下所示,
<property name="test" expression="get-property('registry','conf:/test.xml')" scope="default" type="OM"/>
<log level="custom">
<property name="test.b" expression="$ctx:test//b"/>
</log>
答案 1 :(得分:0)