JDBC Connection.isValid() 用于单线程永久连接?
JDBC Connection.isValid() for single threaded permanent connection?
我正在编写一个应用程序,其中一个线程将使用 JDBC 永久连接到 MySQL 数据库,并且没有其他线程会使用此连接。
我的想法是这样的:
import java.sql.Connection;
public class ConHolder {
private Connection con;
public Connection getConnection(int checkTimeout) {
if(!con.isValid(checkTimeout)) {
con.close();
con = createNewConnection();
}
return con;
}
private Connection createNewConnection() {
return /* a newly created connection */;
}
}
这样可以吗?或者是否需要实际的连接池?
我觉得还可以,差不多吧。唯一可能的问题是:
isValid
在 Java 6 之前不可用,并且
仍然存在潜在的故障模式,即应用程序调用 isValid
和尝试使用该连接执行重要操作之间的连接出现问题1.
1 - 请注意,您可以获得与典型连接池相同的故障模式。唯一真正的解决方案是通过重新启动事务处理连接断开导致 SQLException 的情况。
我正在编写一个应用程序,其中一个线程将使用 JDBC 永久连接到 MySQL 数据库,并且没有其他线程会使用此连接。
我的想法是这样的:
import java.sql.Connection;
public class ConHolder {
private Connection con;
public Connection getConnection(int checkTimeout) {
if(!con.isValid(checkTimeout)) {
con.close();
con = createNewConnection();
}
return con;
}
private Connection createNewConnection() {
return /* a newly created connection */;
}
}
这样可以吗?或者是否需要实际的连接池?
我觉得还可以,差不多吧。唯一可能的问题是:
isValid
在 Java 6 之前不可用,并且仍然存在潜在的故障模式,即应用程序调用
isValid
和尝试使用该连接执行重要操作之间的连接出现问题1.
1 - 请注意,您可以获得与典型连接池相同的故障模式。唯一真正的解决方案是通过重新启动事务处理连接断开导致 SQLException 的情况。