如何在 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 端点。
示例:
我们正在通过 属性 中介 "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
我有这个参数和一个路径文件:
<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 端点。
示例: 我们正在通过 属性 中介 "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