2016-10-29 2 views
3

프록시 서비스를 작성하고 WSO2 ESB 5에 배포하여 http를 통해 파일 내용을 받고 vfs 전송을 사용하여 해당 내용을 ftp 서버로 전송했습니다. 이 서비스는 연결 매개 변수를 올바르게 지정할 때 예상대로 작동하지만 서버를 시뮬레이트하기 위해 연결 문자열에 잘못된 값을 지정하면 [1]에 지정된 매개 변수를 사용하여 VFS 전송의 동작을 제어 할 수 없습니다. 내가 찾고있는 것은 VFS에서 발생한 오류와 Axis에 의해 포착 된 오류 예외 사이의 지연을 줄이는 것이다.WSO2 VFS FTP 프록시가 매개 변수를 읽지 않습니다.

아래와 같이 재시도 횟수를 0으로 지정하고 다시 시도 간격을 0으로 지정하지만 VFSTransportSender 클래스는 항상 동일한 횟수의 재 시도를 수행하기 때문에 그 값을 읽을 수없는 것으로 보입니다. 실행될 때마다 동일한 초수를 사용하여 값을 변경하고 다른 값을 넣었지만 결과는 항상 같았습니다. 서버는 Axis가 수행 할 수 있기 전에 항상 원래 요청 외에 30 초 지연으로 3 번 더 재 시도했습니다. 오류와 관련된 정보를 수신하십시오.

<?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 매개 변수를 설정하기 위해 시도했지만 결과는 동일

012입니다 여기 3,516,

나는 간단한 게시물을 유지하기 위해 스택 트레이스의 일부를 절단 위치를 로그 파일의 일부를 검사 할 수 있습니다 :

[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]과 같은, 엔드 포인트 URL에 매개 변수를 추가 https://docs.wso2.com/display/ESB500/VFS+Transport

답변

2

보십시오.

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

이 문제가 해결되었습니다. 다른 접근법이 효과가없는 이유를 알고 있습니까? –

+0

@ JairoFERNANDEZ 매개 변수를 설정하면 vfs 전송 수신기가 아닌 vfs 전송 수신기에 대한 것이기 때문입니다. 전송 송신자의 경우이 대답과 같은 매개 변수를 설정해야합니다. –

+0

의견을 보내 주셔서 감사합니다. Riyafa, 충분한 정보를 얻는 것이 좋습니다. 이제 문제를 더 잘 이해하고 매개 변수를 사용하는 방법을 익혔습니다. –