Search in sources :

Example 6 with GenericKeyedObjectPool

use of org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool in project tomcat by apache.

the class PoolableConnectionFactory method makeObject.

@Override
public PooledObject<PoolableConnection> makeObject() throws Exception {
    Connection conn = connectionFactory.createConnection();
    if (conn == null) {
        throw new IllegalStateException("Connection factory returned null from createConnection");
    }
    try {
        initializeConnection(conn);
    } catch (final SQLException sqle) {
        // Make sure the connection is closed
        Utils.closeQuietly((AutoCloseable) conn);
        // Rethrow original exception so it is visible to caller
        throw sqle;
    }
    final long connIndex = connectionIndex.getAndIncrement();
    if (poolStatements) {
        conn = new PoolingConnection(conn);
        final GenericKeyedObjectPoolConfig<DelegatingPreparedStatement> config = new GenericKeyedObjectPoolConfig<>();
        config.setMaxTotalPerKey(-1);
        config.setBlockWhenExhausted(false);
        config.setMaxWait(Duration.ZERO);
        config.setMaxIdlePerKey(1);
        config.setMaxTotal(maxOpenPreparedStatements);
        if (dataSourceJmxObjectName != null) {
            final StringBuilder base = new StringBuilder(dataSourceJmxObjectName.toString());
            base.append(Constants.JMX_CONNECTION_BASE_EXT);
            base.append(connIndex);
            config.setJmxNameBase(base.toString());
            config.setJmxNamePrefix(Constants.JMX_STATEMENT_POOL_PREFIX);
        } else {
            config.setJmxEnabled(false);
        }
        final PoolingConnection poolingConn = (PoolingConnection) conn;
        final KeyedObjectPool<PStmtKey, DelegatingPreparedStatement> stmtPool = new GenericKeyedObjectPool<>(poolingConn, config);
        poolingConn.setStatementPool(stmtPool);
        poolingConn.setClearStatementPoolOnReturn(clearStatementPoolOnReturn);
        poolingConn.setCacheState(cacheState);
    }
    // Register this connection with JMX
    final ObjectName connJmxName;
    if (dataSourceJmxObjectName == null) {
        connJmxName = null;
    } else {
        connJmxName = new ObjectName(dataSourceJmxObjectName.toString() + Constants.JMX_CONNECTION_BASE_EXT + connIndex);
    }
    final PoolableConnection pc = new PoolableConnection(conn, pool, connJmxName, disconnectionSqlCodes, fastFailValidation);
    pc.setCacheState(cacheState);
    return new DefaultPooledObject<>(pc);
}
Also used : GenericKeyedObjectPoolConfig(org.apache.tomcat.dbcp.pool2.impl.GenericKeyedObjectPoolConfig) SQLException(java.sql.SQLException) GenericKeyedObjectPool(org.apache.tomcat.dbcp.pool2.impl.GenericKeyedObjectPool) Connection(java.sql.Connection) ObjectName(javax.management.ObjectName) DefaultPooledObject(org.apache.tomcat.dbcp.pool2.impl.DefaultPooledObject)

Example 7 with GenericKeyedObjectPool

use of org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool in project openhab1-addons by openhab.

the class ModbusBinding method reconstructConnectionPool.

private static void reconstructConnectionPool() {
    connectionFactory = new ModbusSlaveConnectionFactoryImpl();
    GenericKeyedObjectPool<ModbusSlaveEndpoint, ModbusSlaveConnection> genericKeyedObjectPool = new GenericKeyedObjectPool<ModbusSlaveEndpoint, ModbusSlaveConnection>(connectionFactory, poolConfig);
    genericKeyedObjectPool.setSwallowedExceptionListener(new SwallowedExceptionListener() {

        @Override
        public void onSwallowException(Exception e) {
            logger.error("Connection pool swallowed unexpected exception: {}", e.getMessage());
        }
    });
    connectionPool = genericKeyedObjectPool;
}
Also used : GenericKeyedObjectPool(org.apache.commons.pool2.impl.GenericKeyedObjectPool) ModbusSlaveEndpoint(org.openhab.binding.modbus.internal.pooling.ModbusSlaveEndpoint) SwallowedExceptionListener(org.apache.commons.pool2.SwallowedExceptionListener) ModbusSlaveConnection(net.wimpi.modbus.net.ModbusSlaveConnection) ModbusSlaveConnectionFactoryImpl(org.openhab.binding.modbus.internal.pooling.ModbusSlaveConnectionFactoryImpl) ConfigurationException(org.osgi.service.cm.ConfigurationException) NoSuchElementException(java.util.NoSuchElementException)

Example 8 with GenericKeyedObjectPool

use of org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool in project datanucleus-rdbms by datanucleus.

the class SharedPoolDataSource method registerPool.

