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();
}
}
}