Tengo una clase que trata de enviar un archivo existente en un FTP a otro FTP diferente. Para eso estoy usando la clase FTPClient y el método remoteRetrieve(String) y remoteStoreUnique(String).
El problema que tengo es que antes de usar estos métodos estoy usando el método enterRemoteActiveMode() y en este método es donde la aplicación me tira una excepción. Básicamente la bronca está en que la conexión se resetea....
Este es el método que estoy usando para hacer la transferencia:
Código:
Esta es la excepción que me arroja:@SuppressWarnings("static-access") public Response transferJCLFileResult(final FTPClient ftpSource, final FTPClient ftpDestiny, final String fileName, final String ftpSite) { Response response = new Response(); try { ftpDestiny.site(ftpSite); logger.info("*** Console FTP *** " + ftpDestiny.getReplyString()); } catch (IOException e) { logger.error("Error :set site " + ftpSite + " to shelton file"); response = util .createErrorResponse(FTPErrorId.GENERIC_REMOTE_ERROR, FTPErrorType.REMOTE_COMMAND_EXECUTION_ERROR, e .getMessage()); } if (response.getResponseCode() == null) { try { ftpDestiny.enterRemotePassiveMode(); System.out.println("****PASIVE MODE: "+ftpSource.enterRemotePassiveMode()+" "+ftpSource.getPassiveHost()+" "+ftpSource.getPassivePort()); ftpSource.enterRemoteActiveMode(InetAddress .getByName(ftpDestiny.getPassiveHost()), ftpDestiny .getPassivePort()); } catch (IOException e) { response = util.createErrorResponse( FTPErrorId.GENERIC_REMOTE_ERROR, FTPErrorType.REMOTE_COMMAND_EXECUTION_ERROR, e .getMessage()); logger.error("****Error at 575: "+e.getMessage()); } try { if (ftpSource.remoteRetrieve(fileName) && ftpDestiny.remoteStoreUnique(fileName)) { // if(ftp1.remoteRetrieve(file1) && ftp2.remoteStore(file2)) { // We have to fetch the positive completion reply. ftpSource.completePendingCommand(); ftpDestiny.completePendingCommand(); response.setResponseCode(ResponseCode.SUCCESS_CODE); System.out.println("****response: "+response.getResponseCode()); } } catch (IOException e) { response = util .createErrorResponse( FTPErrorId.ERROR_CALLING_COMMAND_COMPLETE_PENDING_COMMAND, FTPErrorType.REMOTE_COMMAND_EXECUTION_ERROR, FTPErrorId.ERROR_CALLING_COMMAND_COMPLETE_PENDING_COMMAND .getEnumName()); logger.error("****Error at 595: "+e.getMessage()); } } return response; }
Código:
No tengo ni idea por qué está reseteandose la conexión ... Por favor, cualquier comentario será bienvenido. Gracias de antemano 09:48:47,717 INFO [STDOUT] Jul 16 09:48:47 ERROR [http-0.0.0.0-8080-2] util.ResponseUtil - ENTERING -- createErrorResponse 09:48:47,717 INFO [STDOUT] Jul 16 09:48:47 ERROR [http-0.0.0.0-8080-2] util.ResponseUtil - ERROR-ID -- GENERIC_REMOTE_ERROR 09:48:47,717 INFO [STDOUT] Jul 16 09:48:47 ERROR [http-0.0.0.0-8080-2] util.ResponseUtil - ERROR-TYPE -- REMOTE_COMMAND_EXECUTION_ERROR 09:48:47,717 INFO [STDOUT] Jul 16 09:48:47 ERROR [http-0.0.0.0-8080-2] util.ResponseUtil - ERROR-DESCRIPTION -- Connection reset 09:48:47,733 INFO [STDOUT] Jul 16 09:48:47 ERROR [http-0.0.0.0-8080-2] util.ResponseUtil - LEAVING -- createErrorResponse 09:48:47,733 INFO [STDOUT] Jul 16 09:48:47 ERROR [http-0.0.0.0-8080-2] impl.CommonMethods - ****Error at 575: Connection reset