code: @PreDestroy
      public synchronized void close() {
          for (LjtLinkedList.Entry entry = freePool.getFirstEntry(); entry != null; entry = entry.getNext()) {
              final FreeItem item = (FreeItem) entry.getElement();
              item.getConnection().closeReally();
              item.destroy();
          }
          freePool.clear();
          for (Iterator<ConnectionWrapper> ite = txActivePool.values().iterator(); ite.hasNext();) {
              final ConnectionWrapper wrapper = ite.next();
              wrapper.closeReally();
          }
          txActivePool.clear();
          for (Iterator<ConnectionWrapper> ite = activePool.iterator(); ite.hasNext();) {
              final ConnectionWrapper wrapper = ite.next();
              wrapper.closeReally();
          }
          activePool.clear();
          timeoutTask.cancel();
      }
docs: =====