connection.deallocate();
destroyConnection(connection);
    public void put(PooledObject connection) throws SQLException {        try {            if (blocked && getLogger() != null)                getLogger().warn("Pool " + queueName + " will be unblocked");            if (getConfiguration().isPooling()) {                queue.put(connection);                                // save timestamp when connection was returned to queue                connectionIdleTime.put(                    connection, new Long(System.currentTimeMillis()));                    size++;            } else {                connectionIdleTime.remove(connection);            }            blocked = false;            workingConnections.remove(connection);            // deallocate connection if pooling is not enabled.            if (!getConfiguration().isPooling())                connection.deallocate();            if (LOG_DEBUG_INFO && getLogger() != null)                getLogger().debug("Thread "                        + Thread.currentThread().getName()                        + " released connection.");        } catch (InterruptedException iex) {            if (getLogger() != null)                getLogger().warn("Thread "                    + Thread.currentThread().getName()                    + " was interrupted.",                    iex);            connection.deallocate();        }    }