2015-09-20 47 views
-1

對於Java來說,我是一個新手,並且已經開始使用Tomcat開發Web應用程序。我很快注意到的一件事是,我的Servlet類正在實例化一次,然後在未來的請求中重用。我發現這是因爲我在構造函數中創建數據庫連接,但是在Http方法本身中關閉它。雖然這不起作用;第二個請求失敗,因爲連接已經關閉!何時與Java/Tomcat建立數據庫連接

果然,在構造函數中設置時間戳並將其轉儲到Http方法中會在未來的請求中顯示與第一個請求中相同的時間戳。

所以,現在我想知道我是否應該在構造函數中建立數據庫連接,並允許該連接保持未來請求,或者如果我應該建立與每個請求的新連接。

在構造函數中建立連接的明顯優點是它可以節省後續額外連接的需求,但是當然顯而易見的缺點是連接在即使不需要時也保持打開狀態。

在這個決定中還有哪些其他因素可能不被考慮?什麼是「標準」的方式來做到這一點?

在此先感謝!

回答

0

開放爲每個請求的連接,而是使用connection pool,使關閉連接實際上並沒有關閉它,但是把它放回可用,打開連接池。

請注意,在構造函數中打開連接時最重要的問題並不是它保持打開狀態。主要的問題是兩個處理兩個單獨客戶端的請求的線程會使用相同的連接,互相搞砸:第一個線程中的異常會回滾第一個線程所做的更改。在一個線程中提交會提交在另一個線程中完成的部分更改。這是你必須絕對避免的。

+0

感謝您的迴應!我現在正在經歷建立連接池的過程。是的,在線程之間共享資源方面,我完全明白你的觀點,而且這一點在我看來並沒有發生! –

相關問題