2011-12-22 18 views
7

Sto provando, con Ant, a caricare un file zip tramite FTP su un server FTP Windows Server 2008 R2 (se è importante). Ho un compito simile a creare la directory/Release, che funziona, ma in qualche modo il caricamento via FTP mi dà problemi.Task FTP Ant non riuscito: java.net.SocketException

<ftp action="put" 
      userid="${adapter.ftp.username}" 
      password="${adapter.ftp.password}" 
      server="${ftp.hostname}" 
      retriesAllowed="5" 
      verbose="true" 
      systemTypeKey="WINDOWS" 
      remotedir="/Release" > 

     <fileset dir="."> 
      <include name="Adapter.zip"/> 
     </fileset> 
    </ftp> 

La Formica registro di debug:

[ftp] Opening FTP connection to 192.168.2.120 
    [ftp] custom configuration 
    [ftp] custom config: system key = WINDOWS 
    [ftp] custom config: server language code = 
    [ftp] connected 
    [ftp] logging in to FTP server 
    [ftp] login succeeded 
    [ftp] changing the remote directory to /Release 
    [ftp] sending files 
    fileset: Setup scanner in dir C:\dir with patternSet{ includes: [adapter.zip] excludes: [] } 
    [ftp] transferring C:\dir\adapter.zip 
    [ftp] try #1: IO error (adapter.zip), retrying 
    /.../ 
    [ftp] try #6: IO error (adapter.zip), number of maximum retries reached (5), giving up 
    [ftp] disconnecting 
    build.xml:165: error during FTP transfer: java.net.SocketException: Software caused connection abort: socket write error 
at org.apache.tools.ant.taskdefs.optional.net.FTP.execute(FTP.java:2538) 
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
at org.apache.tools.ant.Task.perform(Task.java:348) 
at org.apache.tools.ant.Target.execute(Target.java:390) 
at org.apache.tools.ant.Target.performTasks(Target.java:411) 
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 
at org.apache.tools.ant.Project.executeTarget(Project.java:1368) 
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32) 
at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424) 
at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138) 
    Caused by: java.net.SocketException: Software caused connection abort: socket write error 
at java.net.SocketOutputStream.socketWrite0(Native Method) 
at java.net.SocketOutputStream.socketWrite(Unknown Source) 
at java.net.SocketOutputStream.write(Unknown Source) 
at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) 
at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source) 
at sun.nio.cs.StreamEncoder.implFlush(Unknown Source) 
at sun.nio.cs.StreamEncoder.flush(Unknown Source) 
at java.io.OutputStreamWriter.flush(Unknown Source) 
at java.io.BufferedWriter.flush(Unknown Source) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:472) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534) 
at org.apache.commons.net.ftp.FTP.port(FTP.java:862) 
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:463) 
at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:374) 
at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1379) 
at org.apache.tools.ant.taskdefs.optional.net.FTP.sendFile(FTP.java:2149) 
at org.apache.tools.ant.taskdefs.optional.net.FTP$2.execute(FTP.java:1792) 
at org.apache.tools.ant.util.RetryHandler.execute(RetryHandler.java:57) 
at org.apache.tools.ant.taskdefs.optional.net.FTP.executeRetryable(FTP.java:1709) 
at org.apache.tools.ant.taskdefs.optional.net.FTP.transferFiles(FTP.java:1788) 
at org.apache.tools.ant.taskdefs.optional.net.FTP.transferFiles(FTP.java:1845) 
at org.apache.tools.ant.taskdefs.optional.net.FTP.execute(FTP.java:2534) 
... 15 more 

Che cosa sto facendo di sbagliato?

+0

Ho lo stesso problema, ma non posso disattivare il firewall poiché non sono l'amministratore. qualche altra soluzione? – clamp

+0

nota: usare un altro client ftp come filezilla funziona bene! – clamp

risposta

2

Spegnere il firewall di Windows ha risolto il problema.

2

Una cosa che vale la pena provare è ftp passivo. La formica ftp task ha un attributo passive per questo:

seleziona modalità passiva ("sì") i trasferimenti, per una migliore connettività attraverso -firewall, al prezzo di prestazioni. Il valore predefinito è "no"

C'è una nota della differenza tra la modalità attiva e passiva here. Il punto chiave è che per i comandi ftp (incluso mkdir e il chdir che funziona nella domanda OP) viene utilizzata una singola porta aperta, solitamente la porta 21. Ma per i trasferimenti di dati viene utilizzata una porta diversa, eventualmente bloccata dal firewall. I problemi relativi al firewall con ftp a volte possono mostrare i sintomi sopra menzionati.

+0

grazie! non ha aiutato però, ancora lo stesso errore con passivo = "sì". ma forse siamo sulla strada giusta, dal momento che comandi come list e mkdir funzionano bene. basta inviare e mettere fallito. – clamp

Problemi correlati