关于FTPClient(Apache的commons.net包下的)研究
来源:互联网 发布:费曼技巧 知乎 编辑:程序博客网 时间:2024/05/17 03:33
经过几年的开发,突然发现到现在自己只涨年限,不涨经验。回想其中缘故:
应了一句老话:黑瞎子掰棒子,掰了一路丢了一路;所以最终也没有剩下什么。
对自己狠狠心,不要太懒就好,当完成一次觉得耗时的且有价值的任务的时候,在每天结束的时候,将其记录下来。记录的过程也是对问题再次理解的过程,书者没有怎么写过文章,有不当之处,希望大家指正;
最近开发的系统,有这么一个需求:项目中需要引用geoserver发布的地图,但是因为系统使用者的问题,需要分权限来做。跟前台做地图的开发人员沟通之后,发现不同通过sld_body的方式来做,一是sld_body的数据量比较大,而且这样做起来效率也不是很高;后来想了一个办法通过动态修改geoserver项目目录下的styles样式文件来生成拥有不同权限的样式文件;这样每次wms请求style样式文件的时候就可以调用不同权限下的数据了。因为考虑到geoserver和自己的系统可能不在同一台电脑上,所以通过ftp来远程操作文件。
因为之前一直没有用过FTP在java中调用远程文件,所以在网上找了些资料,经过一番翻找,发现Apache的FTPClient工具是比较成熟,且稳定的ftp工具。遂在网上找了一个现成的工具类。放在项目中测试,没有问题。因为开发过程中测试只能通过本机或者局域网测试,所以导致测试不全面。当项目部署到服务器之后,用FTPClient的工具类调用远程服务器的文件进行操作的时候,就出现了问题。
首先ftp的远程登录是没有问题的,完全可以登录。但是当我向远程服务器提交删除文件的命令的时候,出现了 500 Invalid PORT Command的错误,在网上查询发现是因为ftp的主动和被动请求的机制的问题。在网上找了一通,并没有发现很有价值且值得参考的文章,所以我就只好通过FTPClient的官方API入手,看是否有价值的提示,在API中的一个常亮的解释中,发现了一丝端倪,API解释如下:
PASSIVE_LOCAL_DATA_CONNECTION_MODE
该常量的设置是通过下面这个方法实现的:
enterLocalPassiveMode
最后,在每个执行相关fpt操作的方法前我都调用了此方法,完美解决问题。问题最终解决是通过这么一个原理:既然主动不好使,那么只能通过被动请求咯。
虽然上面的解释有些牵强,但是,问题能得到解决还是很开心,特此记录。
但是通过ftp方位远程服务器,操作文件非常耗时,不知道是我同时操作的文件量多还是,所有ftp操作都是如此,如果有此方面经验的同仁,希望不吝赐教。
- 关于FTPClient(Apache的commons.net包下的)研究
- ftpClient(apache提供的commons-net-3.3)
- org.apache.commons.net.ftp下的FTPClient类缓冲区大小设置无效
- 让Apache的commons-net-3.3中的FTPClient支持中文
- 让Apache的commons-net-3.3中的FTPClient支持中文
- Commons-net FTPClient上传下载的封装
- Commons-net FTPClient上传下载的封装
- org.apache.commons.lang.builder包下的一些常用类的研究与应用
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- 引用 commons.net包中的FTPClient.listFiles()方法返回null的问题及其解决方案(转)
- org.apache.commons.net.ftp.FTPClient使用
- org.apache.commons.net.ftp.FTPClient 例子
- org.apache.commons.net.ftp.FTPClient
- org.apache.commons.net.ftp Class FTPClient
- apache.commons.net.ftp.FTPClient上传FTP
- org.apache.commons.net.ftp.FTPClient
- 中文FTP环境下,使用commons-net,FTPClient.listFiles()方法返回null的问题及解决办法
- 【JZOJ 4922】环
- 编码:隐匿在计算机软硬件背后的语言(8)--自动操作(二)
- 算法入门经典2 第4章解题报告
- 出来报个到
- mybatis的动态SQL与模糊查询
- 关于FTPClient(Apache的commons.net包下的)研究
- eclipse 突然一直 报 An internal error occurred during: "Building workspace".
- Fedora 25 Workstation 安装指南
- 欢迎使用CSDN-markdown编辑器
- PAT A1007
- 移动互联网时代的营销
- SUMO应用工具:MAROUTER
- 拖拽事件
- 欢迎使用CSDN-markdown编辑器