Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试使用spring/java对本地主机进行sftp_Java_Unit Testing_Sftp_Spring Integration_Jsch - Fatal编程技术网

正在尝试使用spring/java对本地主机进行sftp

正在尝试使用spring/java对本地主机进行sftp,java,unit-testing,sftp,spring-integration,jsch,Java,Unit Testing,Sftp,Spring Integration,Jsch,我有一个多步骤的spring批处理工作。最后一步是sftp步骤。我试图对整个工作进行单元测试(我知道我可以对每个步骤进行单元测试,但无论如何我都必须面对这个问题)。我已经在我的应用程序上下文中定义了一个测试概要文件,其中包含我用于测试的bean。我的非测试sftp工作成功并正确传输文件。然而,当尝试使用localhost进行测试时,出现了一些问题。我读过类似的问题,例如哪些是有用的,但不完全是我想要的 当我运行测试时,当前发生的情况是,当程序到达代码中的以下行时,程序停止: sftpChanne

我有一个多步骤的spring批处理工作。最后一步是sftp步骤。我试图对整个工作进行单元测试(我知道我可以对每个步骤进行单元测试,但无论如何我都必须面对这个问题)。我已经在我的应用程序上下文中定义了一个测试概要文件,其中包含我用于测试的bean。我的非测试sftp工作成功并正确传输文件。然而,当尝试使用localhost进行测试时,出现了一些问题。我读过类似的问题,例如哪些是有用的,但不完全是我想要的

当我运行测试时,当前发生的情况是,当程序到达代码中的以下行时,程序停止:

sftpChannel.send(message);
应用程序仍在运行,但我可以从调试中看到什么都没有发生

我的问题不是连接问题,正如我的日志所示:

2813 [main] INFO com.jcraft.jsch  - Connecting to localhost port 9000
2813 [main] INFO com.jcraft.jsch  - Connection established
以下是我的应用程序上下文中的sftp代码:

    <bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
        <property name="host" value="localhost"/>
        <property name="user" value="user"/>
        <property name="password" value="password"/>
        <property name="port" value="9000"/>
    </bean>

    <int:channel id="outputChannel" />

    <int-sftp:outbound-channel-adapter id="sftpOutboundAdapter"
         session-factory="sftpSessionFactory"
         channel="outputChannel"
         charset="UTF-8"
         remote-directory="testFolder/ftp"
         remote-filename-generator="fileNameGenerator"
        />

    <bean id="fileNameGenerator" class="org.springframework.integration.file.DefaultFileNameGenerator"/>
我的tasklet将sftpChannel设置为这样

public void setSftpChannel(MessageChannel sftpChannel) {
    this.sftpChannel = sftpChannel;
}
在做了更多的研究之后,我的问题肯定是MessageChannel会无限期地阻塞—这在spring文档中有记录

出于某种原因,当我使用send(Message,long)的重载方法时,即使它达到了我在long中指定的时间,它仍然会无限期地阻塞


留给我的问题是,为什么MessageChannel会被阻塞?为什么我指定了一个超时

一,。您真的确定
sftpChannel
正是您的配置中的
outputChannel
吗?2.尝试打开
org.springframework.integration
类别的调试日志记录,并在发送消息后查看结果日志。@ArtemBilan 1。对我可以在调试中看到它有一个bean outputChannel。此外,它在测试之外工作。2.如何打开日志记录?它不是自动启用的吗?谢谢你的帮助!不,它不是默认的。您应该在测试资源中创建
log4j.properties
(或适用于您的日志框架),并为SI配置调试package@ArtemBilan嗯,我添加了调试。在我上面写的连接建立消息之后没有消息。它没有进入消息发送阶段。。。不过,我在调试日志中注意到了这一点,我必须查看这些日志<代码>ResourcesTransactionManager-创建名为[null]的新事务:需要传播,隔离默认值
public void setSftpChannel(MessageChannel sftpChannel) {
    this.sftpChannel = sftpChannel;
}