/**
  * Creates the PoolableConnectionFactory and attaches it to the connection pool.
  *
  * @param driverConnectionFactory JDBC connection factory created by {@link
  *     #createConnectionFactory()}
  * @throws SQLException if an error occurs creating the PoolableConnectionFactory
  */
 @Override
 protected PoolableConnectionFactory createPoolableConnectionFactory(
     ConnectionFactory driverConnectionFactory) throws SQLException {
   PoolableConnectionFactory connectionFactory = null;
   try {
     connectionFactory =
         new PoolableManagedConnectionFactory(
             (XAConnectionFactory) driverConnectionFactory, getRegisteredJmxName());
     connectionFactory.setValidationQuery(getValidationQuery());
     connectionFactory.setValidationQueryTimeout(getValidationQueryTimeout());
     connectionFactory.setConnectionInitSql(getConnectionInitSqls());
     connectionFactory.setDefaultReadOnly(getDefaultReadOnly());
     connectionFactory.setDefaultAutoCommit(getDefaultAutoCommit());
     connectionFactory.setDefaultTransactionIsolation(getDefaultTransactionIsolation());
     connectionFactory.setDefaultCatalog(getDefaultCatalog());
     connectionFactory.setCacheState(getCacheState());
     connectionFactory.setPoolStatements(isPoolPreparedStatements());
     connectionFactory.setMaxOpenPrepatedStatements(getMaxOpenPreparedStatements());
     connectionFactory.setMaxConnLifetimeMillis(getMaxConnLifetimeMillis());
     connectionFactory.setRollbackOnReturn(getRollbackOnReturn());
     connectionFactory.setEnableAutoCommitOnReturn(getEnableAutoCommitOnReturn());
     connectionFactory.setDefaultQueryTimeout(getDefaultQueryTimeout());
     connectionFactory.setFastFailValidation(getFastFailValidation());
     connectionFactory.setDisconnectionSqlCodes(getDisconnectionSqlCodes());
     validateConnectionFactory(connectionFactory);
   } catch (RuntimeException e) {
     throw e;
   } catch (Exception e) {
     throw new SQLException("Cannot create PoolableConnectionFactory (" + e.getMessage() + ")", e);
   }
   return connectionFactory;
 }