Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WSO2 VFS FTP代理不读取参数_Ftp_Wso2_Esb_Vfs - Fatal编程技术网

WSO2 VFS FTP代理不读取参数

WSO2 VFS FTP代理不读取参数,ftp,wso2,esb,vfs,Ftp,Wso2,Esb,Vfs,我编写了一个代理服务,并部署在WSO2 ESB 5上,通过http接收一些文件内容,并使用vfs传输将这些内容传输到ftp服务器。当我正确指定连接参数时,服务会按预期工作,但当我在连接字符串上指定错误以模拟服务器停机时,我无法使用[1]中指定的参数控制VFS传输的行为。我要寻找的是缩短VFS中发生的错误和Axis捕获的故障异常之间的延迟 正如您将在下面看到的,我指定了0次重试和0次重试之间的等待时间,但vfstranportsender类似乎无法以某种方式读取这些值,因为它始终执行相同的重试次数

我编写了一个代理服务,并部署在WSO2 ESB 5上,通过http接收一些文件内容,并使用vfs传输将这些内容传输到ftp服务器。当我正确指定连接参数时,服务会按预期工作,但当我在连接字符串上指定错误以模拟服务器停机时,我无法使用[1]中指定的参数控制VFS传输的行为。我要寻找的是缩短VFS中发生的错误和Axis捕获的故障异常之间的延迟

正如您将在下面看到的,我指定了0次重试和0次重试之间的等待时间,但vfstranportsender类似乎无法以某种方式读取这些值,因为它始终执行相同的重试次数,并且每次执行时都等待相同的秒数,我还更改了值并放置了其他值,但结果总是一样的,在Axis能够接收到一些与错误相关的信息之前,服务器总是再重试3次,彼此之间有30秒的延迟

以下是我的代理服务,它可以正常工作:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="ftpProxy"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="https,http">
   <target>
  <inSequence>
     <log level="full"/>
     <property expression="json-eval($.key)" name="file_name"/>
     <property name="OUT_ONLY" value="true"/>
     <property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
     <property name="HTTP_SC" scope="axis2" value="200"/>
     <property expression="fn:concat(get-property('file_name'), '.json')"
               name="transport.vfs.ReplyFileName"
               scope="transport"/>
     <property name="OUT_ONLY" value="true"/>
  </inSequence>
  <endpoint name="ftp_endpoint">
     <address uri="vfs:ftp://jairof_ftp:passftp@localhost:21">
        <timeout>
           <duration>2000</duration>
           <responseAction>fault</responseAction>
        </timeout>
        <suspendOnFailure>
           <errorCodes>-1</errorCodes>
           <progressionFactor>1.0</progressionFactor>
        </suspendOnFailure>
        <markForSuspension>
           <errorCodes>-1</errorCodes>
        </markForSuspension>
     </address>
  </endpoint>
   </target>
   <parameter name="transport.vfs.ReconnectTimeout">0</parameter>
   <parameter name="transport.vfs.MaxRetryCount">0</parameter>
   <description/>
</proxy>


尝试向端点URL追加参数,如下所示

<address uri="vfs:ftp://ja8irof_ftp:passftp@localhost:21?transport.vfs.MaxRetryCount=0&amp;transport.vfs.ReconnectTimeout=0"/>


这解决了问题,非常感谢。你知道为什么另一种方法不起作用吗?@JairoFERNANDEZ这是因为当你设置参数时,它是为vfs传输侦听器设置的,而不是为vfs传输发送器设置的。对于transport sender,您需要按照此回答设置参数谢谢您的评论Riyafa,有足够的信息总是好的。现在我更好地理解了这个问题以及如何使用参数。
<address uri="vfs:ftp://ja8irof_ftp:passftp@localhost:21?transport.vfs.MaxRetryCount=0&amp;transport.vfs.ReconnectTimeout=0"/>