目前我使用單獨的DBConnectionManager類來處理連接池,但我也意識到這是錯誤的方式,因爲每次doGet()時servlet都不會調用同一個池,被執行。針對Servlets的JDBC連接池
- 有人可以向我解釋爲什麼會出現上述情況嗎?
- JNDI是通過tomcat實現適當連接池的java servlets的方式嗎?
我有2篇文章的鏈接,這是用servlet實現連接池的正確方法嗎?
http://www.javaranch.com/journal/200601/JDBCConnectionPooling.html
http://onjava.com/onjava/2006/04/19/database-connection-pooling-with-tomcat.html
是否有可能保存數據庫管理器對象的背景下,像這樣:
mtdb = (MTDbManager) context.getAttribute("MTDBMANAGER");
if (mtdb == null) {
System.out
.println("MTDbManager is null, reinitialize MTDbManager");
initMTDB(config);
context.setAttribute("MTDBMANAGER", mtdb);
}
然後我打電話mtdb.getInstance()的getConnection()和。它會一直引用這個對象。
謝謝。
又一個問題,並做JNDI正確連接池?含義我將最大連接數設置爲5,第6個請求進入,JNDI將嘗試重新連接之前執行等待超時。 – Maurice 2012-02-10 09:10:54
JNDI本身不會進行池化,您可以查找一個['javax.sql.DataSource'](http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html)對象爲您提供您需要連接時調用的getConnection()方法。如果沒有可用的連接,則對getConnection()的調用將被阻止。注:每次需要連接時都不必查找JNDI數據源,因此將引用緩存到數據源是非常常見的做法。希望有所幫助。 – beny23 2012-02-10 09:27:20