/** Allocates a connection. */ private Object allocateConnection( ManagedConnectionFactory mcf, Subject subject, ConnectionRequestInfo info) throws ResourceException { UserPoolItem userPoolItem = null; try { while (true) { userPoolItem = null; UserTransactionImpl transaction = _tm.getUserTransaction(); if (transaction != null) userPoolItem = allocateShared(transaction, mcf, subject, info); if (userPoolItem == null) userPoolItem = allocatePoolConnection(mcf, subject, info, null); Object userConn; userConn = userPoolItem.allocateUserConnection(); if (userConn != null) { userPoolItem = null; return userConn; } userPoolItem.close(); } } finally { if (userPoolItem != null) userPoolItem.close(); } }
private void fillIdlePool() { int count = _minIdleCount; try { while (_connectionPool.size() < _minIdleCount && count-- >= 0 && _lifecycle.isActive()) { Subject subject = null; ConnectionRequestInfo info = null; UserPoolItem userPoolItem; userPoolItem = createConnection(_mcf, subject, info, null); if (userPoolItem != null) userPoolItem.toIdle(); } } catch (Exception e) { e.printStackTrace(); log.log(Level.FINE, e.toString(), e); } }