通过spring集成从sFtp服务器(Complete Ftp)传输pdf文件

时间:2014-11-30 17:23:15

标签: spring-integration

我尝试在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()指令块无限期。

有人可以帮帮我吗?

谢谢和问候

0 个答案:

没有答案