List of usage examples for org.apache.commons.pool ObjectPool borrowObject
Object borrowObject() throws Exception;
From source file:org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl.java
public Connection checkOutJdbcConnection(JdbcConnectionDescriptor jcd) throws LookupException { ObjectPool op = (ObjectPool) poolMap.get(jcd.getPBKey()); if (op == null) { synchronized (poolSynch) { log.info("Create new connection pool:" + jcd); op = createConnectionPool(jcd); poolMap.put(jcd.getPBKey(), op); }/*from w ww. j a va 2 s . com*/ } final Connection conn; try { conn = (Connection) op.borrowObject(); } catch (NoSuchElementException e) { int active = 0; int idle = 0; try { active = op.getNumActive(); idle = op.getNumIdle(); } catch (Exception ignore) { } throw new LookupException("Could not borrow connection from pool, seems ObjectPool is exhausted." + " Active/Idle instances in pool=" + active + "/" + idle + ". " + JdbcConnectionDescriptor.class.getName() + ": " + jcd, e); } catch (Exception e) { int active = 0; int idle = 0; try { active = op.getNumActive(); idle = op.getNumIdle(); } catch (Exception ignore) { } throw new LookupException("Could not borrow connection from pool." + " Active/Idle instances in pool=" + active + "/" + idle + ". " + JdbcConnectionDescriptor.class.getName() + ": " + jcd, e); } return conn; }
From source file:org.callimachusproject.sql.DriverConnectionPoolManager.java
private PoolableDriverConnection borrow(ObjectPool<PoolableDriverConnection> pool) throws SQLException { try {/*from w w w .j av a 2s . c o m*/ return pool.borrowObject(); } catch (SQLException e) { throw e; } catch (NoSuchElementException e) { throw (SQLException) new SQLException("Cannot get a connection, pool error: " + e.getMessage()) .initCause(e); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw (SQLException) new SQLException("Cannot get a connection, general error: " + e.getMessage()) .initCause(e); } }
From source file:org.jvoicexml.implementation.pool.KeyedResourcePool.java
/** * Type safe return of the object to borrow from the pool. * @param key the type of the object to borrow from the pool * @return borrowed object//from ww w . j av a 2 s . co m * @exception NoresourceError * the object could not be borrowed */ @SuppressWarnings("unchecked") public synchronized T borrowObject(final Object key) throws NoresourceError { final ObjectPool pool = pools.get(key); if (pool == null) { throw new NoresourceError("Pool of type '" + key + "' is unknown!"); } T resource; try { resource = (T) pool.borrowObject(); } catch (NoSuchElementException e) { throw new NoresourceError(e.getMessage(), e); } catch (IllegalStateException e) { throw new NoresourceError(e.getMessage(), e); } catch (Exception e) { throw new NoresourceError(e.getMessage(), e); } LOGGER.info("borrowed object of type '" + key + "' (" + resource.getClass().getCanonicalName() + ")"); if (LOGGER.isDebugEnabled()) { final int active = pool.getNumActive(); final int idle = pool.getNumIdle(); LOGGER.debug("pool has now " + active + " active/" + idle + " idle for key '" + key + "' (" + resource.getClass().getCanonicalName() + ") after borrow"); } return resource; }
From source file:org.mule.transport.ftp.FTPConnectorTestCase.java
/** * Test setting a connection factory on a ftp endpoint. * @throws Exception/*from ww w.ja v a 2 s . c o m*/ */ @Test public void testCustomFtpConnectionFactory() throws Exception { final String testObject = "custom object"; final ImmutableEndpoint endpoint = muleContext.getEndpointFactory() .getOutboundEndpoint("ftp://test:test@example.com"); final EndpointURI endpointURI = endpoint.getEndpointURI(); FtpConnectionFactory testFactory = new TestFtpConnectionFactory(endpointURI); FtpConnector connector = (FtpConnector) getConnector(); connector.setConnectionFactoryClass(testFactory.getClass().getName()); // no validate call for simplicity connector.setValidateConnections(false); ObjectPool pool = connector.getFtpPool(endpointURI); Object obj = pool.borrowObject(); assertEquals("Custom FTP connection factory has been ignored.", testObject, obj); }
From source file:org.mule.transport.sftp.SftpConnector.java
public SftpClient createSftpClient(ImmutableEndpoint endpoint, SftpNotifier notifier) throws Exception { SftpClient client = null;//from w w w .ja v a 2s . c om boolean ok = false; try { if (useConnectionPool()) { ObjectPool pool = getClientPool(endpoint); client = (SftpClient) pool.borrowObject(); } else { client = SftpConnectionFactory.createClient(endpoint); } // We have to set the working directory before returning String dir = endpoint.getEndpointURI().getPath(); client.changeWorkingDirectory(dir); if (logger.isDebugEnabled()) { logger.debug("Successfully changed working directory to: " + dir); } // TODO ML: Is this always necessary? client.setNotifier(notifier); ok = true; } finally { // Release the client if it was created but something failed after that, // otherwise we start to waste ssh-processes... if (!ok && client != null) { releaseClient(endpoint, client); } } return client; }
From source file:org.openrepose.commons.utils.transform.jaxb.JaxbEntityToXml.java
@Override public String transform(final JAXBElement source) { String rtn = null;/*from w ww . j a v a 2 s .c o m*/ Marshaller pooledObject; final ObjectPool<Marshaller> objectPool = getMarshallerPool(); try { pooledObject = objectPool.borrowObject(); try { final StringWriter w = new StringWriter(); pooledObject.marshal(source, w); rtn = w.getBuffer().toString(); } catch (JAXBException jaxbe) { objectPool.invalidateObject(pooledObject); pooledObject = null; throw new ResourceConstructionException(jaxbe.getMessage(), jaxbe); } catch (Exception e) { objectPool.invalidateObject(pooledObject); pooledObject = null; LOG.error("Failed to utilize the Marshaller. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } finally { if (pooledObject != null) { objectPool.returnObject(pooledObject); } } } catch (ResourceConstructionException e) { throw e; } catch (Exception e) { LOG.error("Failed to obtain a Marshaller. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } return rtn; }
From source file:org.openrepose.commons.utils.transform.jaxb.JaxbToStreamTransform.java
@Override public void transform(final JAXBElement source, final T target) { Marshaller pooledObject;//from w w w. jav a 2 s . c om final ObjectPool<Marshaller> objectPool = getMarshallerPool(); try { pooledObject = objectPool.borrowObject(); try { pooledObject.marshal(source, target); } catch (JAXBException jaxbe) { objectPool.invalidateObject(pooledObject); pooledObject = null; throw new ResourceContextException(jaxbe.getMessage(), jaxbe); } catch (Exception e) { objectPool.invalidateObject(pooledObject); pooledObject = null; LOG.error("Failed to utilize the Marshaller. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } finally { if (pooledObject != null) { objectPool.returnObject(pooledObject); } } } catch (ResourceContextException e) { throw e; } catch (Exception e) { LOG.error("Failed to obtain a Marshaller. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } }
From source file:org.openrepose.commons.utils.transform.jaxb.StreamToJaxbTransform.java
@Override public JAXBElement<T> transform(final InputStream source) { JAXBElement<T> rtn = null; Unmarshaller pooledObject;/*from w w w.j a v a2 s .c om*/ final ObjectPool<Unmarshaller> objectPool = getUnmarshallerPool(); try { pooledObject = objectPool.borrowObject(); try { rtn = (JAXBElement<T>) pooledObject.unmarshal(source); } catch (JAXBException jbe) { objectPool.invalidateObject(pooledObject); pooledObject = null; throw new ResourceContextException(jbe.getMessage(), jbe); } catch (Exception e) { objectPool.invalidateObject(pooledObject); pooledObject = null; LOG.error("Failed to utilize the Marshaller. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } finally { if (pooledObject != null) { objectPool.returnObject(pooledObject); } } } catch (ResourceContextException e) { throw e; } catch (Exception e) { LOG.error("Failed to obtain a Marshaller. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } return rtn; }
From source file:org.openrepose.commons.utils.transform.xslt.StreamToXsltTransform.java
@Override public void transform(final InputStream source, final OutputStream target) { Transformer pooledObject;//from w w w .ja v a2 s . com final ObjectPool<Transformer> objectPool = getXslTransformerPool(); try { pooledObject = objectPool.borrowObject(); try { pooledObject.transform(new StreamSource(source), new StreamResult(target)); } catch (TransformerException te) { objectPool.invalidateObject(pooledObject); pooledObject = null; throw new XsltTransformationException("Failed while attempting XSLT transformation.", te); } catch (Exception e) { objectPool.invalidateObject(pooledObject); pooledObject = null; throw new XsltTransformationException("Failed while attempting XSLT transformation.", e); } finally { if (pooledObject != null) { objectPool.returnObject(pooledObject); } } } catch (XsltTransformationException e) { throw e; } catch (Exception e) { throw new XsltTransformationException("Failed to obtain a Transformer for XSLT transformation.", e); } }
From source file:org.openrepose.filters.ratelimiting.util.combine.CombinedLimitsTransformer.java
@Override public void transform(final LimitsTransformPair source, final OutputStream target) { Transformer pooledObject;/*from w w w .j a v a2 s. co m*/ final ObjectPool<Transformer> objectPool = getXslTransformerPool(); try { pooledObject = objectPool.borrowObject(); try { final InputStreamUriParameter inputStreamUriParameter = new InputStreamUriParameter( source.getInputStream()); final StreamResult resultWriter = new StreamResult(target); // The XSL requires a parameter to represent the absolute limits. // This harness cheats and provides the input stream directly. pooledObject.setURIResolver(inputStreamUriParameter); pooledObject.setParameter("absoluteURL", inputStreamUriParameter.getHref()); final Limits limitsObject = new Limits(); limitsObject.setRates(source.getRateLimitList()); pooledObject.transform(new JAXBSource(jaxbContext, factory.createLimits(limitsObject)), resultWriter); } catch (Exception e) { objectPool.invalidateObject(pooledObject); pooledObject = null; throw new XsltTransformationException("Failed while attempting XSLT transformation.", e); } finally { if (pooledObject != null) { objectPool.returnObject(pooledObject); } } } catch (XsltTransformationException e) { throw e; } catch (Exception e) { LOG.error("Failed to obtain a Transformer. Reason: {}", e.getLocalizedMessage()); LOG.trace("", e); } }