Apache Mina SFTP サーバーイベント
バージョン 5.2 で追加された ApacheMinaSftpEventListener
は、特定の Apache Mina SFTP サーバーイベントをリッスンし、ApplicationListener
Bean、@EventListener
Bean メソッド、またはイベント受信チャネルアダプターで受信できる ApplicationEvent
として公開します。
現在、サポートされているイベントは次のとおりです。
SessionOpenedEvent
- クライアントセッションが開かれましたDirectoryCreatedEvent
- ディレクトリが作成されましたFileWrittenEvent
- ファイルが書き込まれたPathMovedEvent
- ファイルまたはディレクトリの名前が変更されましたPathRemovedEvent
- ファイルまたはディレクトリが削除されましたSessionClosedEvent
- クライアントが切断されました
これらはそれぞれ ApacheMinaSftpEvent
のサブクラスです。すべてのイベント型を受信するように単一のリスナーを設定できます。各イベントの source
プロパティは ServerSession
であり、そこからクライアントアドレスなどの情報を取得できます。抽象イベントには、便利な getSession()
メソッドが用意されています。
リスナー(Spring Bean でなければなりません)でサーバーを構成するには、単に SftpSubsystemFactory
に追加します。
server = SshServer.setUpDefaultServer();
...
SftpSubsystemFactory sftpFactory = new SftpSubsystemFactory();
sftpFactory.addSftpEventListener(apacheMinaSftpEventListenerBean);
...
Spring Integration イベントアダプターを使用してこれらのイベントを消費するには:
@Bean
public ApplicationEventListeningMessageProducer eventsAdapter() {
ApplicationEventListeningMessageProducer producer =
new ApplicationEventListeningMessageProducer();
producer.setEventTypes(ApacheMinaSftpEvent.class);
producer.setOutputChannel(eventChannel());
return producer;
}