Algo como:
Statement stmt = null;
ResultSet rs =null;
try {
stmt = conn.createStatement();
// oracle
rs = stmt.executeQuery("SELECT 1 FROM Dual");
// others
// rs = stmt.executeQuery("SELECT 1");
if (rs.next())
return true; // connection is valid
}
catch (SQLException e) {
// TODO : log the exception ...
return false;
}
finally {
if (stmt != null) stmt.close();
if (rs != null) rs.close();
}
Tenga en cuenta que si la conexión proviene de un grupo de conexiones (en un servidor de aplicaciones, por ejemplo), el grupo puede tener un mecanismo para verificar si una conexión es válida o no. Con BEA, especifica el SELECT en la propiedad "test-on-reserve".
Si está desarrollando su propia piscina, es posible que desee ver cómo lo están haciendo otros (por ejemplo, Proxool).