セッションファクトリの委譲

バージョン 4.2 では、実行時に実際のセッションファクトリを選択できる DelegatingSessionFactory が導入されました。SFTP エンドポイントを呼び出す前に、ファクトリで setThreadKey() を呼び出して、キーを現在のスレッドに関連付けることができます。次に、そのキーを使用して、使用する実際のセッションファクトリを検索します。使用後に clearThreadKey() を呼び出すことにより、キーをクリアできます。

次の例に示すように、メッセージフローから簡単に行えるように便利なメソッドを追加しました。

<bean id="dsf" class="org.springframework.integration.file.remote.session.DelegatingSessionFactory">
    <constructor-arg>
        <bean class="o.s.i.file.remote.session.DefaultSessionFactoryLocator">
            <!-- delegate factories here -->
        </bean>
    </constructor-arg>
</bean>

<int:service-activator input-channel="in" output-channel="c1"
        expression="@dsf.setThreadKey(#root, headers['factoryToUse'])" />

<int-sftp:outbound-gateway request-channel="c1" reply-channel="c2" ... />

<int:service-activator input-channel="c2" output-channel="out"
        expression="@dsf.clearThreadKey(#root)" />
セッションキャッシングを使用する場合(SFTP セッションキャッシングを参照)、各デリゲートをキャッシュする必要があります。DelegatingSessionFactory 自体をキャッシュすることはできません。

バージョン 5.0.7 以降、DelegatingSessionFactory を RotatingServerAdvice と組み合わせて使用して複数のサーバーをポーリングできます。受信チャネルアダプター: 複数のサーバーとディレクトリのポーリングを参照してください。