Я новичок в 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;
}