我从前端获取数据或字符串我在一个属性中设置数据或字符串 每次他们发送数据我需要在文本文件中发送的属性数据我需要将数据保存在同一个文件中而不覆盖我怎样才能完成使用VFS传输我在配置文件中使用vfs的未注释发送者部分,即使它不是在配置下正常工作
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="FileWrite"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="error" expression="//error/text()" scope="default"/>
<log level="full"/>
</inSequence>
<outSequence>
<log>
<property name="error" expression="get-property('error')" scope="default"/>
<property name="OUT_ONLY" value="true"/>
</log>
<payloadFactory>
<format>
<error>$1</error>
</format>
<args>
<arg expression="get-property('error')"/>
</args>
</payloadFactory>
<log level="full"/>
<send>
<endpoint>
<address uri="vfs:file:///home/youtility2/Desktop/Errorlog.text"/>
</endpoint>
</send>
<log level="full"/>
</outSequence>
</target>
<parameter name="transport.vfs.Append">true</parameter>
</proxy>
我在桌面上创建了文本文件,但数据没有写入文本文件中,也没有给出任何异常,也会引用一些内容
答案 0 :(得分:2)
您必须为代理服务启用VFS传输。在代理创建/编辑向导中,您可以选择必要的传输。在axis2.xml中启用VFS传输后,VFS将作为服务的可用传输。因此,如果要在代理服务中使用它,也应该启用该特定服务。
因此,在您的代理服务器元素中,transport属性将为transports =“https http vfs”
要附加到同一文件,请使用doc [2]中描述的文件URI定义transport.vfs.Append参数
[2] http://docs.wso2.org/wiki/display/ESB450/VFS+Transport
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="FileWrite"
transports="https http vfs"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="OUT_ONLY" value="true"/>
<property name="error" expression="//error/text()" scope="default"/>
<log level="full"/>
</inSequence>
<outSequence>
<log>
<property name="error" expression="get-property('error')" scope="default"/>
<property name="OUT_ONLY" value="true"/>
</log>
<payloadFactory>
<format>
<error>$1</error>
</format>
<args>
<arg expression="get-property('error')"/>
</args>
</payloadFactory>
<log level="full"/>
<send>
<endpoint>
<address uri="vfs:file:///home/youtility2/Desktop/Errorlog.text?transport.vfs.Append=true"/>
</endpoint>
</send>
<log level="full"/>
</outSequence>
</target>
<parameter name="transport.vfs.Append">true</parameter>
</proxy>
答案 1 :(得分:1)
下面的代码显示了将有效负载插入文件的功能。 您不需要使用vfs作为传输。
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="WriteIntoFile"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<property name="transport.vfs.ReplyFileName"
expression="fileName.xml')"
scope="transport"/>
<send>
<endpoint>
<address uri="vfs:ftp://admin:admin@localhost:21/srcFolder?vfs.passive=true"/>
</endpoint>
</send>
</inSequence>
</target>
</proxy>
答案 2 :(得分:0)
它应该是 在网址
vfs:file:///home/user/test/out? transport.vfs.Append=true "
作为参数
<parameter name="transport.vfs.ReplyFileURI">file:///home/user/test/out? transport.vfs.Append=true </parameter>
对于vfs服务级别参数,您可以参考[1]。
我只是粗略地编辑你的代理尝试。
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="FileWrite"
transports="vfs" statistics="disable" trace="disable" startOnLoad="true">
<description/>
<target>
<inSequence>
<property name="error" expression="//error/text()" scope="default"/>
<log level="full"/>
</inSequence>
<outSequence>
<log>
<property name="error" expression="get-property('error')" scope="default"/>
<property name="OUT_ONLY" value="true"/>
</log>
<payloadFactory>
<format>
<error>$1</error>
</format>
<args>
<arg expression="get-property('error')"/>
</args>
</payloadFactory>
<log level="full"/>
<send>
<endpoint>
<address uri="vfs:file:///home/youtility2/Desktop/Errorlog? transport.vfs.Append=true"/>
</endpoint>
</send>
<log level="full"/>
</outSequence>
</target>
<parameter name="transport.PollInterval">10</parameter>
<parameter name="transport.vfs.FileURI">file:///home/youtility2/Desktop/Errorlog.text</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.xml</parameter>
<parameter name="transport.vfs.ContentType">text/xml</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
</proxy>
答案 3 :(得分:0)
你也可以在wso2esb中尝试类中介。在java类中使用FileWriter可以写入这样的文本文件:
FileWriter(File file, boolean append)
或
FileWriter(String fileName, boolean append)