2016-10-29 11 views
3

Ich habe einen Proxy-Dienst geschrieben und auf WSO2 ESB 5 bereitgestellt, um einige Dateiinhalte über HTTP zu empfangen und den Transport mithilfe vfs-Transports auf einen FTP-Server zu übertragen. Der Dienst funktioniert wie erwartet, wenn ich die Verbindungsparameter richtig festlege, aber wenn ich in der Verbindungszeichenfolge etwas falsch gebe, um einen ausgefallenen Server zu simulieren, kann ich das Verhalten des VFS-Transports mit den in [1] angegebenen Parametern nicht steuern. Ich suche die Verzögerung zwischen dem Fehler in VFS und der Fehlerausnahme, die von Axis eingefangen wurde;WSO2 VFS FTP Proxy liest keine Parameter

Wie Sie unten sehen werden, gebe ich 0 Wiederholungen und 0 Wartezeit zwischen Wiederholungen, aber es scheint, die VFSTransportSender Klasse ist nicht in der Lage, irgendwie diese Werte zu lesen, weil es die gleiche Anzahl von Wiederholungen tut und es wartet gleiche Anzahl von Sekunden jedes Mal, wenn es ausgeführt wird, änderte ich auch die Werte und legte andere, aber das Ergebnis ist immer das gleiche, der Server wiederholt immer 3 weitere Versuche mit 30 Sekunden Verzögerung zwischen den anderen neben der ursprünglichen Anfrage, bevor Axis kann erhalten einige Informationen in Bezug auf den Fehler.

Hier ist mein Proxy-Dienst, der ohne Probleme funktioniert:

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

Und wenn ich den Server simulieren wollen, ist nicht erreichbar ich ändern einfach die Adresse URI und ich habe diese ein, wo der Benutzer falsch ist:

<address uri="vfs:ftp://ja8irof_ftp:[email protected]:21">

ich habe auch versucht die transport.vfs Parameter als Eigenschaften festlegen, bevor Sie den Endpunkt aufrufen, aber das Ergebnis ist genau das gleiche

Hier können Sie einen Teil der Protokolldatei prüfen, wo ich einige Teile der Stack-Trace schneiden Sie den Beitrag einfach zu halten:

[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  

Bitte senden Sie mir Kommentare, Vorschläge ... Ich würde so viel zu schätzen wissen, dank im Voraus für Ihre Zeit.

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

Antwort

2

Try Parameter an die Endpunkt-URL, wie diese angehängt wird.

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

dies löst das Problem, vielen Dank. Weißt du, warum der andere Ansatz nicht funktioniert? –

+0

@JairoFERNANDEZ es ist, weil, wenn Sie den Parameter einstellen, ist es für den Transport-Listener vfs und nicht für den Transport Absender vfs. Für den Transport Absender müssen Sie die Parameter wie in dieser Antwort –

+0

Vielen Dank für Ihren Kommentar Riyafa, es ist immer gut, genug Informationen zu haben. Jetzt verstehe ich besser das Problem und wie man die Parameter verwendet. –

Verwandte Themen