Example usage for org.apache.commons.pool ObjectPool borrowObject

List of usage examples for org.apache.commons.pool ObjectPool borrowObject

Introduction

In this page you can find the example usage for org.apache.commons.pool ObjectPool borrowObject.

Prototype

Object borrowObject() throws Exception;

Source Link

Usage

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);
    }
}