public static boolean isValid(DatasourceConnection dc, Boolean autoCommit) { try { if (dc.getConnection().isClosed()) return false; } catch (Throwable t) { return false; } try { if (dc.getDatasource().validate() && !DataSourceUtil.isValid(dc, 10)) return false; } catch (Throwable t) { } // not all driver support this, because of that we ignore a error here, also protect from java // 5 try { if (autoCommit != null) dc.getConnection().setAutoCommit(autoCommit.booleanValue()); } catch (Throwable t) { return false; } return true; }
public void releaseDatasourceConnection(DatasourceConnection dc, boolean closeIt) { if (dc == null) return; DCStack stack = getDCStack(dc.getDatasource(), dc.getUsername(), dc.getPassword()); synchronized (stack) { if (closeIt) IOUtil.closeEL(dc.getConnection()); else stack.add(dc); int max = dc.getDatasource().getConnectionLimit(); if (max != -1) { _dec(dc.getDatasource()); stack.notify(); } else _dec(dc.getDatasource()); } }