ftp連線池實現

2021-07-28 02:35:08 字數 1717 閱讀 7181

專案中需要用到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 建立乙個資料庫連線池,連線池...