文件名称:ftp连接池实例
文件大小:187KB
文件格式:RAR
更新时间:2014-11-23 10:51:01
ftp 连接池
经过几天的琢磨,去看了csdn上一位大牛的数据库的连接池实现方案,从中感悟很多,感谢这位大神。 让我才能有信心去坚持下去。也不知道写的好不好··不好的话,大家指出。但是我是努力去做了,这一个过程,很享受,大家互相学习吧~ 其实ftp连接池跟数据库连接池的原理是差不多的,不同的是ftp连接池有个连接时间的限制,如果你没设置的话,它的默认连接服务器的时间是0,所以我们要合理的设置它的服务器的时间,ftp.setConnectTimeout(5000);在这里设置了它的时间是5s。 写ftp连接池的目的就是合理的利用资源,本文的目的是在初始的时候,创建10个Ftp连接,放到一个队列中去,当多个用户同时去下载ftp上的文件的时候,就会从队列中取,若当前的队列中存在着空闲的连接,就获取该ftp的连接,并设置此连接为忙的状态,否则就在创建新的连接到连接池中去(有最大的连接池数的限制,不能超过这个连接数,超过的话,就会进入等待状态,直到其它连接释放连接),在执行下载操作的前对登录ftp时间进行判断。看是否超时,超时的话,就重新连接到ftp服务器,在这里我所做的操作就是,在开始创建ftp连接池的时候,记录下系统的当前时间,例如为:long beginTime=System.currentTimeMillis(),在取文件之前获得 当前系统的时间 long endTime=System.currentTimeMillis(),此时我们就可以获得系统登录ftp的时间time=endTime-beginTime,在此我们可以用time与ftp最大登录服务器时间(ftpPool.getConnection();)进行比较。 当然了,在操作完之后我们需要将所操作的连接池中的ftp设置为空闲状态。代码在文件中,为了测试,我本地自己创建了一个ftp服务器,创建ftp的方法,大家可以到网上查资料,我用的是Serv-U工具。傻瓜式的。所用到的jar包是commons-net2.0.
【文件预览】:
ftpConnection
----bin()
--------FtpUtil.class(1KB)
--------FtpPoolManager.class(1KB)
--------FtpTest.class(2KB)
--------FtpPool.class(5KB)
--------Test1.class(914B)
----.settings()
--------org.eclipse.jdt.core.prefs(629B)
----src()
--------FtpPool.java(7KB)
--------FtpPoolManager.java(681B)
--------FtpUtil.java(746B)
--------FtpTest.java(1KB)
--------Test1.java(500B)
----.project(389B)
----hs_err_pid2412.log(7KB)
----.classpath(367B)
commons-net-2.01.jar