当我启动springboot应用程序时,它意外停止,并显示“ stopped sftpConfig.handler.serviceActivator”错误

时间:2019-08-02 11:02:50

标签: spring-integration-sftp

我想通过将传入的csv文件传输到目标银行的sftp服务器来将springboot与SFTP集成。我已经为此获得了一些在线帮助。我正在使用DefaultSftpSessionFactory和SftpMessageHandler,但是当我尝试运行该应用程序时,它将停止。

这是控制台错误:

。 ____ _ __ _ _ _  / \ / ' __ _ )_ __ __ _ _ \ \ \ \ (()_ |'_ |' | |' / `| \ \ \ \  \ / )| | )| | | | | || ( | | |))))   '| ____ | | |。 | | | | __,| / / / /  ======== | _ | ============= | ___ / = / / / _ /  :: Spring Boot ::(v2.0.4.RELEASE)

2019-08-02 06:41:23.404信息8780 --- [main] cpSpringSftpUploadDemoApplication:使用PID 8780在IP-C6135561上启动SpringSftpUploadDemoApplication(D:\ Users \ tanmoy \ sftp_POC \ java-examples \ spring-sftp -upload-demo \ target \ classes由tanmoy在D:\ Users \ tanmoy \ sftp_POC \ java-examples \ spring-sftp-upload-demo启动) 2019-08-02 06:41:23.408信息8780 --- [main] c.p.SpringSftpUploadDemoApplication:未设置活动配置文件,回退到默认配置文件:默认 2019-08-02 06:41:23.457 INFO 8780 --- [main] s.c.a.AnnotationConfigApplicationContext:刷新org.springframework.context.annotation.AnnotationConfigApplicationContext@14ec4505:启动日期[2019年8月2日星期五06:41:23 EDT];上下文层次结构的根 2019-08-02 06:41:23.887信息8780-[[main] o.s.i.config.IntegrationRegistrar:未明确定义名为'integrationHeaderChannelRegistry'的bean。因此,将创建一个默认的DefaultHeaderChannelRegistry。 2019-08-02 06:41:24.152 INFO 8780 --- [main] faultConfiguringBeanFactoryPostProcessor:尚未明确定义名为'errorChannel'的bean。因此,将创建一个默认的PublishSubscribeChannel。 2019-08-02 06:41:24.163信息8780 --- [main] faultConfiguringBeanFactoryPostProcessor:尚未明确定义名为'taskScheduler'的bean。因此,将创建一个默认的ThreadPoolTask​​Scheduler。 2019-08-02 06:41:24.325信息8780 --- [main] trationDelegate $ BeanPostProcessorChecker:类型为[org.springframework.integration.config.IntegrationManagementConfiguration $$ EnhancerBySpringCGLIB $类型的Bean'org.springframework.integration.config.IntegrationManagementConfiguration' $ f82eb420]不符合所有BeanPostProcessor的处理要求(例如:不符合自动代理的条件) 2019-08-02 06:41:24.518信息8780 --- [main] o.s.s.c.ThreadPoolTask​​Scheduler:初始化ExecutorService'taskScheduler' 2019-08-02 06:41:24.869信息8780 --- [main] o.s.j.e.a.AnnotationMBeanExporter:在启​​动时注册JMX暴露的bean 2019-08-02 06:41:24.881信息8780 --- [main] o.s.c.support.DefaultLifecycleProcessor:在阶段-2147483648中启动bean 2019-08-02 06:41:24.882信息8780 --- [main] o.s.i.endpoint.EventDrivenConsumer:将{message-handler:sftpConfig.handler.serviceActivator}添加为订户到'toSftpChannel'频道 2019-08-02 06:41:24.882信息8780 --- [main] o.s.integration.channel.DirectChannel:频道'application.toSftpChannel'有1个订阅者。 2019-08-02 06:41:24.883信息8780 --- [main] o.s.i.endpoint.EventDrivenConsumer:已启动sftpConfig.handler.serviceActivator 2019-08-02 06:41:24.883信息8780 --- [main] o.s.c.support.DefaultLifecycleProcessor:在阶段0中启动bean 2019-08-02 06:41:24.883信息8780 --- [主] ProxyFactoryBean $ MethodInvocationGateway:已启动sftpConfig $ UploadGateway 2019-08-02 06:41:24.883信息8780 --- [main] o.s.i.gateway.GatewayProxyFactoryBean:已启动sftpConfig $ UploadGateway 2019-08-02 06:41:24.883信息8780 --- [main] o.s.i.endpoint.EventDrivenConsumer:将{logging-channel-adapter:_org.springframework.integration.errorLogger}添加为'errorChannel'频道的订户 2019-08-02 06:41:24.883 INFO 8780 --- [main] o.s.i.channel.PublishSubscribeChannel:频道'application.errorChannel'有1个订阅者。 2019-08-02 06:41:24.883信息8780 --- [main] o.s.i.endpoint.EventDrivenConsumer:已启动_org.springframework.integration.errorLogger 2019-08-02 06:41:24.894信息8780 --- [main] c.p.SpringSftpUploadDemoApplication:在1.908秒内启动SpringSftpUploadDemoApplication(JVM运行2.548) 2019-08-02 06:41:24.898信息8780 --- [Thread-3] scaAnnotationConfigApplicationContext:关闭org.springframework.context.annotation.AnnotationConfigApplicationContext@14ec4505:启动日期[2019年8月2日星期五06:41:23 EDT ;上下文层次结构的根 2019-08-02 06:41:24.900信息8780 --- [Thread-3] o.s.c.support.DefaultLifecycleProcessor:在阶段0停止bean 2019-08-02 06:41:24.900信息8780 --- [线程3] ProxyFactoryBean $ MethodInvocationGateway:已停止sftpConfig $ UploadGateway 2019-08-02 06:41:24.901信息8780 --- [Thread-3] o.s.i.gateway.GatewayProxyFactoryBean:已停止sftpConfig $ UploadGateway 2019-08-02 06:41:24.901信息8780 --- [Thread-3] o.s.i.endpoint.EventDrivenConsumer:删除{logging-channel-adapter:_org.springframework.integration.errorLogger}作为'errorChannel'频道的订阅者 2019-08-02 06:41:24.901信息8780 --- [Thread-3] o.s.i.channel.PublishSubscribeChannel:频道'application.errorChannel'有0个订阅者。 2019-08-02 06:41:24.901信息8780 --- [Thread-3] o.s.i.endpoint.EventDrivenConsumer:已停止_org.springframework.integration.errorLogger 2019-08-02 06:41:24.901信息8780 --- [Thread-3] o.s.c.support.DefaultLifecycleProcessor:在阶段-2147483648停止bean 2019-08-02 06:41:24.901信息8780 --- [Thread-3] o.s.i.endpoint.EventDrivenConsumer:删除{message-handler:sftpConfig.handler.serviceActivator}作为'toSftpChannel'频道的订阅者 2019-08-02 06:41:24.902信息8780-[线程3] o.s.integration.channel.DirectChannel:频道'application.toSftpChannel'有0个订阅者。 2019-08-02 06:41:24.902信息8780 --- [Thread-3] o.s.i.endpoint.EventDrivenConsumer:停止了sftpConfig.handler.serviceActivator 2019-08-02 06:41:24.904 INFO 8780 --- [Thread-3] o.s.j.e.a.AnnotationMBeanExporter:关机时注销JMX暴露的bean 2019-08-02 06:41:24.906信息8780 --- [Thread-3] o.s.s.c.ThreadPoolTask​​Scheduler:关闭ExecutorService'taskScheduler'

SftpConfig.java:

@配置 公共类SftpConfig {

@Value("${sftp.host}")
private String sftpHost;

@Value("${sftp.port:22}")
private int sftpPort;

@Value("${sftp.user}")
private String sftpUser;

@Value("${sftp.privateKey:#{null}}")
private Resource sftpPrivateKey;

@Value("${sftp.privateKeyPassphrase:}")
private String sftpPrivateKeyPassphrase;

@Value("${sftp.password:#{null}}")
private String sftpPassword;

@Value("${sftp.remote.directory:/}")
private String sftpRemoteDirectory;

@Bean
public SessionFactory<LsEntry> sftpSessionFactory() {
    DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
    factory.setHost(sftpHost);
    factory.setPort(sftpPort);
    factory.setUser(sftpUser);
    if (sftpPrivateKey != null) {
        factory.setPrivateKey(sftpPrivateKey);
        factory.setPrivateKeyPassphrase(sftpPrivateKeyPassphrase);
    } else {
        factory.setPassword(sftpPassword);
    }
    factory.setAllowUnknownKeys(true);
    return new CachingSessionFactory<LsEntry>(factory);
}

@Bean
@ServiceActivator(inputChannel = "toSftpChannel")
public MessageHandler handler() {
    SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory());
    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("File expected as payload.");
            }
        }

    });
    return handler;
}

@MessagingGateway
public interface UploadGateway {

    @Gateway(requestChannel = "toSftpChannel")
    void upload(File file);

}

}

0 个答案:

没有答案