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

How can I change vfs FileURI dynamically in WSO2 ESB?

我有这个参数和一个路径文件:

<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 值?

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

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

  • 使用管理服务 (ProxyServiceAdmin)
  • 或在java或java脚本中(使用mc.getConfiguration(),您可以访问突触配置)

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

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

Dynamic Endpoint URL ref

示例: 我们正在通过 属性 中介 "fname".

获取文件名
<property name="fname" expression="get-property('transport','FILE_NAME')"/>

我们正在通过 属性 调解器动态获取 "Path"。

<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" 将替换发送中介 vfs 端点。

我们可以实现动态端点。 我们可以通过 属性 中介移动我们的文件。我们可以轻松更改属性。

我认为最好的方法是将这些值存储在数据库中并从数据服务加载,之后您可以将它们作为属性放置和使用。

我们可以通过使用 header 中介和默认端点 的组合来实现这一点。 PATH 是实际路径,例如。 (D:/Test/Image) 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”传输header 中查找端点url。因此,端点可以动态构造并设置为“To” header.

仅供参考, ClickHere