Подскажите, пожалуйста, внутреннюю работу ChannelSftp.get( "file_name")
?Будет ли использование этой функции для получения одного файла из списка файлов (600 файлов по 10 КБ) вызвать проблемы утечки памяти в Tomcat8, если эта функция используется часто?
Это код, которыйиспользуется для загрузки и извлечения файлов с удаленного сервера.
public String connectRemote(String host, String user, String password, String
remotePath, String sFileName) throws IOException, JSchException, SftpException
{
try {
String sFileNames ="";
Session session = connectSFTP(host, user, password);
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp chan = (ChannelSftp) channel;
try {
String ftpRemoteDirectory = "/Irismedical/Outbox_Eligibility";
chan.cd(ftpRemoteDirectory);
File ftest = new File(sFileName);
chan.put(new FileInputStream(ftest), ftest.getName());
sFileNames = ftest.getName();
}
catch (Exception e) {
chan.disconnect();
session.disconnect();
return null;
}
chan.cd("/Irismedical/Inbox/Eligibility");
String sRes = null;
for (int i = 0;i<6 ; i++) {
try {
sRes = convertInputStreamToString(
chan.get(sFileNames+"_Response_271_1.edi"));
if (sRes != null ) {
break;
} catch (Exception e ) {
if (i<3) {
Thread.sleep(3000);
} else {
Thread.sleep(5000);
}
}
}
session.disconnect();
return sRes;
}
catch (Exception e) {
}
return null;
}
}
private static String convertInputStreamToString(InputStream inputStream)
throws IOException {
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
return result.toString(StandardCharsets.UTF_8.name());
}