我是 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;
}