项目中使用apache ftp server提供文件接收服务,需要在文件接收完毕修改状态为:传输完毕。根据apache文档,只需实现FtpLet接口就可以实现命令执行前后的监控了。看了下APACHE FTP SERVER的源码,FtpLet的beforeCommand方法在Command执行前调用, afterCommand方法在Command执行后调用。那很清晰了,只要在afterCommand里监控ftp命令STOR和APPE就好了。但这里有个问题,server 端无法得知上传文件的大小,很郁闷。想想也对,只有客户端才关心这个问题,服务端只管存好了。那这里就有问题了,SERVER端无法判断文件是否上传完毕,原因:1. 文件大小不知,2.afterCommand方法即使客户端传输异常也会在关闭IO前调用。 只好扩展FTP 命令,增加FEND(文件传输完毕恭毕敬)命令,客户端成功上传后调用该命令:FEND FILENAME通知服务器该文件上传成功.同时在afterCommand中监控FEND 命令,取出文件名参数,然后在状态表中按文件名查询后,更新状态就好了.思路大该如此,下面说说具体要做哪些工作.
1.客户端修改内容,apache common-net包中,FTP包里修改:
1 FTPCommand类,增加FEND命令
2 FTP类, 增加fend(String fileName)方法,里面调用: sendCommand(FTPCommand.FEND,fileName)
3 FtpClient类,增加sendFileComplete(String fileName)方法调用上面的fend命令,供客户端程序上传文件后调用。
2.apache ftp server端修改内容 这边有两种改法:
方法1:不修改源码方法. 实现FEND命令, 使用CommandFactoryFactory中的addCommand动态添加新命令.
2:修改源码方法: 实现FEND命令,修改CommandFactoryFactory,在里面的MAP中添加已实现的FEND命令. 实现FEND命令继承AbstractCommand
3.实现自己的Ftplet,继承DefaultFtplet,实现方法
public FtpletResult onFend(FtpSession session, FtpRequest request) 覆盖
public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply) throws FtpException, IOException {
String command = request.getCommand().toUpperCase();
if ( "FEND".equals(command)){
return onFend(session, request);
}else{
return super.afterCommand(session, request, reply);
}
}
分享到:
相关推荐
ftp upfile FTPClient java
NULL 博文链接:https://yangyangmyself.iteye.com/blog/1299997
赠送jar包:hadoop-yarn-server-common-2.6.5.jar; 赠送原API文档:hadoop-yarn-server-common-2.6.5-javadoc.jar; 赠送源代码:hadoop-yarn-server-common-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-...
赠送jar包:flink-table-common-1.12.7.jar; 赠送原API文档:flink-table-common-1.12.7-javadoc.jar; 赠送源代码:flink-table-common-1.12.7-sources.jar; 赠送Maven依赖信息文件:flink-table-common-1.12.7....
赠送jar包:hadoop-yarn-server-common-2.5.1.jar; 赠送原API文档:hadoop-yarn-server-common-2.5.1-javadoc.jar; 赠送源代码:hadoop-yarn-server-common-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
赠送jar包:common-image-3.1.1.jar; 赠送原API文档:common-image-3.1.1-javadoc.jar; 赠送源代码:common-image-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-image-3.1.1.pom; 包含翻译后的API文档:...
赠送jar包:hadoop-yarn-server-common-2.7.3.jar; 赠送原API文档:hadoop-yarn-server-common-2.7.3-javadoc.jar; 赠送源代码:hadoop-yarn-server-common-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-...
赠送jar包:hadoop-yarn-server-common-2.5.1.jar; 赠送原API文档:hadoop-yarn-server-common-2.5.1-javadoc.jar; 赠送源代码:hadoop-yarn-server-common-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-...
赠送jar包:hadoop-yarn-server-common-2.6.5.jar; 赠送原API文档:hadoop-yarn-server-common-2.6.5-javadoc.jar; 赠送源代码:hadoop-yarn-server-common-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-...
赠送jar包:hadoop-mapreduce-client-common-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-common-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-common-2.6.5-sources.jar; 赠送Maven依赖信息...
common-io,common-net打包奉送,JAVA方式实现FTP的文件上传和下载
赠送jar包:parquet-common-1.10.0.jar; 赠送原API文档:parquet-common-1.10.0-javadoc.jar; 赠送源代码:parquet-common-1.10.0-sources.jar; 赠送Maven依赖信息文件:parquet-common-1.10.0.pom; 包含翻译后...
赠送jar包:flink-table-common-1.13.2.jar; 赠送原API文档:flink-table-common-1.13.2-javadoc.jar; 赠送源代码:flink-table-common-1.13.2-sources.jar; 赠送Maven依赖信息文件:flink-table-common-1.13.2....
赠送jar包:hadoop-common-2.7.3.jar; 赠送原API文档:hadoop-common-2.7.3-javadoc.jar; 赠送源代码:hadoop-common-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-common-2.7.3.pom; 包含翻译后的API文档...
用于压缩/解压缩的java开发工具包,基本上主流格式全包含,其中apache-common-compress内有5个jar包,两个是test的不用管,剩余三个,一个是源码包,一个是开发包另一个是javadoc。解压除RAR外的所有格式。 apache-...
赠送jar包:activiti-common-rest-5.21.0.jar; 赠送原API文档:activiti-common-rest-5.21.0-javadoc.jar; 赠送源代码:activiti-common-rest-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-common-rest-...
赠送jar包:proto-google-common-protos-1.17.0.jar; 赠送原API文档:proto-google-common-protos-1.17.0-javadoc.jar; 赠送源代码:proto-google-common-protos-1.17.0-sources.jar; 赠送Maven依赖信息文件:...
主要用于实现ftp文件传输,网上没有很清晰的资料,故而我把自己的资料与ftpclient挂钩,希望让你尽快实现自己的项目
赠送jar包:flink-table-common-1.14.3.jar 赠送原API文档:flink-table-common-1.14.3-javadoc.jar 赠送源代码:flink-table-common-1.14.3-sources.jar 包含翻译后的API文档:flink-table-common-1.14.3-...