Java / JDBC:发生异常时关闭数据库连接的最佳设计模式

我是Java的新手(我正在使用Java 6)。我一直在对所有Java POJO和servlet使用以下设计模式,以通过GlassFish 3.1.2

Web服务器访问Oracle 11G数据库。

耗尽所有可用进程(或会话,不确定是什么区别)后,我遇到间歇性数据库错误(ORA-12519),这使我开始思考应用程序未在释放进程。

查看下面的设计模式,是否有更好的方法来确保在发生异常时释放与数据库的JDBC连接?例如,是否还应该将if ( conn != null)

conn.close();代码放在catch块内?还是有更好的设计模式?在此先感谢您的任何评论/提示。

public String MyFunction() throws Exception {

Connection conn;

CallableStatement cs;

try {

Context context = new InitialContext();

DataSource ds = (DataSource)context.lookup("jdbc/MyPool");

conn = ds.getConnection();

cs = conn.prepareCall( "{call my_sproc (?)}" );

cs.registerOutParameter(1, Types.VARCHAR);

cs.execute();

String outParam = cs.getString(1);

if ( conn != null ) // close connection

conn.close();

} catch (Exception e) {

outParam = "an error occurred";

}

return outparam;

}

回答:

if ( conn != null )  // close connection

conn.close();

在此行conn不能 为null。直到Java 6为止,最受欢迎的模式是:

Connection conn = null;

try {

// initialize connection

// use connection

} catch {

// handle exception

} finally {

if (conn != null) {

try { conn.close(); } catch (Exception e) { /* handle close exception, quite usually ignore */ }

}

}

使用 ,它的try-with-

resource结构将变得不那么麻烦。上面的代码可以更改为更短

try (Connection conn  = createConnection()) {

// use connection

} catch {

// handle exception

}

// close is not required to be called explicitly

以上是 Java / JDBC:发生异常时关闭数据库连接的最佳设计模式 的全部内容, 来源链接: utcz.com/qa/413517.html

回到顶部