Proxy WSO2 ESB:为代理使用外部参数定义?

Proxy WSO2 ESB:为代理使用外部参数定义?,proxy,wso2,mediator,wso2esb,synapse,Proxy,Wso2,Mediator,Wso2esb,Synapse,我们正在使用多个代理来监听不同的位置。但是在开发过程中,我们没有与生产环境中相同的URI。是否可以外部定义URI(transport.vfs.File.URI)?(可能是本地入口或其他财产?) 以下行应该能够加载实际URI的外部定义: <parameter name="transport.vfs.FileURI">get-property('myURI')</parameter> get属性('myURI') 完整代理示例(不工作): ... 移动 5. C:/WS

我们正在使用多个代理来监听不同的位置。但是在开发过程中,我们没有与生产环境中相同的URI。是否可以外部定义URI(transport.vfs.File.URI)?(可能是本地入口或其他财产?)

以下行应该能够加载实际URI的外部定义:

<parameter name="transport.vfs.FileURI">get-property('myURI')</parameter>
get属性('myURI')
完整代理示例(不工作):


...
移动
5.
C:/WSO2/In/saved
获取属性('myURI')
.xml
应用程序/xml
YYMMDDHHMMS

您可以查看这篇文章,了解如何在代理序列中动态设置值的示例。

一种简单的方法是制作序列模板并在该模板中设置参数。您将此模板作为序列中的第一个操作来阅读。 您的代理定义如下所示:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="getRN100xml"
statistics="disable" trace="disable" transports="vfs">
<target>
 <inSequence>
   <call-template target="transport_vfs_parameter_settings"/>
 <send>...</send>
/<inSequence>
</target>

...
/
模板定义看起来很简单。比如:

<template xmlns="http://ws.apache.org/ns/synapse" name="transport_vfs_parameter_settings">
   <sequence>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileNamePattern" expression="test.xml"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.PollInterval" expression="15" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterProcess" expression="MOVE" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileURI" expression="//localhost/D:/Test/in" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterProcess" expression="//localhost/D:/Test/processed" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterFailure" expression="//localhost/D:/Test/failure" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ContentType" expression="text/xml" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterFailure" expression="MOVE" scope="transport"></property>
   </sequence>
</template>

这样,将代理定义传输到另一个环境意味着使用不同的模板。 当然,您只能在插入序列中设置这些参数,这些参数的值可以在插入序列开始时确定。例如,如果希望replyFilename包含reply messageID,请在outSequence中设置它

<template xmlns="http://ws.apache.org/ns/synapse" name="transport_vfs_parameter_settings">
   <sequence>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileNamePattern" expression="test.xml"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.PollInterval" expression="15" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterProcess" expression="MOVE" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.FileURI" expression="//localhost/D:/Test/in" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterProcess" expression="//localhost/D:/Test/processed" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.MoveAfterFailure" expression="//localhost/D:/Test/failure" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ContentType" expression="text/xml" scope="transport"></property>
    <property xmlns:ns="http://org.apache.synapse/xsd" name="transport.vfs.ActionAfterFailure" expression="MOVE" scope="transport"></property>
   </sequence>
</template>