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;
}
8
задан ggkmath 22 June 2012 в 18:24
поделиться