2016-10-29 20 views
3

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

Как вы увидите ниже, я указываю 0 повторений и 0 времени ожидания между повторами, но кажется, что класс VFSTransportSender не способен как-то прочитать эти значения, потому что он все время выполняет одинаковое количество попыток и ожидает то же количество секунд каждый раз, когда оно выполняется, я также менял значения и помещал других, но результат всегда один и тот же, сервер всегда повторяет три раза с задержкой 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:[email protected]: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:[email protected]: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

ответ

2

Try добавления параметров конечной точки URL, как это.

<address uri="vfs:ftp://ja8irof_ftp:[email protected]:21?transport.vfs.MaxRetryCount=0&amp;transport.vfs.ReconnectTimeout=0"/> 
+0

это решает проблему, спасибо большое. Вы знаете, почему другой подход не работает? –

+0

@JairoFERNANDEZ это потому, что, когда вы устанавливаете параметр, он предназначен для прослушивателя транспорта vfs, а не для отправителя транспорта vfs. Для отправителя транспорта вам нужно установить параметры, как в этом ответе –

+0

Спасибо за ваш комментарий Рияфа, всегда хорошо иметь достаточно информации. Теперь я лучше понимаю вопрос и как использовать параметры. –