Spring SFTP 集成偶尔错误 IOException:管道关闭
Spring SFTP Integration Occasional error IOException: Pipe closed
您好,我正在将 SFTP(版本 5.1.6)集成到我的 spring 启动应用程序中。下面是我正在使用的配置。但有时我遇到异常并且传输失败,不确定我如何确保没有异常发生是什么问题。
Failed to write to 'TestFile.xml.writing' while uploading the file;
nested exception is org.springframework.core.NestedIOException: failed to write file; nested
exception is 4: java.io.IOException: Pipe closed
@Bean
public SessionFactory<ChannelSftp.LsEntry> sftpSessionFactory() {
LOGGER.debug(" Creating SFTP Session Factory -Start");
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
factory.setHost(sftpHost);
factory.setPort(sftpPort);
factory.setUser(sftpUser);
factory.setPassword(sftpPasword);
factory.setAllowUnknownKeys(true);
LOGGER.debug(" Creating SFTP Session Factory -End");
return new CachingSessionFactory<>(factory);
}
@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler handler() {
SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory());
LOGGER.debug(" Creating SFTP MessageHandler - Start ");
handler.setRemoteDirectoryExpression(new LiteralExpression(sftpRemoteDirectory));
handler.setFileNameGenerator(new FileNameGenerator() {
@Override
public String generateFileName(Message<?> message) {
if (message.getPayload() instanceof File) {
return ((File) message.getPayload()).getName();
} else {
throw new IllegalArgumentException("Expected Input is File.");
}
}
});
LOGGER.debug(" Creating SFTP MessageHandler - End ");
return handler;
}
@MessagingGateway
public interface UploadGateway {
@Gateway(requestChannel = "toSftpChannel")
void sendToSftp(File file);
}
Pipe closed
简单来说就是网络出现故障或者服务器出于某种原因关闭了连接;您将需要查看服务器日志以获取更多信息。
您可以向出站适配器添加重试建议以重试失败。
您好,我正在将 SFTP(版本 5.1.6)集成到我的 spring 启动应用程序中。下面是我正在使用的配置。但有时我遇到异常并且传输失败,不确定我如何确保没有异常发生是什么问题。
Failed to write to 'TestFile.xml.writing' while uploading the file; nested exception is org.springframework.core.NestedIOException: failed to write file; nested exception is 4: java.io.IOException: Pipe closed
@Bean
public SessionFactory<ChannelSftp.LsEntry> sftpSessionFactory() {
LOGGER.debug(" Creating SFTP Session Factory -Start");
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
factory.setHost(sftpHost);
factory.setPort(sftpPort);
factory.setUser(sftpUser);
factory.setPassword(sftpPasword);
factory.setAllowUnknownKeys(true);
LOGGER.debug(" Creating SFTP Session Factory -End");
return new CachingSessionFactory<>(factory);
}
@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler handler() {
SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory());
LOGGER.debug(" Creating SFTP MessageHandler - Start ");
handler.setRemoteDirectoryExpression(new LiteralExpression(sftpRemoteDirectory));
handler.setFileNameGenerator(new FileNameGenerator() {
@Override
public String generateFileName(Message<?> message) {
if (message.getPayload() instanceof File) {
return ((File) message.getPayload()).getName();
} else {
throw new IllegalArgumentException("Expected Input is File.");
}
}
});
LOGGER.debug(" Creating SFTP MessageHandler - End ");
return handler;
}
@MessagingGateway
public interface UploadGateway {
@Gateway(requestChannel = "toSftpChannel")
void sendToSftp(File file);
}
Pipe closed
简单来说就是网络出现故障或者服务器出于某种原因关闭了连接;您将需要查看服务器日志以获取更多信息。
您可以向出站适配器添加重试建议以重试失败。