4

我正在編寫一個Rest服務,它連接到FTP服務器以讀取一些文件,然後對讀取的數據執行一些操作以提供服務請求。我正在使用Apache公用程序FTPClientFTPClient Pool - Java

作爲臨時解決方案,我創建了一個FTPClient對象 - 然後將其連接 - 然後使用憑據登錄 - 在方法內(客戶端是此方法的本地 - 執行此操作時爲FTPClient不是線程安全的)我的數據訪問層,然後在退出方法之前將其斷開連接(即在讀取文件後)。問題是,FTPClient需要3-7秒鐘才能登錄,這非常高。所以我在考慮實現一個FTPClientPool,它可以在數據訪問方法中提供已經準備好的客戶端。

是否有這樣的ClientPools已經存在?

如果是,那麼我應該選擇什麼?

如果否,實現的難度一旦創建並連接,apache FTPClient保持活動狀態多久?爲無限的時間? (我的意思是什麼是FTPClient的默認保持活動時間 - 在客戶端斷開連接後的空閒時間 - 因爲我在java文檔中看到了各種各樣的時間。:()接下來的問題是如何讓它永遠活着??(可發送定期後NOOPS在一個單獨的線程?)任何有關我應該如何前進是真正有用樣的幫助。

感謝&問候

回答

2

,爲客戶閒置超時一般是確定。服務器端

下面是一些較爲明顯的非客戶端參數的:

  • soTimeout - 確定客戶端阻塞等待消息的時間。通常,您每隔一段時間輪詢一次套接字,這就決定了在輪詢期間等待的時間。
  • soLinger - 確定close()被調用後保持連接的時間。

從我使用FTP的經驗,他們通常只是重新連接,如果連接關閉 - 這不是正常至關重要有不同於其他應用程序的恆定不間斷的連接。

你在使用FTP的 - 它通常不是時間關鍵的服務...

+0

嗨菲利普,感謝您的迴應。正如我所提到的 - 我的REST服務中的數據訪問層與FTP Server.And會談,對我來說非常重要,如果不是太重要的話。 – 2013-03-01 04:11:03

0

至於ClientPools,我正好寫了一個示範項目。 commons-pool-ftp

我正在通過我們的經驗ftp協議, 惹惱了一點點,就只是從池中獲取客戶端上進行測試時滿足破裂的管道

testOnBorrow=true