Прокси-сервер FTP WSO2 VFS не считывает параметры

Я написал прокси-сервис и развернул его на WSO2 ESB 5 для получения некоторого содержимого файла через http и использования транспорта vfs для передачи этого содержимого на ftp-сервер. Служба работает, как ожидалось, когда я правильно указываю параметры подключения, но когда я указываю что-то не так в строке подключения для имитации неработающего сервера, я не могу управлять поведением транспорта VFS, используя параметры, указанные в [1]. Я ищу, чтобы сократить задержку между ошибкой, произошедшей в VFS, и исключением ошибки, обнаруженной Axis;

Как вы увидите ниже, я указываю 0 повторных попыток и 0 время ожидания между повторными попытками, но кажется, что класс VFSTransportSender не может каким-либо образом прочитать эти значения, потому что он все время выполняет одинаковое количество повторных попыток и ждет такое же количество секунд. каждый раз, когда он выполняется, я также менял значения и помещал другие, но результат всегда один и тот же, сервер всегда повторяет попытки еще 3 раза с 30-секундной задержкой между собой, помимо исходного запроса, прежде чем Axis сможет получить некоторую информацию, относящуюся к к ошибке.

Вот мой прокси-сервис, который работает без проблем:

<?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>

И когда я хочу смоделировать, что сервер недоступен, я просто изменяю URI адреса и помещаю его там, где пользователь неверен:

<address uri="vfs:ftp://ja8irof_ftp:passftp@localhost:21">

Я также попытался установить параметры transport.vfs как свойства перед вызовом конечной точки, но результат точно такой же

Здесь вы можете просмотреть часть файла журнала, где я вырезал некоторые части трассировки стека, чтобы сообщение было простым:

[2016-10-29 12:23:01,134] ERROR - VFSTransportSender cannot resolve replyFile
org.apache.commons.vfs2.FileSystemException: Could not connect to FTP server on "localhost".
... (the rest of stack trace)
...
Caused by: org.apache.commons.vfs2.FileSystemException: Could not login to FTP server on "localhost" as user "ja8irof_ftp".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:210)
... 29 more

[2016-10-29 12:23:34,223] ERROR - VFSTransportSender cannot resolve replyFile
org.apache.commons.vfs2.FileSystemException: Could not connect to FTP server on "localhost".
... (the rest of stack trace)
...
Caused by: org.apache.commons.vfs2.FileSystemException: Could not login to FTP server on "localhost" as user "ja8irof_ftp".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:210)
... 29 more

[2016-10-29 12:24:07,842] ERROR - VFSTransportSender cannot resolve replyFile
org.apache.commons.vfs2.FileSystemException: Could not connect to FTP server on "localhost".
... (the rest of stack trace)
...
Caused by: org.apache.commons.vfs2.FileSystemException: Could not login to FTP server on "localhost" as user "ja8irof_ftp".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:210)
... 29 more

[2016-10-29 12:24:07,844] ERROR - VFSTransportSender cannot resolve replyFile repeatedly: Could not connect to FTP server on "localhost".
org.apache.commons.vfs2.FileSystemException: Could not connect to FTP server on "localhost".        
... (the rest of stack trace)
...
Caused by: org.apache.commons.vfs2.FileSystemException: Could not login to FTP server on "localhost" as user "ja8irof_ftp".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:210)
... 29 more

[2016-10-29 12:24:07,846] ERROR - Axis2Sender Unexpected error during sending message out
org.apache.axis2.AxisFault: cannot resolve replyFile repeatedly: Could not connect to FTP server on "localhost".
... (the rest of stack trace)
...
Caused by: org.apache.commons.vfs2.FileSystemException: Could not connect to FTP server on "localhost".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:275)
at org.apache.commons.vfs2.provider.ftp.FTPClientWrapper.createClient(FTPClientWrapper.java:100)
at org.apache.commons.vfs2.provider.ftp.FTPClientWrapper.getFtpClient(FTPClientWrapper.java:134)
at org.apache.commons.vfs2.provider.ftp.FTPClientWrapper.<init>(FTPClientWrapper.java:59)
at org.apache.commons.vfs2.provider.ftp.FtpFileProvider.doCreateFileSystem(FtpFileProvider.java:128)
at org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider.getFileSystem(AbstractOriginatingFileProvider.java:155)
at org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:119)
at org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:88)
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:738)
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:626)
at org.apache.synapse.transport.vfs.VFSTransportSender.writeFile(VFSTransportSender.java:233)
... 19 more
Caused by: org.apache.commons.vfs2.FileSystemException: Could not login to FTP server on "localhost" as user "ja8irof_ftp".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:210)
... 29 more     

Пожалуйста, присылайте мне любые комментарии, предложения ... Я был бы очень признателен, заранее спасибо за ваше время.

[1] https://docs.wso2.com/display/ESB500/VFS+Transport < / а>


person Jairo FERNANDEZ    schedule 29.10.2016    source источник


Ответы (1)


Попробуйте добавить параметры к URL-адресу конечной точки, как это.

<address uri="vfs:ftp://ja8irof_ftp:passftp@localhost:21?transport.vfs.MaxRetryCount=0&amp;transport.vfs.ReconnectTimeout=0"/>
person Bee    schedule 29.10.2016
comment
это решает проблему, большое спасибо. Вы знаете, почему другой подход не работает? - person Jairo FERNANDEZ; 30.10.2016
comment
@JairoFERNANDEZ это потому, что когда вы устанавливаете параметр, он предназначен для прослушивателя транспорта vfs, а не для отправителя транспорта vfs. Для отправителя транспорта вам необходимо установить параметры, как в этом ответе - person Riyafa Abdul Hameed; 14.12.2017
comment
Спасибо за ваш комментарий, Рияфа, всегда хорошо иметь достаточно информации. Теперь я лучше понимаю суть вопроса и то, как использовать параметры. - person Jairo FERNANDEZ; 15.12.2017