public void finalize() {
   if (closed.compareAndSet(false, true)) {
     for (CloseTask closeTask : closeTasks) {
       closeTask.close(true);
     }
   }
 }
 public void close() throws NamingException {
   if (closed.compareAndSet(false, true)) {
     for (CloseTask closeTask : closeTasks) {
       closeTask.close(false);
     }
   }
 }