如何从WSO2 ESB和注册表访问系统属性

如何从WSO2 ESB和注册表访问系统属性,wso2,wso2esb,Wso2,Wso2esb,我的WSO2 ESB代理服务引用了一个端点,该端点位于不同环境(DEV、TEST、PROD)中的不同URL。根据WSO2文档,我需要将端点定义存储在治理注册表中,并在每个环境中修改端点XML文件中的URL。对于拥有1个或2个代理的组织来说,这可能很好,但对于10个以上的代理来说,这将是一个巨大的开销 另一种情况是,我需要在ESB序列中读取特定于环境的属性 是否有一种方法可以在外部*.properties文件中定义一组属性,然后在ESB和注册表定义中读取它们?下面介绍如何从classmeditor

我的WSO2 ESB代理服务引用了一个端点,该端点位于不同环境(DEV、TEST、PROD)中的不同URL。根据WSO2文档,我需要将端点定义存储在治理注册表中,并在每个环境中修改端点XML文件中的URL。对于拥有1个或2个代理的组织来说,这可能很好,但对于10个以上的代理来说,这将是一个巨大的开销

另一种情况是,我需要在ESB序列中读取特定于环境的属性

是否有一种方法可以在外部*.properties文件中定义一组属性,然后在ESB和注册表定义中读取它们?

下面介绍如何从classmeditor访问注册表资源。您可以访问文章中提到的任何资源并进行修改


同样,您可以保留外部属性文件并从classmeditor读取该文件,并使用类meditaor在synapse消息上下文中设置所有属性。

您可以使用脚本中介访问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>
mc.setProperty(“file.separator”,java.lang.System.getProperty(“file.separator”);
这里,“file.separator”属性被设置为脚本中介器内消息上下文中的属性,可以在后续中介器中使用

您还可以访问ESB注册表中文件中定义的属性。例如,如果您在配置注册表(test.xml)中有一个包含以下内容的文件

<a>Helloo<b>World</b></a>
HellooWorld
可以使用属性中介访问
中的文本元素“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>


谢谢你,查莉莎!这解决了我从序列中访问外部属性的问题。然而,看起来端点的URL不能通过“get property”函数使用属性。是否有方法使此属性受属性驱动?可以通过在标头中设置“to”在运行时定义端点的URL。这可能会帮助您: