Especially as JDBC says:

"Calling the method close on a Connection  object that is already
closed is a no-op."

I think this came up before though, so I suspect there's a good reason.

Hen

On Nov 19, 2007 4:28 PM,  <[EMAIL PROTECTED]> wrote:
> To Whom It May Concern:
>
> Why is it necessary to throw a new SQLException("Already closed") when
> the purpose of the close() method is to close the connection. Seems to
> me this Exception is not necessary.
>
> In my code (Tomcat/DBCP/iBATIS) apparently iBATIS is trying to close an
> already closed connection( without checking ) and this causes the
> close() method to throw the exception.
>
> Any design thoughts are greatly appreciated.
>
> Thanks,
>
> Jeff
>
>     /**
>      * Returns me to my pool.
>      */
>      public synchronized void close() throws SQLException {
>         boolean isClosed = false;
>         try {
>             isClosed = isClosed();
>         } catch (SQLException e) {
>             try {
>                 _pool.invalidateObject(this); // XXX should be guarded
> to happen at most once
>             } catch (Exception ie) {
>                 // DO NOTHING the original exception will be rethrown
>             }
>             throw new SQLNestedException("Cannot close connection
> (isClosed check failed)", e);
>         }
>         if (isClosed) {
>             try {
>                 _pool.invalidateObject(this); // XXX should be guarded
> to happen at most once
>             } catch (Exception ie) {
>                 // DO NOTHING, "Already closed" exception thrown below
>             }
>             throw new SQLException("Already closed.");
>         } else {
>             try {
>                 _pool.returnObject(this); // XXX should be guarded to
> happen at most once
>             } catch(SQLException e) {
>                 throw e;
>             } catch(RuntimeException e) {
>                 throw e;
>             } catch(Exception e) {
>                 throw new SQLNestedException("Cannot close connection
> (return to pool failed)", e);
>             }
>         }
>     }
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to