Изменение местоположения по умолчанию для локального каталога перед передачей в sftp с использованием исходящего шлюза sftp - PullRequest
0 голосов
/ 28 января 2019

Я использую исходящий адаптер sftp для успешной передачи файлов, созданных в ItemWriter, на сервер sftp.

Ниже приведена конфигурация java dsl для моего исходящего шлюза sftp.

@ Bean public IntegrationFlow sftpOutboundFlow () {

    return IntegrationFlows.from("toSftpChannel")
        .handle(Sftp.outboundAdapter(delegatingSessionFactory(sessionFactoryLocator), FileExistsMode.REPLACE)
 .useTemporaryFileName(false)
 .fileNameExpression("headers['" + FileHeaders.FILENAME + "']")
 .remoteDirectoryExpression("headers.path")
         .autoCreateDirectory(true), 
           c -> c.advice(expressionAdvice(c)))                                   .get();
}

/**
 * Advice to remove local files after successful upload
 *   
 * @param c
 * @return
 */
@Bean
public Advice expressionAdvice(GenericEndpointSpec<FileTransferringMessageHandler<ChannelSftp.LsEntry>> c) {
    ExpressionEvaluatingRequestHandlerAdvice advice = new ExpressionEvaluatingRequestHandlerAdvice();
    advice.setOnSuccessExpressionString("payload.delete()");
    advice.setOnFailureExpressionString("payload + ' failed to upload'");
    advice.setTrapException(true);
    return advice;
}

/**
 * Channel for uploading files
 * 
 *
 */
@MessagingGateway
public interface LettersUploadGateway {
    @Gateway(requestChannel = "toSftpChannel")
    void upload(@Payload File file,  @Header("path") String path);
}

Обновление: из ItemWriter я вызываю метод загрузки шлюза для передачи файлов, как показано ниже:

lettersGateway.upload (fileName, batchConfiguration.getLettersDirectory ());

Указанный каталог является удаленным каталогом, куда я хочу передать файлы.

В этом процессе я заметил, что временные локальные файлы создаются в корневой папке моего проекта (которые удаляются позже после успешного выполнения sftpпередача), есть ли способ изменить местоположение локального временного файла на что-то вроде "c: / temp /"?

Спасибо за вашу помощь.

...