我有这个问题,当@Predestroying我的应用程序数据源连接没有关闭时,有什么想法吗?
@PreDestroy
public void freeDatasource() {
try {
System.out.println("---------"+ds.getConnection().isClosed());
ds.getConnection().close();
System.out.println("-------"+ds.getConnection().isClosed());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出是: - - -假 ----假
三江源
答案 0 :(得分:1)
这是因为每次调用ds.getConnection()时,您的dataSource都将返回池中的一个连接实例。因此,如果您想测试连接是否关闭,您最好将其分配给变量然后进行测试。
public void freeDatasource() {
Connection conn = ds.getConnection;
try {
System.out.println("---------"+conn.isClosed());
conn.close();
System.out.println("-------"+conn.isClosed());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}