我的WSO2企业服务总线代理服务引用了一个端点,该端点位于不同环境中的不同URLs DEV、TEST、PROD。根据WSO2文档,我需要将端点定义存储在治理注册表中,并在每个环境中修改端点XML文件中的URL。对于具有1个或2个代理的组织来说,这可能会很好地工作,但对于10+代理来说,这会成为一项重要的开销。
另一个场景是当我需要在ESB序列中读取特定于环境的属性时。
有没有办法在外部*.properties文件中定义一组属性,然后在企业服务总线和注册表定义中读取它们?
发布于 2013-03-07 15:23:19
您可以使用脚本中介器访问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>发布于 2013-03-07 15:16:29
这是一个关于如何从类管理员1访问注册表资源的blog post。你可以访问文章中提到的任何资源并进行修改。
同样,您可以保留外部属性文件并从classmeditor中读取该文件,并使用meditaor类设置synapse消息上下文中的所有属性。
https://stackoverflow.com/questions/15210972
复制相似问题