Erro com FTPClient

Estou utilizando o FTPClient do Apache para se comunicar com um ftp

Meu sistema faz o seguinte, de um em um minuto, ele tem que ficar gravando alguns arquivos txt em um ftp.

Está acontecendo o seguinte:
Abro a comunicação com o ftp e o envio é feito perfeitamente, mas acontece que quando eu estou enviando um arquivo para o ftp e o sistema tenta abrir uma outra conexão com o ftp para enviar outro arquivo, esta comunicação não é aberta:

O código para se comunicar:

FTPClient ftp = new FTPClient();
try {
    ftp.connect("ftp.com.br");

    ftp.login("cliente@ftp.com.br", "senhaftp");

    FileInputStream arqEnviar = new FileInputStream("arquivoParaEnviar");

    if (ftp.storeFile("arquivo.txt", arqEnviar)) {
        System.out.println("Arquivo armazenado com sucesso!");
    } else {
        System.out.println("Erro ao armazenar o arquivo.");
    }

    ftp.logout();
    ftp.disconnect();
} catch (IOException ex) {
    throw new RuntimeException("Erro: " + ex.getMessage());
}

Para cada envio de arquivo utilizo este código, ai quando tento abrir uma conexão e já tem uma conexão aberta enviando outro arquivo, esta conexão que tento abrir não passa dessa linha:

ftp.connect("ftp.com.br");

O que pode estar ocorrendo?

1 curtida

Boa tarde rodrigo, o console mostra algum erro?

Não apresenta nenhum erro…

Servidor está tudo normal…

Percebi algumas coisas…

O sistema “trava” na linha que conecta com o FTP, mas não gera erro
nenhum e também não pula para outra linha… E as vezes abro uma nova
conexão e dá certo, mas aquela outra continua “travada”…

Tem alguma forma(alguma API no java, ou algo do tipo) que faça com
que o meu método conectar() execute no máximo em 10seg por exemplo? Ai
se em 10seg ele não executar eu faço outra coisa(tento conectar de
novo)…

Rodrigo, boa noite

tenta usar assim:

        String server = "www.site.com";
        int port = 21;
        String user = "usuario";
        String pass = "senha";
 
        FTPClient ftpClient = new FTPClient();
        try {
 
            ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();
 
            File diretorio = new File("D:/Test/Arquivo.txt");
            String arquivo = "Arquivo.txt";
            InputStream inputStream = new FileInputStream(diretorio);
 
            ftpClient.storeFile(arquivo, inputStream);
            inputStream.close();
           
            boolean completed = ftpClient.completePendingCommand();
            if (completed) {
                System.out.println("Arquivo enviado com sucesso");
            }
 
        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }