2016-10-28 34 views
0

XMLファイルにOUTBOUND GATEWAYのインバウンド・チャネル・アダプタを使用してBeanを構成しました。私は、Javaクラスの@serviceactivatorを使用してチャネルを呼び出す。しかし、ルートフォルダにあるファイルを取得すると、サブディレクトリからファイルを取得できない。FTPサーバーからさまざまなサブディレクトリから再帰的にファイルをダウンロード

私のXMLファイル:

<int:inbound-channel-adapter channel="inbound1" expression="'/'"> 
<int:poller fixed-delay="3000"/> 
</int:inbound-channel-adapter> 

<int-ftp:outbound-gateway id="gatewayGet" 
     session-factory="ftpClientFactory" 
     request-channel="inbound1" 
     local-directory="C:/Users/pprakash/Desktop/DataFiles/actual" 
     auto-startup="true" 
     command="mget" 
     command-options="-R" 
     filename-pattern="*.csv" 
     expression="'actual/*/*'" 
     reply-channel="outbound"/> 

<int:channel id="outbound"> 
<int:interceptors> 
    <int:wire-tap channel="logger"/> 
</int:interceptors> 
</int:channel> 
<int:logging-channel-adapter id="logger" log-full-message="true" /> 

'<bean id="ftpClientFactory" 
        class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> 
      <property name="host" value="192.168.79.1"/> 
      <property name="port" value="21"/> 
      <property name="username" value="*****"/> 
      <property name="password" value="*****"/> 
      <property name="bufferSize" value="100000"/> 
</bean>' 

私のJavaのコードは次のようである: - あなたのサブディレクトリはまた、彼らはスキャンされませんそのパターンと一致しない限り

static int index=0; 
@ServiceActivator(inputChannel = "inbound1") 
public void foo1(File file) throws InterruptedException { 
    logger.debug("Inbound msg to gateway :[ "+(index++)+"]" + file.getAbsolutePath()); 
} 

@ServiceActivator(inputChannel = "outbound") 
public void foo2(List<File> file) throws InterruptedException { 
    System.out.println("outbound gateway"); 
    logger.debug("File Received :[ "+(index++)+"]" + file.size()); 

} 

答えて

0

filename-pattern="*.csv"

は、例えばthe documentation

を参照してください、は、リモートディレクトリとサブディレクトリsubDir1.txtで終わるすべてのファイルを取得します。 サブディレクトリがフィルタリングされている場合、そのサブディレクトリの追加のトラバーサルは実行されません。

(私の強調)。

したがって、パターンは、ツリー内のサブディレクトリが横断されるようにする必要があります。

+0

私のサブディレクトリには、* .csvファイル... が含まれています。サブディレクトリには含まれていません。 /abc/2016 /はいくつかあります* .csvファイル actual/abc/has * .csvファイル.../actual/abc/* .csvは実際にダウンロードされています。 –

+0

右ですが、ディレクトリ自体がパターンに一致する必要があります - あなたはpattenを作る必要があります(正規表現) 'filename-regex ="(実際の| abc | * .csv) "のようなものです。そうでなければ、' actual'と 'abc'は除外されます。あるいは、ディレクトリを無視する(フィルタリングしない)カスタムの 'FileListFilter'を使うこともできます。おそらくこのようなフィルタをフレームワークに追加するべきです。私は[JIRA Issue](https://jira.spring.io/browse/INT-4149)を追加しました。 –

+0

ええ、私はファイルパターンを無視した後、各サブディレクトリの各ファイルをダウンロードしています。ありがとうございましたゲーリー 私は必要があれば.csvファイルをダウンロードする必要がありますか? サーバが起動しているときに、新しいファイルがこれらのサブディレクトリに配置されている場合、それらのファイルもダウンロードできますか? –

関連する問題