java – 我是否正确关闭了这个Oracle池连接?
发布时间:2020-12-15 08:41:06 所属栏目:Java 来源:网络整理
导读:我试图在 Java中使用池连接到我的Web应用程序.我正在使用Oracle数据库,这是我的代码: public class DatabaseHandler{ static private Connection m_database = null; static private OracleConnectionPoolDataSource pooledSource = null; /** * Attempts t
我试图在
Java中使用池连接到我的Web应用程序.我正在使用Oracle数据库,这是我的代码:
public class DatabaseHandler { static private Connection m_database = null; static private OracleConnectionPoolDataSource pooledSource = null; /** * Attempts to open an Oracle database located at the specified serverName and port. * @param serverName Address of the server. * @param portNumber Port to connect to. * @param sid SID of the server. * @param userName Username to login with. * @param password Password to login with. * @throws WebApplicationException with response code 500 Internal Server Error. */ static public void openDatabase(String userName,String password,String serverName,int portNumber,String sid) throws WebApplicationException { try { // Load the JDBC driver String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName); // Create a connection to the database String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid; pooledSource = new OracleConnectionPoolDataSource(); pooledSource.setUser(userName); pooledSource.setURL(url); pooledSource.setPassword(password); m_database = pooledSource.getConnection(); } catch (ClassNotFoundException e) { // Could not find the database driver throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } catch (SQLException e) { // Could not connect to the database throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } } /** * Attempts to execute the specified SQL query. * @throws WebApplicationException with a response code of Bad Request * if the query is invalid SQL. */ static public ResultSet makeQuery(String query) throws WebApplicationException { ResultSet rs = null; if (m_database != null) { try { Statement stmt = m_database.createStatement(); rs = stmt.executeQuery(query); } catch (SQLException e) { // invalid query System.out.println(query); throw new WebApplicationException(Response.Status.BAD_REQUEST); } } return rs; } /** * Attempts to close the database. * @throws WebApplicationException with a response code of 500 Server error */ static public void closeDatbase() throws WebApplicationException { try { m_database.close(); pooledSource.close(); } catch(SQLException e) { throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } } } 我在Eclipse中这样做,我发出警告,pooledSource.close()已被弃用.我以前从未使用过汇集连接,我只是想确保我正在做的一切正确.有没有更好的方法来关闭Oracle池化资源? 解决方法
不推荐使用的方法意味着不应使用此方法.在将来的版本中,可以完全清除close()方法.我建议删除pooledSource.close().
此外,我建议不要有一个Connection和DataSource的静态实例,因为您需要连接请求并且不要在整个应用程序中保持活动状态.始终首先关闭ResultSet,然后关闭Connection,并通过在finally块中添加它们来保证关闭. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读