У меня есть Java-приложение на Websphere, которое использует Apache Commons FTPClient для получения файлов с сервера Windows через FTP.Когда я развертываю приложение в Websphere, работающем в среде Windows, я могу без проблем извлечь все файлы.Однако, когда я развертываю то же самое приложение в Webpshere под Linux, бывают случаи, когда я получаю неполные или поврежденные файлы.Однако эти случаи согласуются, так что каждый раз одни и те же файлы будут давать сбой и возвращать одинаковое количество байтов (обычно всего на несколько байтов меньше, чем то, что я должен получить).Я бы сказал, что могу успешно прочитать примерно 95% файлов в Linux.
Вот соответствующий код ...
ftpc = new FTPClient();
// set the timeout to 30 seconds
ftpc.enterLocalPassiveMode();
ftpc.setDefaultTimeout(30000);
ftpc.setDataTimeout(30000);
try
{
String ftpServer = CoreApplication.getProperty("ftp.server");
String ftpUserID = CoreApplication.getProperty("ftp.userid");
String ftpPassword = CoreApplication.getProperty("ftp.password");
log.debug("attempting to connect to ftp server = "+ftpServer);
log.debug("credentials = "+ftpUserID+"/"+ftpPassword);
ftpc.connect(ftpServer);
boolean login = ftpc.login(ftpUserID, ftpPassword);
if (login)
{
log.debug("Login success..."); }
else
{
log.error("Login failed - connecting to FTP server = "+ftpServer+", with credentials "+ftpUserID+"/"+ftpPassword);
throw new Exception("Login failed - connecting to FTP server = "+ftpServer+", with credentials "+ftpUserID+"/"+ftpPassword);
}
is = ftpc.retrieveFileStream(fileName);
ByteArrayOutputStream out = null;
try {
out = new ByteArrayOutputStream();
IOUtils.copy(is, out);
} finally {
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(out);
}
byte[] bytes = out.toByteArray();
log.info("got bytes from input stream - byte[] size is "+ bytes.length);
Любая помощь с этим будет принята с благодарностью.
Спасибо.