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