commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Gainty <mgai...@hotmail.com>
Subject RE: NPE in getRemoteAdress
Date Tue, 30 Aug 2016 12:16:01 GMT
if socket can stay open for normal read then that should work for filters or scheduled tasks
can you put project on github or any accessible URL and send me a link or plain attach a zip
and I'll take a look

Thanks
Martin 
______________________________________________ 



> Subject: Re: NPE in getRemoteAdress
> To: user@commons.apache.org
> From: oliver.zemann@gmail.com
> Date: Mon, 29 Aug 2016 21:27:46 +0200
> 
> Hi Martin
> 
> The ScheduledExecutorService is used in my project and is part of the 
> JDK/JRE since version 7. This class is probably not in apache commons 
> net ftp, i dont know how you got that information? Guess a misunderstanding.
> 
> I read the documentation. I set the timeout of the ftp client to 20 
> seconds which should be long enough. Also, i see when it jumps inside my 
> threads and executes them, and here is the problem. The socket is 
> closed, which should _not_ be closed. But i dont know what is causing 
> this wierd behaviour.
> 
> The project is open source. If you would like to take a look at it, i 
> can send you the project url by private mail.
> 
> Regards
> 
> Oli
> 
> 
> Am 29.08.2016 um 21:22 schrieb Martin Gainty:
> > having difficulty locating ScheduledExecutorService in commons-nethttps://commons.apache.org/proper/commons-net/javadocs/api-3.5/index.htmlwhich
version commons-net are you implementing?
> >
> > concerning ScheduledExecutorService running scheduleAtFixedRate or scheduleWithFixed
methods there is a initial delay
> > built in so you maybe experiencing time-out after the initial connect during that
initial delay
> > since we havent see the code you may want to look at ScheduledExecutorService  examples
herehttps://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
> > Martin
> >> Subject: Re: NPE in getRemoteAdress
> >> To: user@commons.apache.org
> >> From: oliver.zemann@gmail.com
> >> Date: Mon, 29 Aug 2016 19:28:56 +0200
> >>
> >> My download method looks like this:
> >>
> >> private void downloadDirectory(FTPClient client, String sourceDir,
> >> String destDir,
> >>                                      ScheduledExecutorService
> >> scheduledExecutorService) throws IOException {
> >>
> >>           final FTPFile[] ftpFiles = client.listFiles(sourceDir);
> >>           for (final FTPFile ftpFile : ftpFiles) {
> >>
> >>               //skip . and ..
> >>               if (ftpFile.isDirectory() && (ftpFile.getName().equals(".")
> >> || ftpFile.getName().equals(".."))) {
> >>                   continue;
> >>               }
> >>
> >>               if (ftpFile.isDirectory()) {
> >>                   downloadDirectory(client, sourceDir +
> >> ftpFile.getName(), destDir + "/" + ftpFile.getName(),
> >> scheduledExecutorService);
> >>               } else {
> >> //                scheduledExecutorService.submit(new
> >> DownloadRunnable(destDir, ftpFile, sourceDir, client));
> >>                   FileOutputStream fos = new
> >> FileOutputStream(ftpFile.getName());
> >>                   client.retrieveFile(sourceDir + ftpFile.getName(), fos );
> >>                   fos.flush();
> >>                   fos.close();
> >>               }
> >>           }
> >>       }
> >>
> >> When i run it like this, it works and it downloads the files. But when i
> >> use the scheduledExecuterService, it fails.
> >> So i replaced the 2 lines with my download method (where it uses the
> >> inputstream) to see what happens:
> >>
> >>    } else {
> >> //                scheduledExecutorService.submit(new
> >> DownloadRunnable(destDir, ftpFile, sourceDir, client));
> >>                   new File(destDir).mkdirs();
> >>                   final File outFile = new File(destDir, ftpFile.getName());
> >>                   final FileOutputStream fos = new FileOutputStream(outFile);
> >>                   final InputStream inputStream =
> >> client.retrieveFileStream(sourceDir + ftpFile.getName());
> >>
> >>                   byte[] buffer = new byte[8096];
> >>                   int len = -1;
> >>                   try {
> >>                       len = inputStream.read(buffer, 0, buffer.length);
> >>                   } catch (Exception ex) {
> >>                       ex.printStackTrace();
> >>                   }
> >>                   while (len != -1) {
> >>                       fos.write(buffer, 0, len);
> >>                       len = inputStream.read(buffer);
> >>                       if (Thread.interrupted()) {
> >>                           throw new InterruptedException();
> >>                       }
> >>                   }
> >>                   client.completePendingCommand();
> >> //                informListenersWeFinishedOneFile(sourceDir +
> >> ftpFile.getName(), bytesWritten);
> >>                   fos.flush();
> >>                   fos.close();
> >>               }
> >>           }
> >>
> >> That works too?!
> >>
> >> I will go deeper into that at weekend and check whats going on, but at
> >> the moment i really dont understand it. Maybe some kind of concurrency
> >> problem with FTPClient?
> >>
> >>
> >> Am 29.08.2016 um 01:40 schrieb Martin Gainty:
> >>> possible timeout waiting for FTP to reply
> >>> examples.ftp.FTPClientExample says to increase FTP reply timeout with -w
parameter
> >>>    if (args[base].equals("-w")) {                controlKeepAliveReplyTimeout
= Integer.parseInt(args[++base]);            }
> >>> or with FTPClient:ftpClient.setControlKeepAliveReplyTimeout(2000); //2 sec
reply timeout
> >>> ?
> >>> Martin
> >>> ______________________________________________
> >>>
> >>>
> >>>
> >>>> Date: Sun, 28 Aug 2016 20:06:46 +0200
> >>>> From: ecki@zusammenkunft.net
> >>>> To: user@commons.apache.org
> >>>> CC: oliver.zemann@gmail.com
> >>>> Subject: Re: NPE in getRemoteAdress
> >>>>
> >>>> Hello,
> >>>>
> >>>> I am not sure about your NPE, but this code here ignores the result
of
> >>>> the read call. It cannot deal with short reads:
> >>>>
> >>>>    Am Sun, 28 Aug 2016
> >>>> 15:50:36 +0200 schrieb Oliver Zemann <oliver.zemann@gmail.com>:
> >>>>> byte b[] =new byte[4096];
> >>>>> while (inputStream.read(b) != -1) {
> >>>>>     fos.write(b);
> >>>>>     bytesWritten += b.length;
> >>>> Gruss
> >>>> Bernd
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> >>>> For additional commands, e-mail: user-help@commons.apache.org
> >>>>
> >>>    		 	   		
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> >> For additional commands, e-mail: user-help@commons.apache.org
> >>
> >   		 	   		
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
> 
 		 	   		  
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message