使用Wso2Esb卡住创建文件

时间:2015-11-25 09:00:38

标签: wso2 axis2 wso2esb

您正在使用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,因此它会卡住。

任何建议..

1 个答案:

答案 0 :(得分:1)

你在OUT_ONLY,(你已经设置<property name="OUT_ONLY" value="true"/>)并且在创建文件时你必须在OUT_ONLY中,因为文件系统没有响应

因此,永远不会执行“接收”序列:在发送中介后添加内容