2011-12-22 8 views
7

Tôi đang cố gắng, với Ant, tải tệp zip qua FTP lên máy chủ FTP Windows Server 2008 R2 (nếu có vấn đề). Tôi có một nhiệm vụ tương tự để tạo thư mục/Release, hoạt động, nhưng bằng cách nào đó tải lên thông qua FTP mang lại cho tôi những vấn đề.Tác vụ Ant FTP không thành công: 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> 

Các Ant debug log:

[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 

Tôi đang làm gì sai?

+0

tôi đang gặp vấn đề tương tự, nhưng không thể tắt tường lửa vì tôi không phải là quản trị viên. bất kỳ giải pháp nào khác? – clamp

+0

lưu ý: sử dụng một ứng dụng khách khác như filezilla hoạt động tốt! – clamp

Trả lời

2

Tắt tường lửa Windows đã giải quyết được sự cố.

2

Một điều đáng thử là FTP thụ động. Ant ftp task có một thuộc tính passive cho việc này:

chọn passive mode ("yes") chuyển nhượng, cho tốt hơn thông qua tường lửa kết nối , với mức giá về hiệu suất. Mặc định là "không"

Có ghi lại sự khác biệt giữa chế độ hoạt động và thụ động here. Điểm mấu chốt là các lệnh ftp (bao gồm mkdir và chdir hoạt động trong câu hỏi OP) một cổng mở duy nhất - thường là cổng 21 - được sử dụng. Nhưng đối với việc truyền dữ liệu, một cổng khác có thể bị chặn tường lửa được sử dụng. Các vấn đề liên quan đến tường lửa với ftp đôi khi có thể hiển thị các triệu chứng được đề cập ở trên.

+0

cảm ơn! nó đã không giúp mặc dù, vẫn còn lỗi tương tự với thụ động = "có". nhưng có lẽ chúng tôi đang đi đúng hướng, vì các lệnh như danh sách và mkdir hoạt động tốt. chỉ cần gửi và đặt không thành công. – clamp