我在 J2ee 应用程序中遇到了 StaleConnectionException。我已经研究(并搜索)并找到了解决方案。
这里是。
public static Connection getConnection() {
Connection conn = null;
try {
if (ds == null) ds = (DataSource) new Utility.makeLookup();
conn = ds.getConnection();
conn.setAutoCommit(false);
// Check quality of return connection
Statement stmt = conn.createStatement();
stmt.executeQuery("Select 1 from dual");
stmt.close();
} catch (Throwable t) {
try {
// Recovery
ds = (DataSource) new Utility.makeLookup();
conn = ds.getConnection();
conn.setAutoCommit(false);
return conn;
} catch (Throwable t2) { /* RIP */ }
}
return conn;
}
我不喜欢这个解决方案,因为如果我必须管理 StaleConnectionException,我在第一次方法调用时会有 6 秒的第一延迟。
我做了一个解决方法:在新的浏览器会话开始时测试连接,但我也不喜欢这样。
我可以实施更好的东西吗?
先感谢您。
嘎嘎