我正在尝试克服mysql连接对象超时问题。我使用单例模式来获取连接对象。我的目的是在服务器端的mysql连接对象超时时重新初始化连接对象。以下是我的代码:
public static Connection getConnection() {
try {
// con = dataSource.getConnection();
if(con==null || !con.isValid(0)){
logger.info("Creating new connection object...");
Class.forName(driver);
con = DriverManager.getConnection(url + "/" + dbName, userName, pass);
if(con!=null) logger.info("Connection object creation successful!!");
}else{
logger.info("Returning existing connection object...");
}
} catch (ClassNotFoundException ex) {
logger.error(ex);
} catch (SQLException ex) {
logger.error(ex);
}
return con;
}
以下是我尝试使用isValid
方法时收到的错误消息:
java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
at com.abc.xml2pdf.db.DBUtil.getConnection(DBUtil.java:66)
at com.abc.xml2pdf.dao.RequestTracking.persistRequest(RequestTracking.java:137)
at com.abc.xml2pdf.dao.RequestTracking.trackRequest(RequestTracking.java:78)
at com.abc.xml2pdf.controller.LoginServlet.doGet(LoginServlet.java:61)
at com.abc.xml2pdf.controller.LoginServlet.doPost(LoginServlet.java:79)
当我深入研究问题时,我发现isValid()
中没有实现com.mysql.jdbc.Connection
方法。我错过了什么。或者我将无法使用isValid
与mysql连接器。我正在使用最新的mysql connector 5.0.8。请澄清一下。感谢。