mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-10 03:23:13 +00:00
[DS-3434] DSpace fails to start when a databse connection pool is supplied through JNDI
This commit is contained in:
@@ -24,7 +24,6 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
import org.apache.commons.dbcp2.BasicDataSource;
|
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
@@ -545,6 +544,9 @@ public class DatabaseUtils
|
|||||||
{
|
{
|
||||||
// Get our configured dataSource
|
// Get our configured dataSource
|
||||||
DataSource dataSource = getDataSource();
|
DataSource dataSource = getDataSource();
|
||||||
|
if (null == dataSource) {
|
||||||
|
throw new SQLException("The DataSource is a null reference -- cannot continue.");
|
||||||
|
}
|
||||||
|
|
||||||
try(Connection connection = dataSource.getConnection())
|
try(Connection connection = dataSource.getConnection())
|
||||||
{
|
{
|
||||||
@@ -598,9 +600,14 @@ public class DatabaseUtils
|
|||||||
* @throws SQLException if database error
|
* @throws SQLException if database error
|
||||||
* If database cannot be upgraded.
|
* If database cannot be upgraded.
|
||||||
*/
|
*/
|
||||||
protected static synchronized void updateDatabase(DataSource datasource, Connection connection, String targetVersion, boolean outOfOrder)
|
protected static synchronized void updateDatabase(DataSource datasource,
|
||||||
|
Connection connection, String targetVersion, boolean outOfOrder)
|
||||||
throws SQLException
|
throws SQLException
|
||||||
{
|
{
|
||||||
|
if (null == datasource) {
|
||||||
|
throw new SQLException("The datasource is a null reference -- cannot continue.");
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Setup Flyway API against our database
|
// Setup Flyway API against our database
|
||||||
@@ -1380,6 +1387,7 @@ public class DatabaseUtils
|
|||||||
/**
|
/**
|
||||||
* Get a reference to the configured DataSource (which can be used to
|
* Get a reference to the configured DataSource (which can be used to
|
||||||
* initialize the database using Flyway).
|
* initialize the database using Flyway).
|
||||||
|
* The DataSource is configured via our ServiceManager (i.e. via Spring).
|
||||||
* <P>
|
* <P>
|
||||||
* This is NOT public, as we discourage direct connections to the database
|
* This is NOT public, as we discourage direct connections to the database
|
||||||
* which bypass Hibernate. Only Flyway should be allowed a direct connection.
|
* which bypass Hibernate. Only Flyway should be allowed a direct connection.
|
||||||
@@ -1387,8 +1395,13 @@ public class DatabaseUtils
|
|||||||
*/
|
*/
|
||||||
protected static DataSource getDataSource()
|
protected static DataSource getDataSource()
|
||||||
{
|
{
|
||||||
// DataSource is configured via our ServiceManager (i.e. via Spring).
|
DataSource dataSource = DSpaceServicesFactory.getInstance()
|
||||||
return DSpaceServicesFactory.getInstance().getServiceManager().getServiceByName("dataSource", BasicDataSource.class);
|
.getServiceManager()
|
||||||
|
.getServiceByName("dataSource", DataSource.class);
|
||||||
|
if (null == dataSource) {
|
||||||
|
log.error("The service manager could not find the DataSource.");
|
||||||
|
}
|
||||||
|
return dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user