/** * Create or obtain a {@link PreparedStatement} from my pool. * * @return a {@link PoolablePreparedStatement} */ public synchronized PreparedStatement prepareStatement(String sql) throws SQLException { try { return (PreparedStatement) (_pstmtPool.borrowObject(createKey(sql))); } catch (NoSuchElementException e) { throw new SQLNestedException("MaxOpenPreparedStatements limit reached", e); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new SQLNestedException("Borrow prepareStatement from pool failed", e); } }