MySQLで接続の失効を判断する方法
接続が停止したり、接続がタイムアウトしたりするなど、データベース接続が無効になったかどうかについては、Connectionインタフェースが提供するisClosed()メソッドを使用して判断することがよくあります.しかし,坑人的なのは,各メーカーが駆動中にこの方法の実現にあまりよくないことである.MySQLでは、データベース接続が無効になったのにisClosed()メソッドはtrueを返します.数回の苦痛を経て、多くの資料を探して、やっと正しい方法を見つけて、接続が失効したかどうかを判断しました.あまり話さないで、直接コードを貼ってください.
キーはcomを使うことです.mysql.jdbc.Connectが提供するping()メソッド.この方法により,接続が失効したか否かを正確に判断できる.
/**
* To detect if the connection is closed by the server as connection is timeout.
* @author Martin
* @param conn
* @return true if the connection is normal, otherwise, return false.
*/
private boolean validate(Connection conn)
{
boolean isValidated = true;
try {
com.mysql.jdbc.Connection c = (com.mysql.jdbc.Connection)conn;
c.ping();
} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
isValidated = false;
}
return isValidated;
}
キーはcomを使うことです.mysql.jdbc.Connectが提供するping()メソッド.この方法により,接続が失効したか否かを正確に判断できる.