@Override
 public void close() {
   RuntimeException closeError = null;
   if (transferList != null) {
     synchronized (this) {
       for (Transfer transfer : transferList) {
         try {
           traceOperation("SESSION_CLOSE", 0);
           transfer.writeInt(SessionRemote.SESSION_CLOSE);
           done(transfer);
           transfer.close();
         } catch (RuntimeException e) {
           trace.error(e, "close");
           closeError = e;
         } catch (Exception e) {
           trace.error(e, "close");
         }
       }
     }
     transferList = null;
   }
   traceSystem.close();
   if (embedded != null) {
     embedded.close();
     embedded = null;
   }
   if (closeError != null) {
     throw closeError;
   }
 }
Beispiel #2
0
 protected void finalize() {
   if (!SysProperties.runFinalize) {
     return;
   }
   if (isInternal) {
     return;
   }
   if (session != null && openStackTrace != null) {
     trace.error("Connection not closed", openStackTrace);
     try {
       close();
     } catch (SQLException e) {
       trace.debug("finalize", e);
     }
   }
 }