@Override protected UsageAwareDatastoreConnection<UpdateableDataContext> createDatastoreConnection() { if (StringUtils.isNullOrEmpty(_datasourceJndiUrl)) { if (isMultipleConnections()) { final DataSource dataSource = createDataSource(); return new DataSourceDatastoreConnection(dataSource, getTableTypes(), _catalogName, this); } else { final Connection connection = createConnection(); try { connection.setAutoCommit(false); } catch (final SQLException e) { logger.error("Could not set autocommit false '{}'", _datasourceJndiUrl); throw new IllegalStateException(e); } final UpdateableDataContext dataContext = new JdbcDataContext(connection, getTableTypes(), _catalogName); return new UpdateableDatastoreConnectionImpl<>(dataContext, this); } } else { try { final Context initialContext = getJndiNamingContext(); final DataSource dataSource = (DataSource) initialContext.lookup(_datasourceJndiUrl); return new DataSourceDatastoreConnection(dataSource, getTableTypes(), _catalogName, this); } catch (final Exception e) { logger.error("Could not retrieve DataSource '{}'", _datasourceJndiUrl); throw new IllegalStateException(e); } } }