2016-07-30 10 views
1

Spring統合のsftpアダプタを使用してスタンドアロンAPIを構築する必要がありますが、呼び出し側はsftp接続パラメータ(host、user、pwdなど)を渡します。私は春のコンテキストXMLでそれらを初期化することはできません。私は、ティアダウンが必要な場合や、呼び出しごとにアプリケーションコンテキストを再作成する最善の方法についてのアドバイスを探しています。ここで私のコンテキストxmlは、私はDefaultSftpSessionFactoryのパラメータを外部化したいと思います。Spring Integration SftpOutboundChannelAdapter - 実行時にftpパラメータを渡す方法

<bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory"> 
    <property name="host" value="${host}" /> 
    <property name="port" value="${serverport}" /> 
    <property name="user" value="${username}" /> 
    <property name="password" value="${password}" /> 
    <property name="allowUnknownKeys" value="true" /> 
</bean> 
<int:channel id="inputChannel" /> 
<int-sftp:outbound-channel-adapter id="sftpOutboundAdapter" 
    session-factory="sftpSessionFactory" 
    channel="inputChannel" 
    charset="UTF-8" 
    remote-file-separator="/" 
    remote-directory="/accounts/12026622/Reports/" 
    use-temporary-file-name="false" 
    mode="REPLACE" 
    remote-filename-generator-expression="payload.getName() + '-foo'"  />  

答えて

0

dynamic ftp sample appを参照してください。

動的ルータを使用して、新しい宛先ごとに新しいミニ(パラメータ化された)アプリケーションコンテキストを作成し、再利用するためにキャッシュします。

これはかなり簡単です。サンプルはXMLを使用します。 Java構成を使用する場合は、this answerおよびits follow-upはインバウンド・メール・アダプターに同様の手法を使用します。

このテクニックを何らかの理由で使用したくない場合は、別のオプションとして、SessionFactoryLocatorを使用してセッションファクトリをオンザフライで作成することもできます。

+0

https://spring.io/blog/2016/07/08/java-dsl-for-spring-integration-1-2-m1-and-1-1-3-are-availableも参照してください。これで、実行時にフロー全体を設定できるようになりました。 –

+0

Gary - SessionFactoryLocatorでDelegatingSessionFactoryの例がありますか? – javakart

+0

私は認識していませんが、ホスト/ポート/資格情報をメッセージヘッダーに追加し、ファクトリロケータで使用することは困難です。私は今週のSpringOne Platformカンファレンスに出席しています。私は、ここにコメントを追加して私に思い出させると、来週に例を作ることができます。 –

関連する問題