conn = ds.getConnection();
   public boolean removeReference(Serializable channelID, MessageReference ref) throws Exception   {      if (log.isTraceEnabled()) { log.trace("Removing " + ref + " from channel " + channelID); }            Connection conn = null;      PreparedStatement ps = null;      TransactionWrapper wrap = new TransactionWrapper();      try      {         conn = ds.getConnection();                  ps = conn.prepareStatement(deleteMessageRef);         ps.setString(1, (String)channelID);         ps.setString(2, (String)ref.getMessageID());         int rows = ps.executeUpdate();         if (log.isTraceEnabled()) { log.trace(JDBCUtil.statementToString(deleteMessageRef, channelID, ref.getMessageID()) + " deleted " + rows + " row(s)"); }           return rows == 1;      }      catch (SQLException e)      {         wrap.exceptionOccurred();         throw e;      }      finally      {                  if (ps != null)         {            try            {               ps.close();            }            catch (Throwable e)            {}         }         if (conn != null)         {            try            {               conn.close();            }            catch (Throwable e)            {}         }         wrap.end();      }   }