現在、私はSFTPプロトコルに取り組んでいます.Jschライブラリを使用してSFTPクライアントを作成し、Apache Mina Sshdライブラリを使用してSFTPサーバーを作成しました.それらの間の接続を確立し、SFTPサーバーにファイルを正常に送信できます.現在、SFTPサーバーの作成に取り組んでいます着信ファイルを処理するサイドファイルハンドラー。例として、SFTPサーバーがSFTPクライアントからファイルを受信できるとしましょうが、現在私の実装では、ファイルがサーバーに到着したときに通知する方法はありません.サーバーのルートフォルダーに移動して、そこにあるかどうかを確認するだけです.ファイルが利用可能です。それが、ファイルが到着したかどうかを知る方法です。
ファイルがサーバーに到着すると、ファイルが到着し、ファイルの内容(ファイル名とその他の詳細)をユーザーに通知するように実装したいと思います。しかし、問題は、私がApache Mina sshd APIを初めて使用することです。しかし、私はそれを理解できませんでした。
Apache Mina Sshd サーバーで着信ファイルを処理するために既に実装されているリスナーがある場合、またはそうでない場合は、着信ファイル用に独自のリスナーを実装する方法を教えてください。
SFTP サーバーコード
public class SftpServerStarter {
private SshServer sshd;
private final static Logger logger = LoggerFactory.getLogger(SftpServerStarter.class);
public void start(){
sshd = SshServer.setUpDefaultServer();
sshd.setPort(22);
sshd.setHost("localhost");
sshd.setPasswordAuthenticator(new MyPasswordAuthenticator());
sshd.setPublickeyAuthenticator(new MyPublickeyAuthenticator());
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider());
sshd.setSubsystemFactories(Arrays.<NamedFactory<Command>>asList(new SftpSubsystem.Factory()));
sshd.setCommandFactory(new ScpCommandFactory());
sshd.setFileSystemFactory(new VirtualFileSystemFactory("C:/root"));
try {
logger.info("Starting ...");
sshd.start();
logger.info("Started");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.info("Can not Start Server");
}
}
}