commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: FTPClient hangs when downloading large files
Date Wed, 16 Feb 2011 00:34:08 GMT
Can you create a thread dump [1] to show where the code is hanging?

[1] http://www.crazysquirrel.com/computing/java/basics/java-thread-dump.jspx

On 15 February 2011 21:50, Cysneros, Nelson A CIV
SPAWARSYSCEN-PACIFIC, 56540 <nelson.cysneros@navy.mil> wrote:
>
>
> I'm using the net-commons v2.2 FTPClient to download files from a server
> and it works great for files less then 250MB, but hangs with larger
> files.
> Wondering if there is anything I can do to get around this issue.  I'm
> downloading files up to 500MB in size.
> Thanks in advance.
>
> Here is my source code:
> ------------------------------------------------------------------------
>
>                FTPClient ftpClient = new FTPClient();
>                File file = null;
>
>                //
> ////////////////////////////////////////////////////////////////////
>                // Grab all files from the FTP server and place them in
> the specified
>                // folder for processing.
>
> ////////////////////////////////////////////////////////////////////////
>
>                        // Log on to FTP server
>                        try {
>                                // FTP Server
>                                ftpClient.enterLocalPassiveMode();
>                                ftpClient.connect(ftpServer);
>
>                                // After connection attempt, you should
> check the reply code to verify
>                                // success.
>                                int reply = ftpClient.getReplyCode();
>                                if
> (!FTPReply.isPositiveCompletion(reply))
>                                {
>                                        ftpClient.disconnect();
>                                        logger.error("FTP server refused
> connection.");
>                                        System.exit(1);
>                                }
>
> ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
>                                ftpClient.login(m_sFTPCredUN,
> m_sFTPCredPW);
>
>                        } catch (java.net.ConnectException ex1) {
>
>                                logger.info(ex1.getMessage());
>                                System.out.print("-----FTP Connection
> problem: "+ ftpServer+"\n");
>                                return;
>                        }catch (Exception ex1) {
>
>                                logger.info(ex1.getMessage());
>                                System.out.print("-----FTP Connection
> problem: "+ftpServer+"\n");
>                                return;
>                        }
>
>                        //Download files
>                        FileOutputStream fos=null;
>                        try {
>                                // List the files in the directory
>                                FTPFile[] files =
> ftpClient.listFiles(ftpPath);
>                                logger.info("Number of files in dir: "
+
> files.length);
>                                for (int i = 0; i < files.length; i++)
{
>                                        String fileName =
> files[i].getName();
>
>                                        // ////////////////
>                                        // Get Files
>                                        // ////////////////
>                                        logger.info("Getting file:
" +
> fileName);
>                                        file = new
> File(m_sInputRapierPath + File.separator
>                                                        +
> files[i].getName());
>                                        fos = new
> FileOutputStream(file);
>
>                                        ftpClient.retrieveFile(ftpPath
+
> "/" + files[i].getName(),fos); //Hangs here
>                                        logger.info("File transfer
> complete");
>                                        fos.close();
>
>                                        }
>
>
>
>                        } catch
> (org.apache.commons.net.io.CopyStreamException e) {
>                                logger.info("FTP FETCH PROBLEM(1): " +
> e.getMessage());
>                                //System.out.println("FTP FETCH
> PROBLEM(1): " + e.getMessage());
>                                try {
>                                        if (file != null){
>                                                fos.close();
>                                                file.delete();
>                                        }
>                                }//try
>                                catch(IOException ex){
>                                        logger.info("FTP Problem
> occured(4) : " + ex.getMessage());
>                                }//catch
>
>                        } catch (Exception ex) {
>                                logger.info("FTP FETCH PROBLEM(3): " +
> ex.getMessage());
>                                //System.out.println("FTP FETCH
> PROBLEM(3): " + e.getMessage());
>                                try {
>                                        if (file != null){
>                                                fos.close();
>                                                file.delete();
>                                        }
>                                }//try
>                                catch(IOException ex1){
>                                        logger.info("FTP Problem
> occured(4) : " + ex1.getMessage());
>                                }//catch
>                        } finally {
>                                try {
>                                        if (file != null){
>
>                                                // Logout from
the FTP
> Server and disconnect
>                                                ftpClient.logout();
>
> if(ftpClient.isConnected())
>
> ftpClient.disconnect();
>                                        }
>                                }//try
>                                catch(IOException ex){
>                                        logger.info("FTP Problem
> occured(4) : " + ex.getMessage());
>                                }//catch
>                        }//finally
>
>                }// if
>
>
Mime
View raw message