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.zem...@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: e...@zusammenkunft.net > >> To: user@commons.apache.org > >> CC: oliver.zem...@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.zem...@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-unsubscr...@commons.apache.org > >> For additional commands, e-mail: user-h...@commons.apache.org > >> > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org >