您正在使用Wso2Esb 4.7.0
我创建了一个在本地系统中创建文件的代理,下面是代理及其序列,我在axis2文件中取消注释了所需的vfs传输。
代理服务:
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="FileProxy"
transports="https http"
startOnLoad="true"
trace="enable">
<description/>
<target>
<inSequence>
<property name="messageType" value="application/json" scope="axis2"/>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
<property name="Body"
expression="$body"
scope="default"
type="STRING"/>
<property name="transport.vfs.ReplyFileName"
expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.txt')"
scope="transport"/>
<payloadFactory>
<format>
<Reading>$1</Reading>
</format>
<args>
<arg evaluator="xml" expression="get-property('Body')"/>
</args>
</payloadFactory>
<property name="OUT_ONLY" value="true"/>
<property name="messageType"
value="application/json"
scope="axis2"
type="STRING"/>
<send receive="fileWriteSequence">
<endpoint>
<address uri="vfs:file:///home/youtility/Documents/Capp_services/wso2esb-4.7.0/Files"/>
</endpoint>
</send>
</inSequence>
<outSequence onError="fault">
<send/>
</outSequence>
</target>
</proxy>
序列:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="fileWriteSequence">
<property name="messageType" value="application/json" scope="axis2"/>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
<log level="custom">
<property name="sequence" value="fileWriteSequence"/>
</log>
<payloadFactory media-type="xml">
<format>
<ResponseJSON xmlns="">
<Body>
<Datalist>file Created</Datalist>
</Body>
<Status>200</Status>
</ResponseJSON>
</format>
<args/>
</payloadFactory>
<send/>
</sequence>
卷曲:
curl -v -H "Accept: application/json" -H "Content-Type:application/json" -d '{"test1":"1","test2":"-1","test3":"-1"}' http://localhost:8282/services/FileProxy
当我尝试使用curl文件调用此服务时,会在所提及的文件位置中创建具有给定内容但未获得任何响应,如序列中提到的文件已创建,实际上是创建文件时,进程不会进入fileWriteSequence,因此它会卡住。
任何建议..
答案 0 :(得分:1)
你在OUT_ONLY,(你已经设置<property name="OUT_ONLY" value="true"/>
)并且在创建文件时你必须在OUT_ONLY中,因为文件系统没有响应
因此,永远不会执行“接收”序列:在发送中介后添加内容