当前位置: 首页 > 知识库问答 >
问题:

如何用java配置使用Spring integration sftp出站网关

仉运乾
2023-03-14

我是Spring integration SFTP的新手。现在,我想从多个目录下载文件。那么SFTP出站网关似乎是我的首选,但我只找到了使用XML config的示例。如何使用Java config来实现这一点呢?我的配置类:

@Configuration
public class SftpConfig {
    @Bean
    public SessionFactory<LsEntry> sftpSessionFactory(){
        DefaultSftpSessionFactory defaultSftpSessionFactory = new DefaultSftpSessionFactory();
        ...
        return new CachingSessionFactory<LsEntry>(defaultSftpSessionFactory);
    }
    @Bean
    @InboundChannelAdapter(channel = "sftpChannel",autoStartup = "false", poller = @Poller(fixedDelay = "5000"))
    public MessageSource<File> sftpMessageSource() {
    ...
    }
    @Bean(name = "lsGateway")
    @ServiceActivator(inputChannel = "sftpChannel")
    public MessageHandler handlerLs(){
        SftpOutboundGateway sftpOutboundGateway = new SftpOutboundGateway(sftpSessionFactory(),"ls","payload");
        sftpOutboundGateway.setLocalDirectory(new File("sftp-gateway"));
        return sftpOutboundGateway;
    }
}

@MessagingGateway
public interface OutboundGatewayOption {
    @Gateway(requestChannel = "sftpChannel")
    public List<Boolean> lsGetAndRmFiles(String dir);

}

但当我启动应用程序时,什么也没发生,哪里出了问题?

---更新---我的测试类

@SpringBootTest(classes = Application.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@Configuration
@EnableIntegration
@Slf4j
@MessageEndpoint
public class SftpConfigTest{
    @Autowired
    private OutboundGatewayOption gatewayOption;
    @Test
    public void test(){
        gatewayOption.lsGetAndRmFiles("/");
    }
}

共有1个答案

阴永逸
2023-03-14

不清楚你说的“什么都没发生”是什么意思。似乎有两种方法可以触发LS请求--消息传递网关(必须调用)和入站通道适配器,它具有autostartup=“false”-直到网关启动,它才会调用网关。

此外,当使用它作为触发器时,您将需要SFTP网关上的一个输出通道(将结果发送到哪里)。当通过调用消息传递网关来调用网关时,结果将返回给网关(因为SFTP网关没有输出通道)。

 类似资料:
  • 问题内容: 我想访问网站https://myoffice.bt.com的某些页面,该页面需要使用Java进行用户身份验证。我们必须先登录才能访问页面。我写了以下代码。 但是它给出了以下错误。 如果我取消注释get.setFollowingRedirects行,则会出现另一个错误。 有人能帮我一下吗?我们可以使用HttpClient进行基于表单的身份验证吗? 谢谢。 问题答案: 首先-请不要命名您的

  • 问题内容: 我正在编写一个Java程序来登录学校用来发布成绩的网站。 这是登录表单的网址:https : //ma- andover.myfollett.com/aspen/logon.do 这是登录表单的HTML: 我正在尝试使用以下代码登录: 该程序将填充用户名框,然后单击“登录”按钮,但不会填充密码框。我可以进行哪些更改以使该程序正常运行?我怀疑密码框的“ type =’password’”

  • 问题内容: 我想使用HTTP GET和POST命令从网站检索URL并解析HTML。我该怎么做呢? 问题答案: 您可以将HttpURLConnection与URL结合使用。

  • 我想用java编写登录网站的代码。 下面是代码: 我曾在Facebook和Gmail上尝试过这段代码,但问题是它不起作用。 它一直告诉我cookies没有启用。(我使用了chrome浏览器,它们已启用)。 有没有其他方法可以实现这一点?

  • 我有一个UBUNTU/APACHE框,当我尝试使用主机名访问web服务器时,它会将我带到DocumentRoot(即/var/www),并显示那里的所有文件/文件夹(如预期的那样)。 在我的 /var/www我有几个文件夹,如 /var/www/devel和var/www/live,我如何更新我的配置,以便当我通过它的主机名[超文本传输协议://servername]击中服务器时,它会进入默认情况

  • 第一步是创建我们的Java配置。这个配置在你的应用程序中创建一个springSecurityFilterChain 的Servlet的过滤器,负责所有安全(例如 保护应用程序的URL,验证提交的用户名和密码,重定向到登陆的表单等等)。你可以在下面找到大部分Java配置项的例子: import org.springframework.beans.factory.annotation.Autowire