一、情景
项目由于需要支持大文件传输和下载,用到了开源的Apache FtpServer(http://mina.apache.org/ftpserver/)。但是,为了配合客户端使用,这些FTP命令并不能满足需求,即需要增加一些命令,也需要删除或者修改一些对于整个系统可能带来安全问题的命令。
二、修改Apache
FtpServer的大致思路
1. 新增加命令,则增加具体的实现类,继承AbstractCommand,实现execute()方法。
2. 自定义一个类MyCommandFactoryFactory,对DEFAULT_COMMAND_MAP进行初始化控制,增加自己定义的命令。
具体代码可以参考org.apache.ftpserver.command.CommandFactoryFactory,基本类似。
3. 在server启动之前,重新设置CommandFactory。
serverFactory.setCommandFactory((new
MyCommandFactoryFactory()).createCommandFactory());
(另外:也可以直接修改CommandFactoryFactory的代码,这样比较简单。但是一般情况下,如果对于开源包有更改,还是建议继承或者重写相关的类,这样以后升级使用的包更容易些。)
三、如何对定制后的FtpServer测试
对于定制后的FtpServer,因为命令已经改变,使用传统的一些FTP工具就无法对Server进行测试了。这就需要自己写一个同样是定制过的简单的Ftp客户端来进行测试。Apache提供的commonnet包(http://commons.apache.org/net/)对于Ftp协议进行了支持,并且是开源的,所以可以直接修改commonnet的代码,提供一个定制版本的commonnet,以对定制的Ftp命令进行支持。然后再使用定制版本的commonnet写一个简单的Ftp客户端。
四、修改commonnet代码的大致思路
1. org.apache.commons.net.ftp.FTPCommand类
代码不多,很容易懂。需要修改或者增加命令。
2. org.apache.commons.net.ftp.FTP类
这个类封装了Ftp客户端的主要功能。增加或者修改具体的方法。
3. org.apache.commons.net.ftp.FtpClient类
这个类是对外提供服务的。增加或者修改具体的方法。
注:因为不能涉及具体业务,所以写的不够详细,见谅。基本思路已经写出来了,按照这个思路,再仔细看看代码,应该没问题的。
分享到:
相关推荐
4. **多平台支持**:Apache FTPServer可以在多种操作系统上运行,包括Windows、Linux、Unix等。 5. **强大的配置能力**:通过XML配置文件,管理员可以精细地控制FTP服务器的行为,例如设置用户权限、限制速度、配置...
从零开始介绍Apache FtpServer,并一步一步教你配置Apache FtpServer,更高级的应用,教你用写代码控制Apache FtpServer及集成到自己的应用中 <!--ftp端口 --> <!--绑定的服务器IP地址,多网卡的时候使用...
在 JavaWeb 集群环境下,配置 FTP 服务器是非常重要的,本文将介绍 Apache FTPServer 的配置使用,帮助读者快速搭建 FTP 服务器。 FTP 介绍 FTP 是一个标准的 TCP/IP 协议,用于在网络上传输文件。FTP 协议基于...
总之,这个压缩包提供了从基础到高级的所有必要资源,让你能够全面掌握Apache Ftpserver的使用和定制。无论是作为开发者还是管理员,你都可以通过这份资料深化对FTP服务器工作的理解,并实现高效的FTP服务部署。
另外,文中可能提到的“aptche ftpserver2.htm”和“apache ftpserver1.htm”可能是关于Apache FTPServer的两个不同版本或者不同阶段的配置和使用教程。而“Apache FTP 实用代码.html”可能包含了一些示例代码,方便...
Apache FTPServer是一款开源的FTP(File Transfer Protocol)服务器软件,主要负责在互联网上进行文件传输。这个特定的压缩包“apache-ftpserver-1.1.1.zip”包含了该服务器软件的v1.1.1版本,适用于Linux和Windows...
例如,在 `%FTP_HOME%/common/lib/ftpserver-core-1.0.5.jar` 文件中找到相关类文件,如 `org.apache.ftpserver.usermanager.impl.DbUserManager.class` 和 `org.apache.ftpserver.usermanager.impl....
Apache FtpServer是一个100%纯Java的、基于现有开放式协议基础上、完整、小巧的FTP服务器。此外,FtpServer还可以作为Windows服务器、Unix / Linux后台程序或是被嵌入在Java应用程序而独立运行。有了MINA...
FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,Apache FTPServer是其一个流行的开源实现。它提供了一个灵活的框架,支持多种插件,可以根据需求进行定制。 2. **Apache FTPServer安装** 首先...
Apache_FtpServer配置详解
- **Linux/Unix系统**: 使用命令 `tar -xzvf ftpserver-1.0.5.tar.gz` 进行解压。 - **Windows系统**: 使用解压工具进行解压。 3. **配置文件** 安装完成后,需要对配置文件进行编辑。配置文件通常位于 `%FTP_...
1. **基本配置**:在`<ftpserver>`标签内,可以设置服务器的基本属性,如端口(`port`)和数据连接模式(`dataConnectionMode`)。 2. **用户认证**:在`<users>`标签内,定义FTP用户的用户名、密码、主目录等信息。...
如果你需要进一步的信息,可以参考Apache FTP Server的官方文档,或者查找相关的社区资源和教程。 总之,Apache FTP Server是一个强大且灵活的开源FTP解决方案,适合那些需要自定义和扩展功能的企业级文件传输环境...
Java使用Apache FtpServer实现嵌入式FTP服务器是一项常见的任务,尤其在开发集成测试或部署自动化流程时。Apache FtpServer是一个开源项目,它提供了一个轻量级且可嵌入的FTP服务器,允许开发者在Java应用程序中直接...
在开始配置Apache FtpServer之前,你需要先下载并安装它。这通常涉及到以下几个步骤: 1. 下载Apache FtpServer的最新版本。 2. 解压缩下载的文件到你选择的目录。 3. 运行`bin/startup.sh`(Linux或Mac)或`bin/...
7. **虚拟主机**:FTPServer支持虚拟主机功能,允许在一个服务器上运行多个独立的FTP站点,每个站点有自己的域名、用户账户和权限设置。 8. **断点续传**:FTPServer支持断点续传功能,当文件传输中断后,可以从...
Android FTP server 用org.apache.ftpserver实现, 可以设置端口号, 匿名或用户名密码 https://blog.csdn.net/weixin_42065195/article/details/106944004
在Java应用程序中使用Apache FtpServer时,你需要包含一系列的jar包来支持其运行。这些jar包包含了服务器本身的基础组件、网络通信模块以及可能需要的依赖库。"apache ftpserver所需jar包"通常包括以下几个关键组件...
Java中的Apache FtpServer库为开发人员提供了一个强大的框架,用于在Java应用程序中轻松地创建和管理FTP服务器。Apache FtpServer提供了丰富的API,可以定制服务器的行为,满足各种需求。本篇文章将深入探讨如何利用...
这个"apache-ftpserver-1.0.6"版本是该软件的一个特定发布版,包含了在该版本中所实现的功能和改进。 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,基于TCP/IP协议族。FTP服务器允许...