我已经为我的移动应用程序使用Servlets开发了一些JSON Web服务。我正在使用(Oracle + Private Tomcat)托管。我有一个单独的类DBOperations.java,它有很多静态函数,在Servets中调用以进行数据库操作。我在每个函数中使用getConnection()方法来获取Connection Object,create statement和execute queries。问题是在一段时间后连接丢失。我使用以下代码重新建立连接。
public static Connection conn;
Statement stmt;
public static Connection getConnection() throws SQLException {
if (conn == null || conn.isClosed() ) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(DB_URL, "username", "password");
return conn;
} catch (ClassNotFoundException | SQLException ex) {
}
} else {
return conn;
}
return conn;
}
我无法弄清楚如何处理超时/关闭连接问题,因为上面的代码没有重新建立连接。我需要重新启动Tomcat以使其恢复工作状态。任何建议或帮助都非常感谢。
答案 0 :(得分:1)
您必须使用连接池,并让Tomcat服务器处理所有事情。创建一个JNDI数据源来实现同样的目标,你永远不会遇到这样的问题。
答案 1 :(得分:0)
使用OraceDataSource进行连接池并且它可以正常工作。
public static OracleDataSource ods;
public static Connection getConnection() throws SQLException {
if (ods == null) {
ods = new OracleDataSource();
ods.setURL(DB_URL);
ods.setUser("username");
ods.setPassword("password");
}
return ods.getConnection();
}