private void registerPool(String username, String password) throws NamingException, SQLException {
    ConnectionPoolDataSource cpds = testCPDS(username, password);
    // Create an object pool to contain our PooledConnections
    factory = new KeyedCPDSConnectionFactory(cpds, getValidationQuery(), getValidationQueryTimeout(), isRollbackAfterValidation());
    factory.setMaxConnLifetimeMillis(getMaxConnLifetimeMillis());
    GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig();
    config.setBlockWhenExhausted(getDefaultBlockWhenExhausted());
    config.setEvictionPolicyClassName(getDefaultEvictionPolicyClassName());
    config.setLifo(getDefaultLifo());
    config.setMaxIdlePerKey(getDefaultMaxIdle());
    config.setMaxTotal(getMaxTotal());
    config.setMaxTotalPerKey(getDefaultMaxTotal());
    config.setMaxWaitMillis(getDefaultMaxWaitMillis());
    config.setMinEvictableIdleTimeMillis(getDefaultMinEvictableIdleTimeMillis());
    config.setMinIdlePerKey(getDefaultMinIdle());
    config.setNumTestsPerEvictionRun(getDefaultNumTestsPerEvictionRun());
    config.setSoftMinEvictableIdleTimeMillis(getDefaultSoftMinEvictableIdleTimeMillis());
    config.setTestOnCreate(getDefaultTestOnCreate());
    config.setTestOnBorrow(getDefaultTestOnBorrow());
    config.setTestOnReturn(getDefaultTestOnReturn());
    config.setTestWhileIdle(getDefaultTestWhileIdle());
    config.setTimeBetweenEvictionRunsMillis(getDefaultTimeBetweenEvictionRunsMillis());
    KeyedObjectPool<UserPassKey, PooledConnectionAndInfo> tmpPool = new GenericKeyedObjectPool<>(factory, config);
    factory.setPool(tmpPool);
    pool = tmpPool;
}
Also used : ConnectionPoolDataSource(javax.sql.ConnectionPoolDataSource) GenericKeyedObjectPoolConfig(org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPoolConfig) GenericKeyedObjectPool(org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool)

Example 9 with GenericKeyedObjectPool

use of org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool in project x-pipe by ctripcorp.

the class XpipeNettyClientKeyedObjectPool method setKeyPooConfig.

public final void setKeyPooConfig(int minIdlePerKey, long softMinEvictableIdleTimeMillis, long minEvictableIdleTimeMillis, long timeBetweenEvictionRunsMillis) {
    if (objectPool instanceof GenericKeyedObjectPool) {
        logger.info("[setKeyPooConfig]{}, {}, {}, {}", minIdlePerKey, softMinEvictableIdleTimeMillis, minEvictableIdleTimeMillis, timeBetweenEvictionRunsMillis);
        GenericKeyedObjectPool genericKeyedObjectPool = (GenericKeyedObjectPool) objectPool;
        genericKeyedObjectPool.setMinIdlePerKey(minIdlePerKey);
        genericKeyedObjectPool.setSoftMinEvictableIdleTimeMillis(softMinEvictableIdleTimeMillis);
        genericKeyedObjectPool.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        genericKeyedObjectPool.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    } else {
        logger.warn("[setKeyPooConfig][not generickeyedobjectpool]");
    }
}
Also used : GenericKeyedObjectPool(org.apache.commons.pool2.impl.GenericKeyedObjectPool)

Example 10 with GenericKeyedObjectPool

use of org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool in project x-pipe by ctripcorp.

the class XpipeNettyClientKeyedObjectPool method doInitialize.

@Override
protected void doInitialize() throws Exception {
    this.pooledObjectFactory = new NettyKeyedPoolClientFactory();
    pooledObjectFactory.start();
    GenericKeyedObjectPool<InetSocketAddress, NettyClient> genericKeyedObjectPool = new GenericKeyedObjectPool<>(pooledObjectFactory, config);
    genericKeyedObjectPool.setTestOnBorrow(true);
    genericKeyedObjectPool.setTestOnCreate(true);
    genericKeyedObjectPool.setSoftMinEvictableIdleTimeMillis(DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
    genericKeyedObjectPool.setMinEvictableIdleTimeMillis(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS);
    genericKeyedObjectPool.setTimeBetweenEvictionRunsMillis(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS);
    this.objectPool = genericKeyedObjectPool;
}
Also used : NettyClient(com.ctrip.xpipe.netty.commands.NettyClient) NettyKeyedPoolClientFactory(com.ctrip.xpipe.netty.commands.NettyKeyedPoolClientFactory) GenericKeyedObjectPool(org.apache.commons.pool2.impl.GenericKeyedObjectPool) InetSocketAddress(java.net.InetSocketAddress)

Aggregations

GenericKeyedObjectPool (org.apache.commons.pool2.impl.GenericKeyedObjectPool)4 Connection (java.sql.Connection)3 ObjectName (javax.management.ObjectName)3 GenericKeyedObjectPool (org.apache.tomcat.dbcp.pool2.impl.GenericKeyedObjectPool)3 GenericKeyedObjectPoolConfig (org.apache.tomcat.dbcp.pool2.impl.GenericKeyedObjectPoolConfig)3 GenericKeyedObjectPoolConfig (org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPoolConfig)3 SQLException (java.sql.SQLException)2 ConnectionPoolDataSource (javax.sql.ConnectionPoolDataSource)2 DefaultPooledObject (org.apache.tomcat.dbcp.pool2.impl.DefaultPooledObject)2 GenericKeyedObjectPool (org.datanucleus.store.rdbms.datasource.dbcp2.pool2.impl.GenericKeyedObjectPool)2 NettyClient (com.ctrip.xpipe.netty.commands.NettyClient)1 NettyKeyedPoolClientFactory (com.ctrip.xpipe.netty.commands.NettyKeyedPoolClientFactory)1 InetSocketAddress (java.net.InetSocketAddress)1 NoSuchElementException (java.util.NoSuchElementException)1 ModbusSlaveConnection (net.wimpi.modbus.net.ModbusSlaveConnection)1 SwallowedExceptionListener (org.apache.commons.pool2.SwallowedExceptionListener)1 GenericKeyedObjectPoolConfig (org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig)1 DelegatingPreparedStatement (org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement)1 PStmtKey (org.apache.tomcat.dbcp.dbcp2.PStmtKey)1 PoolableConnection (org.apache.tomcat.dbcp.dbcp2.PoolableConnection)1