Java / JDBC: лучший шаблон проектирования для закрытия соединения с базой данных при возникновении исключения
Я новичок в Java (я использую Java 6). Я использовал приведенный ниже шаблон проектирования для всех моих Java POJO и сервлетов для доступа к базе данных Oracle 11G через веб-сервер GlassFish 3.1.2.
Я получаю неустойчивую ошибку базы данных (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;
}