Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/07/2010, 08:54
Avatar de Wayern
Wayern
 
Fecha de Ingreso: septiembre-2008
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 16 años, 6 meses
Puntos: 4
Pregunta Problema con FTPClient

Hola a todos. Tengo un problemilla con FTPClient y no sé si me puedan ayudar a solucionarlo.
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:
@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;
	}
Esta es la excepción que me arroja:

Código:
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
No tengo ni idea por qué está reseteandose la conexión ... Por favor, cualquier comentario será bienvenido. Gracias de antemano