Tham chiếu đến Tomcat JBDC connection pool, tôi thấy trong ví dụ java độc lập được cung cấp ở đó, một kết nối được sử dụng datasource.getConnection()
thật thú vị. Nhưng trong khối cuối cùng, nó nói con.close()
.Hồ bơi kết nối JDBC Tomcat (phát hành kết nối)
Câu hỏi: Khi tôi triển khai điều này, có vẻ như rõ ràng rằng số con
tôi nhận được từ nguồn dữ liệu sẽ bị đóng mọi lúc trong lần cuối cùng. Khi điều này được đóng lại, cơ chế tổng hợp kết nối sẽ có được một kết nối mới và thêm nó vào hồ bơi?
Tôi giả sử có một cuộc gọi phương thức như releaseConnection()
để cho hồ bơi tự quyết định có nên đóng cửa hay để nó mở cho một số mục đích sử dụng khác.
Tôi cũng đã thử làm điều này ConnectionPool aPool = datasource.createPool();
Nhưng tôi thấy không có kết nối phát hành nào giống như trên aPool
này.
Tôi nghĩ tôi đang thiếu thứ gì đó ở đây? Đánh giá cao sự giúp đỡ của bạn.
đoạn mã từ Tomcat JBDC connection pool:
DataSource datasource = new DataSource();
datasource.setPoolProperties(p);
Connection con = null;
try {
con = datasource.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from user");
int cnt = 1;
while (rs.next()) {
System.out.println((cnt++)+". Host:" +rs.getString("Host")+
" User:"+rs.getString("User")+" Password:"+rs.getString("Password"));
}
rs.close();
st.close();
} finally {
if (con!=null) try {con.close();}catch (Exception ignore) {}
}
Giữ cài đặt "MaxIdle" của DataSource đủ cao để nhận các kết nối đó không bị đóng. Đặt nó thành 0 sẽ tắt mọi kết nối đã đóng, tôi đoán vậy. – Hartmut