2016-11-10 5 views
0

私は春の統合に慣れていません。私はこの問題で私を助けてください。sftp:アウトバウンドゲートウェイの移動ファイルが動作しない

私はsftp:outbound-gatewayを使用して、あるフォルダから別のフォルダにファイルを移動しています。

フォルダ構造は次のとおりです。

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?で問題を参照しますが、私の問題を解決することができませんでした。

Expression評価に失敗しました:payload.remoteDirectory + '/' + payload.filename exception。

私はJavaコードで何か間違っていると思います。

私を助けてください。

答えて

0

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

あなたのペイロードは、単純なjava.io.Fileです。これらのプロパティはありません。

絶対パスを使用する必要があります。

expression="payload.absolutePath

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

のようなものは、Windows上で実行している場合には、あまりにも/\を交換する必要があるかもしれません。

既存の式を使用するには、Fileの代わりにremoteDirectoryfilenameプロパティのカスタムペイロードが必要です。

+0

ありがとうございますゲーリー。カスタムペイロードで問題を解決できました。 – mahajpan

関連する問題