2011-10-25 35 views
1

我正在使用Java Server Faces(JSF)創建基於Web的應用程序。我只想知道數據庫連接是否打開並且用戶離開了網頁(關閉瀏覽器),JSF是否會自動關閉此連接?如果用戶在JSF中離開頁面,數據庫連接會關閉嗎?

+0

您是否使用JPA或自己管理數據庫連接? –

+0

你在告訴它做什麼,電腦不會爲自己考慮... –

+0

不,我沒有使用JPA我只是自己管理連接。 – Adan

回答

1

在將數據發送回客戶端之前,您應該立即關閉數據庫連接,然後再將其發送回客戶端。最好在finally區塊中完成。沒有真正的理由讓它保持開放,但它不僅引入了潛在的內存泄漏,而且還存在很大的安全風險。

+1

可以打開和關閉每個事務的數據庫連接嗎?這是我目前在我的應用程序中的方法。我認爲這會給服務器帶來太多的負擔,所以我正在想辦法解決這個問題。數據庫池會解決這個問題嗎? – Adan

+0

爲每個事務打開一個新連接是標準方法。但是你是對的,連接池確實可以提高性能。好點子! – Pete

3

用戶離開頁面不能影響數據庫連接。用戶請求一個頁面,服務器響應。這是他們相互溝通的結束。如果用戶關閉瀏覽器或按下服務器,則不會通知此事。

在創建HTTP響應之前,您可以關閉它的唯一地方是在您的Java代碼中。

+1

它取決於託管bean的範圍。如果服務器從同一會話中獲取新請求(不同頁面),ViewSoped和RequestScoped bean將被刪除。在會話超時之前,關閉瀏覽器當然不會被服務器檢測到。 –

+0

是的,但關閉瀏覽器的用戶沒有這種效果。而新的請求仍然意味着執行一些Java代碼來生成新的HTTP響應等。 –

+1

你說得對,只是編輯了我的第一條評論。 –

0

如果您關閉數據庫連接,或者連接池(如果關閉它)或數據庫連接池被垃圾收集,則數據庫連接將關閉。

相關問題