我正在重構其他代碼。我注意到的一點是關於系統如何從連接池獲取連接的方式。從連接池獲取數據庫連接
樣品是這樣的。在每次調用服務方法時,系統都會在數據源的JNDI上進行上下文查找。
public class CheckinServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//Obtain Connection
InitialContext initialContext = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) initialContext
.lookup("jdbc/mysqldb");
java.sql.Connection conn = ds.getConnection();
//business logic
//redirect
} finally {
conn.close();
}
}
}
我認爲每次都會有這樣的表現。我在想如何從連接池中檢索連接。
我在考慮使用servlet的init()
方法,但我認爲這不是最優的。
嗨,先生,謝謝你總是詳細的答案。但有一件事讓我想起這件事。爲什麼將數據源對象作爲上下文範圍參數放置?不管我們只是讓getDataSource()方法是靜態的?我非常喜歡這個答案,但我想進一步瞭解這樣做的原因。謝謝.. – 2010-12-21 02:42:42
看到它也很好的設計。一個'DataSource'特定於一個'Config'實例,而不是多個'Config'實例。即使在這種情況下只有一個。 – BalusC 2010-12-21 02:51:13
調用contextDestroyed(ServletContextEvent)時數據庫連接是否關閉? – 2011-04-07 15:22:25