JDBC'yi kullanmak için standart kod bölümümüz ...
Connection conn = getConnection(...);
Statement stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rset = stmt.executeQuery (sqlQuery);
// do stuff with rset
rset.close(); stmt.close(); conn.close();
Soru 1: Bağlantı Havuzu kullanılırken sonunda Bağlantı kapatılmalı mı? Öyleyse, havuz oluşturmanın amacı kaybolmaz mı? Ve değilse, DataSource belirli bir Connection örneğinin serbest kaldığını ve yeniden kullanılabileceğini nasıl biliyor? Bu konuda biraz kafam karıştı, herhangi bir işaretçi takdir etti.
Soru 2: Aşağıdaki yöntem standarda yakın bir şey mi? Havuzdan bir bağlantı alma girişimi gibi görünüyor ve DataSource kurulamıyorsa, eski moda DriverManager'ı kullanın. Çalışma zamanında hangi parçanın yürütüldüğünden bile emin değiliz. Yukarıdaki soruyu tekrar edersek, böyle bir yöntemden çıkan Bağlantı kapatılmalı mı?
Teşekkürler - MS.
synchronized public Connection getConnection (boolean pooledConnection)
throws SQLException {
if (pooledConnection) {
if (ds == null) {
try {
Context envCtx = (Context)
new InitialContext().lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/NamedInTomcat");
return ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
}}
return (ds == null) ? getConnection (false) : ds.getConnection();
}
return DriverManager.getConnection(
"jdbc:mysql://"+ipaddy+":"+dbPort +"/" + dbName, uName, pWord);
}
Düzenleme: Yığın izi görmediğimiz için havuzlanmış bağlantıyı elde ettiğimizi düşünüyorum.