我尝试在https://github.com/spring-projects/spring-integration-samples/tree/master/basic/sftp
执行示例我尝试使用发行版中给出的示例将文件从远程文件传输到本地目录(sFtpInboundReceiveSample.java)
因此,我安装了一个真正的sFtp服务器(Complete FTP)创建了一个帐户,为用户生成了一个私钥/公钥,然后尝试启动tge示例测试类。
我的目标是从远程sFtp服务器检索pdf二进制文件并将它们存储在本地目录中。
不幸的是,在尝试接收第一个.pdf文件时,示例程序仍然停留在其中。
即:创建了一个临时的test1.pdf.writing文件,但该文件永远不会被完全下载。
因此一段时间后测试以错误结束。有人可以帮我确定一下该做什么吗?
下面是我在spring .xml文件中使用的配置:
<int-sftp:inbound-channel-adapter id="sftpInbondAdapter" auto-startup="false" channel="receiveChannel" session-factory="sftpSessionFactory" local-directory="file:local-mumuFolder" remote-directory="mumuFolder" auto-create-local-directory="true" delete-remote-files="false" filename-regex=".*\.pdf$"> <int:poller fixed-rate="1000" max-messages-per-poll="1"/> </int-sftp:inbound-channel-adapter>
java中的示例代码在此处停止:
public class SftpInboundReceiveSample {
@Test
public void runDemo(){
ConfigurableApplicationContext context =
new ClassPathXmlApplicationContext("/META-INF/spring/integration/SftpInboundReceiveSample-context.xml", this.getClass());
RemoteFileTemplate<LsEntry> template = null;
/*String file1 = "a.txt";
String file2 = "b.txt";
String file3 = "c.bar";
new File("local-dir", file1).delete();
new File("local-dir", file2).delete();*/
try {
PollableChannel localFileChannel = context.getBean("receiveChannel", PollableChannel.class);
@SuppressWarnings("unchecked")
SessionFactory<LsEntry> sessionFactory = context.getBean(CachingSessionFactory.class);
template = new RemoteFileTemplate<LsEntry>(sessionFactory);
//SftpTestUtils.createTestFiles(template, file1, file2, file3);
SourcePollingChannelAdapter adapter = context.getBean(SourcePollingChannelAdapter.class);
adapter.start();
Message<?> received = localFileChannel.receive();
(localFileChannel.receive()指令块无限期。
有人可以帮帮我吗?
谢谢和问候