Lorsque le code ci-dessous a fini de s'exécuter, netstat -a|grep sftp
montre une connexion SFTP ouverte. Elle apparaît également comme une connexion ouverte dans JProfiler.
channel.isConnected()
dans le bloc enfin affiche false. Des idées sur pourquoi la connexion n'est pas fermée car je suis perdu?
public static void clean() {
com.jcraft.jsch.ChannelSftp channel = null;
try {
channel = Helper.openNewTLSftpChannel();
channel.connect();
channel.cd(remoteFileDirectory);
List list = channel.ls("*." + fileType);
for (ChannelSftp.LsEntry file : list) {
String fileName = file.getFilename();
DateTime fileDate = new DateTime(parseDateFromFileName(fileName));
//si ce fichier est plus ancien que la date de coupure, supprimez-le du partage SFTP
if (fileDate.compareTo(cleanupCutoffdate) < 0) {
channel.rm(fileName);
}
}
} catch (Exception exception) {
exception.printStackTrace();
} finally {
if (channel != null) {
channel.disconnect();
System.out.println(channel.isConnected());
}
}
}
Ajout de openNewTLSftpChannel()
ci-dessous :
public static ChannelSftp openNewSftpChannel(String privateKeyFileName, String password, String username, String host, int port)
throws ConfigurationErrorException {
JSch jsch = new JSch();
File sftpPrivateFile = new File(privateKeyFileName);
Channel channel;
try {
if (!sftpPrivateFile.canRead()) {
throw new ConfigurationErrorException("Erreur d'accès au fichier : " + sftpPrivateFile.getAbsolutePath());
}
jsch.addIdentity(sftpPrivateFile.getAbsolutePath(), password);
Session session = jsch.getSession(username, host, port);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
} catch (JSchException jschException) {
throw new ConfigurationErrorException("Erreur d'accès au fichier : " + sftpPrivateFile.getAbsolutePath());
}
return (ChannelSftp) channel;
}