如何在WSO2 ESB中动态更改vfs FileURI?

时间:2016-04-14 18:18:47

标签: wso2 wso2esb vfs

我有一个带路径文件的参数:

<parameter name="transport.vfs.FileURI">file:///Users/Desktop/test/in</parameter>

我需要动态更改FileURI值,例如,使用之前设置的属性值。这样的事情:

<parameter name="transport.vfs.FileURI">get-property('path')</parameter>

或那:

<parameter name="transport.vfs.FileURI" expression="get-property('path')"/>

如何更改属性值的FileURI值?

4 个答案:

答案 0 :(得分:1)

在wso2esb4.8.1中动态更改我们的vfs端点。

Dynamic Endpoint URL ref

实施例: 我们通过Property mediator“fname”获取文件名。

<property name="fname" expression="get-property('transport','FILE_NAME')"/>

我们正在通过财产调解员动态获取“路径”。

<property name="path" value="file:///D:/FileFolder/In/"/> 

我们在“transport.vfs.ReplyFileName”属性中添加路径和文件名。

<property name="transport.vfs.ReplyFileName" expression="concat(get-property('path'),get-property('fname'))" scope="transport"/>

<send>
        <endpoint>
            <address uri="vfs:file:///D:/Folder/In"/>
        </endpoint>
</send>

“transport.vfs.ReplyFileName”将替换send mediator vfs端点。

我们可以实现动态端点。 我们可以通过Property mediator移动我们的文件。我们可以轻松改变财产。

答案 1 :(得分:0)

据我所知,使用ESB 4.8.1,您无法在中介内动态更改此参数(此值为静态)。

也许您试图在运行时动态更改此代理定义:

  • 使用管理服务(ProxyServiceAdmin)
  • 或在java或javascript(使用mc.getConfiguration(),您可以访问synapse配置)

另一种解决方案是使用计划任务:

答案 2 :(得分:0)

我相信最好的方法是将这些值存储在数据库中并从dataService加载,然后可以将其用作属性。

答案 3 :(得分:0)

我们可以使用标头中介器和默认端点的组合来实现。 PATH是常规路径,例如。 (D:/测试/图像) FILENAME是实际文件(testImage.png)

**<property expression="concat('vfs:file:///',$ctx:PATH,'/',$ctx:FILENAME)" name="localpath" scope="default" type="STRING"/>
 <header expression="get-property('localpath')" name="To" scope="default"/>
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
 <call/>**

默认端点将从“ To”传输头中查找端点url。因此,可以动态构造端点并将其设置为“ To”头。

仅供参考, ClickHere