在wso2中从payload创建一个新文件

时间:2015-04-09 07:38:24

标签: file wso2 synapse vfs

我是wso2的新手并且在一些POC上工作,我必须在某个位置创建一个文件,我已经查看了所有vfs示例,其中总是处理文件并将其写入新位置。

我想要实现的是通过序列中收到的内容将新文件写入目录。

对于我的需求流程,我已经公开了一个REST服务,它调用了这个序列。

序列配置如下。

<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse" name="FileWriteSequence">
<clone>
    <target>
        <sequence>

            <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
             <property name="transport.vfs.ReplyFileName" value="myOutputFile.txt" scope="transport" type="STRING"/>
            <send>
                <endpoint name="FileEpr">
                    <address uri="vfs:file://D:/Tools"/>
                </endpoint>
            </send>
        </sequence>
    </target>
</clone>

此序列根据REST资源的最新消息创建文件,但文件名始终是项目名称。

无论我尝试什么,它都不会改变。

我已经尝试过将下面显示的其他代理参数作为属性放在我的序列之上。而不是参数,我将它们传递给属性<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>上方 即: -

<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterProcess">file://D:/Tools</parameter>
<parameter name="transport.vfs.MoveAfterFailure">file://D:/backup</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.txt</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>

仍然没有进展。

有人可以帮我吗?

此致 拉胡

1 个答案:

答案 0 :(得分:0)

如果有人想知道我为此做了一个解决方法,我从我的其余资源调用了一个代理服务,并且它有效。

在我的资源中,我称之为端点

<send> <endpoint key="FileProxyEndPt"/> </send>

然后我创建了一个代理服务,如下所示

<proxy xmlns="http://ws.apache.org/ns/synapse" name="FileWriteProxy"
transports="http https vfs" startOnLoad="true" trace="enable">
<target>
    <inSequence>

        <clone>
            <target sequence="FileWriteSequence" />
        </clone>
    </inSequence>
    <outSequence />
    <faultSequence />
</target>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterProcess">file://D:/Tools</parameter>
<parameter   name="transport.vfs.MoveAfterFailure">file://D:/backup</parameter>
<parameter name="transport.vfs.ContentType">text/plain; charset=ISO-8859-1</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>

这种方式起作用但从未完全在资源中工作。所以必须采取更长的路线,希望有人提供可以直接实施的解决方案。