问题描述
我在 Spring Boot 中制作了简单的 Apache MINA FTP 服务器。类似于 this github repo 中的项目 mina-ftp-server。主要配置如下:
@Configuration
class FtpServerConfiguration {
@Bean
FileSystemFactory fileSystemFactory() {
NativeFileSystemFactory fileSystemFactory = new NativeFileSystemFactory();
fileSystemFactory.setCreateHome(true);
fileSystemFactory.setCaseInsensitive(false);
return fileSystemFactory::createFileSystemView;
}
@Bean
Listener nioListener(@Value("${ftp.port:7777}") int port) {
ListenerFactory listenerFactory = new ListenerFactory();
listenerFactory.setPort(port);
return listenerFactory.createListener();
}
@Bean
FtpServer ftpServer(Map<String,Ftplet> ftpletMap,UserManager userManager,Listener nioListener,FileSystemFactory fileSystemFactory) {
FtpServerFactory ftpServerFactory = new FtpServerFactory();
ftpServerFactory.setListeners(Collections.singletonMap("default",nioListener));
ftpServerFactory.setFileSystem(fileSystemFactory);
ftpServerFactory.setFtplets(ftpletMap);
ftpServerFactory.setUserManager(userManager);
return ftpServerFactory.createServer();
}
@Bean
disposableBean destroysFtpServer(FtpServer ftpServer) {
return ftpServer::stop;
}
@Bean
InitializingBean startsFtpServer(FtpServer ftpServer) {
return ftpServer::start;
}
@Bean
UserManager userManager(@Value("${ftp.root:${HOME}/Desktop/root}") File root,JdbcTemplate template) {
Assert.isTrue(root.exists() || root.mkdirs(),"the root directory must exist.");
return new FtpUserManager(root,template);
}
}
问题是 FTP 服务器应该在服务器重新启动时更新目录树。因此,应根据其他一些变量添加新文件夹。
有没有办法在启动 Apache MINA FTP 服务器时“播种”初始目录树?也许在启动后立即将管理 FTPSession 对象注入一些我不知道的过滤器?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)