final XADataSource ds = dsf.createXADataSource(getNonPoolProps(props)); DataSourceXAConnectionFactory connFactory = new DataSourceXAConnectionFactory(tm, ds); PoolableManagedConnectionFactory pcf = new PoolableManagedConnectionFactory(connFactory, null); GenericObjectPoolConfig conf = new GenericObjectPoolConfig(); BeanConfig.configure(conf, getPoolProps(props)); BeanConfig.configure(pcf, getPrefixed(props, FACTORY_PREFIX)); GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>(pcf, conf); pcf.setPool(pool); TransactionRegistry transactionRegistry = connFactory.getTransactionRegistry(); final ServiceRegistration<XAResourceRecovery> registration = bundleContext.registerService(XAResourceRecovery.class, new XAResourceRecovery() {
Connection conn = getConnectionFactory().createConnection(); if (conn == null) { throw new IllegalStateException("Connection factory returned null from createConnection"); initializeConnection(conn); if (getPoolStatements()) { conn = new PoolingConnection(conn); final GenericKeyedObjectPoolConfig<DelegatingPreparedStatement> config = new GenericKeyedObjectPoolConfig<>(); config.setMaxWaitMillis(0); config.setMaxIdlePerKey(1); config.setMaxTotal(getMaxOpenPreparedStatements()); final ObjectName dataSourceJmxName = getDataSourceJmxName(); final long connIndex = getConnectionIndex().getAndIncrement(); if (dataSourceJmxName != null) { final StringBuilder base = new StringBuilder(dataSourceJmxName.toString()); (PoolingConnection) conn, config); ((PoolingConnection) conn).setStatementPool(stmtPool); ((PoolingConnection) conn).setCacheState(getCacheState()); final PoolableManagedConnection pmc = new PoolableManagedConnection(transactionRegistry, conn, getPool(), getDisconnectionSqlCodes(), isFastFailValidation()); pmc.setCacheState(getCacheState()); return new DefaultPooledObject<>(pmc);
PoolableConnectionFactory factory = new PoolableManagedConnectionFactory(xacf, null); factory.setValidationQuery(jdbcElement.getPoolJdbcTestStmt()); factory.setDefaultReadOnly(false);
PoolableConnectionFactory connectionFactory = null; try { connectionFactory = new PoolableManagedConnectionFactory((XAConnectionFactory) driverConnectionFactory, getRegisteredJmxName()); connectionFactory.setValidationQuery(getValidationQuery());
@Override public DataSource create(DataSourceFactory dsf, Properties props) throws SQLException { try { XADataSource ds = dsf.createXADataSource(getNonPoolProps(props)); DataSourceXAConnectionFactory connFactory = new DataSourceXAConnectionFactory(tm, ds); PoolableManagedConnectionFactory pcf = new PoolableManagedConnectionFactory(connFactory, null); GenericObjectPoolConfig conf = new GenericObjectPoolConfig(); BeanConfig.configure(conf, getPoolProps(props)); BeanConfig.configure(pcf, getPrefixed(props, FACTORY_PREFIX)); GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>(pcf, conf); pcf.setPool(pool); TransactionRegistry transactionRegistry = connFactory.getTransactionRegistry(); return new ManagedDataSource<PoolableConnection>(pool, transactionRegistry); } catch (Throwable e) { LOG.error("Error creating pooled datasource: " + e.getMessage(), e); if (e instanceof SQLException) { throw (SQLException) e; } else if (e instanceof RuntimeException) { throw (RuntimeException) e; } else { throw new RuntimeException(e.getMessage(), e); } } } }