專案中需要用到ftp,經常性的開關會造成極大的開銷,效率比較低。就想封裝乙個ftp連線池,不過遺憾的是沒有找到現成的,只得根據別人提供的思路來實現了。
建立若干個ftp連線,然後將這些連線放入阻塞佇列blockingqueue中,每次使用時從佇列中獲取乙個連線,使用完成後將連線重新插入佇列中。
實現 objectpool介面就可以實現乙個簡單的自定義連線池。
public class ftpclientpool implements objectpool
public ftpclientpool(int poolsize, ftpclientfactory factory) throws exception
/*** 初始化連線池
* @param maxpoolsize
* 最大連線數
* @throws exception
*/private void initpool(int maxpoolsize) throws exception
} /**
* 從連線池中獲取物件
*/@override
public ftpclient borrowobject() throws exception else if(!factory.validateobject(client))
return client;
} /**
* 返還乙個物件(鏈結)
*/@override
public void returnobject(ftpclient client) throws exception catch (exception e)
}} /**
* 移除無效的物件(ftp客戶端)
*/@override
public void invalidateobject(ftpclient client) throws exception
/*** 增加乙個新的鏈結,超時失效
*/@override
public void addobject() throws exception
/*** 重新連線
*/public ftpclient reconnect() throws exception
/*** 獲取空閒鏈結數(這裡暫不實現)
*/@override
public int getnumidle()
/*** 獲取正在被使用的鏈結數
*/@override
public int getnumactive()
@override
public void clear() throws exception
/*** 關閉連線池
*/@override
public void close()
} catch(exception e) ", e);
}} @override
public void setfactory(poolableobjectfactoryfactory) throws illegalstateexception, unsupportedoperationexception
/*** 增加乙個新的鏈結,超時失效
*/public void addobject(ftpclient ftpclient) throws exception
}
ftp連線池的實現
類似資料庫連線,ftp連線也是乙個比較浪費時間的連線,為了高效快速獲取連線,對連線數量和資源進行有效管理,引入了連線池比較合理。引入上述的jar包後,手動配置下面幾步就可以使用了。使用步驟 ftp.host ftp.port ftp.username x ftp.password x ftp.enc...
JDBC連線池實現
jdbc connection pool 的注意事項有 1.有乙個簡單的函式從連線池中得到乙個 connection。2.close 函式必須將 connection 放回 資料庫連線池。3.當資料庫連線池中沒有空閒的 connection,資料庫連線池必須能夠自動增加 connection 個數。...
Java實現連線池
連線池原理,非常透徹 public class connectionpool catch exception e try catch exception e static catch filenotfoundexception e catch ioexception e 建立乙個資料庫連線池,連線池...