2016-11-10 3 views
0

Я новичок в интеграции весной. Я прошу помочь мне в этом вопросе.sftp: файл для исходящего шлюза не работает

Я использую sftp: исходящий-шлюз для перемещения файла из одной папки в другую папку.

структура папок:

top-dir 
- module-dir 
    - output-dir 
     filexyz.txt 
    - archive-dir 

Я хочу, чтобы переместить filexyz.txt из вывода в папку архива.

Конфигурация:

<int-sftp:outbound-gateway 
session-factory="ftpSessionFactory" 
expression="payload.remoteDirectory + '/' + payload.filename" 
request-channel="inChannel" 
command="mv" 
rename-expression="payload.remoteDirectory + '/' +  
payload.filename.replaceFirst('output-dir','archive-dir')" 
reply-channel="outChannel"/> 

код Java:

DirectChannel moveChannel = context.getBean("inChannel",DirectChannel.class); 
moveChannel.send(new GenericMessage<File>(new File("top-dir\module-dir\output-dir\filexyz.txt"))); 

я упомянул вопрос на how to replace string in SpEL expression?, но не может решить мою проблему.

Я получаю оценку выражений не сработало: payload.remoteDirectory + '/' + exceptionload.filename.

Я думаю, что я делаю что-то неправильно в Java-коде.

Пожалуйста, помогите мне.

ответ

0

expression="payload.remoteDirectory + '/' + payload.filename"

Ваша полезная нагрузка представляет собой простой java.io.File; он не обладает этими свойствами.

Вам необходимо использовать абсолютный путь; что-то вроде

expression="payload.absolutePath

и

rename-expression="payload.absolutePath.replace....

Если вы работаете на окнах также может потребоваться заменить \ с / тоже.

Чтобы использовать существующие выражения, вам нужна пользовательская полезная нагрузка вместо File, с объектами remoteDirectory и filename.

+0

Большое спасибо Гэри. Я мог бы решить проблему с пользовательской полезной нагрузкой. – mahajpan

Смежные вопросы