本文結合 DBConnectionManager 與 DBConnectionPool 類別,示範 Servlet 中使用連線池的完整生命週期與程式碼。
init() 中呼叫 DBConnectionManager.getInstance() 取得管理器引用,存為實例變數service() 中呼叫 getConnection() 取得連線,執行資料庫操作,最後 freeConnection() 歸還連線destroy() 中呼叫 release() 釋放所有資源、關閉所有連線import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet {
private DBConnectionManager connMgr;
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
connMgr = DBConnectionManager.getInstance();
}
public void service(HttpServletRequest req, HttpServletResponse res)
throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
Connection con = connMgr.getConnection("idb");
if (con == null) {
out.println("Cant get connection");
return;
}
ResultSet rs = null;
ResultSetMetaData md = null;
Statement stmt = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
md = rs.getMetaData();
out.println(" Employee data");
while (rs.next()) {
out.println("
");
for (int i = 1; i < md.getColumnCount(); i++) {
out.print(rs.getString(i) + ", ");
}
}
stmt.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace(out);
}
connMgr.freeConnection("idb", con);
}
public void destroy() {
connMgr.release();
super.destroy();
}
}
此範例展示標準的連線池使用模式:初始化一次、請求時借用歸還、銷毀時釋放資源,確保連線高效復用並防止洩漏。