Java Oracle JDBC连接超时

时间:2014-08-01 06:09:22

标签: oracle servlets jdbc

我已经为我的移动应用程序使用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以使其恢复工作状态。任何建议或帮助都非常感谢。

2 个答案:

答案 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();
        }