0
<int-sftp:outbound-gateway id="sftpOutBound"
    session-factory="sftpSessionFactory"   expression="payload" command="put" request-channel="outboundFtpChannel"
    remote-directory="/tmp/tsiftp" reply-channel="sftpReplyChannel"/>

使用上面的 xml,我可以发送文件并得到回复。在java中,如何在SftpOutboundGateway中设置远程目录。如果我使用SftpMessageHandler,是否有可能得到回复。注释代码正在传输文件但没有回复。

 @Bean
@ServiceActivator(inputChannel = "outboundFtpChannel")
public MessageHandler transfertoPeopleSoft(){
 /*  SftpMessageHandler handler = new SftpMessageHandler(sftpSessionFactory());
     handler.setRemoteDirectoryExpression(new LiteralExpression("/tmp/tsiftp"));
     return handler;*/
    SftpOutboundGateway sftpOutboundGateway = new  SftpOutboundGateway( sftpSessionFactory(), "put", "/tmp/tsiftp");
    sftpOutboundGateway.setOutputChannelName("sftpReplyChannel");
    return sftpOutboundGateway;
}

 Exception I am getting is
   exception is org.springframework.expression.spel.SpelParseException: Expression [/tmp/tsiftp] @0: EL1070E: Problem parsing left operand

谢谢你的帮助。

4

1 回答 1

0

的远程目录SftpOutboundGateway可以由SftpRemoteFileTemplate及其配置:

/**
 * Set the remote directory expression used to determine the remote directory to which
 * files will be sent.
 * @param remoteDirectoryExpression the remote directory expression.
 */
public void setRemoteDirectoryExpression(Expression remoteDirectoryExpression) {

https://docs.spring.io/spring-integration/docs/5.0.0.RELEASE/reference/html/sftp.html#sftp-rft

随时提出JIRA以改进此事。

我知道该Expression变体不是那么有用,因为您需要使用SpelExpressionParserLiteralExpression仅用于简单的 dir 变体。

于 2018-01-04T16:58:57.523 回答