Java / JDBC: Bestes Entwurfsmuster, um die Datenbankverbindung zu schließen, wenn eine Ausnahme auftritt

Ich bin neu in Java (ich benutze Java 6). Ich habe für alle meine Java-POJOs und -Servlets das folgende Entwurfsmuster verwendet, um über den GlassFish 3.1.2-Webserver auf eine Oracle 11G-Datenbank zuzugreifen.

Ich erhalte einen zeitweiligen Datenbankfehler (ORA-12519), wenn alle verfügbaren Prozesse (oder Sitzungen, bei denen der Unterschied nicht bekannt ist) belegt sind, was mich zu der Annahme veranlasst, dass die Prozesse nicht von der Anwendung freigegeben werden.

Gibt es im folgenden Entwurfsmuster eine bessere Möglichkeit, um sicherzustellen, dass die JDBC-Verbindung zur Datenbank im Falle einer Ausnahme freigegeben wird? Zum Beispiel soll ich das auch platzierenif ( conn != null) conn.close(); Code INNERHALB des Fangblocks? Oder gibt es ein besseres Designmuster? Vielen Dank im Voraus für alle Kommentare / Hinweise.

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage