From 9dfe7b82f16c006abe6b12e94d55e667fdec48ca Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 18 Nov 2020 12:46:28 +0100 Subject: [PATCH] Provide @DataSourceDefinition for app-level DB config. #7418 The JNDI names have been changed to be conform with Java EE 7. See https://github.com/javaee-samples/javaee7-samples/tree/master/jpa/datasourcedefinition-applicationxml-pu and others for working examples. (Staying with the old name was not successfull.) --- .../flyway/StartupFlywayMigrator.java | 2 +- .../iq/dataverse/util/DataSourceProducer.java | 30 +++++++++++++++++++ src/main/resources/META-INF/persistence.xml | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/main/java/edu/harvard/iq/dataverse/util/DataSourceProducer.java diff --git a/src/main/java/edu/harvard/iq/dataverse/flyway/StartupFlywayMigrator.java b/src/main/java/edu/harvard/iq/dataverse/flyway/StartupFlywayMigrator.java index d5f4f8520a7..71b53bd43f2 100644 --- a/src/main/java/edu/harvard/iq/dataverse/flyway/StartupFlywayMigrator.java +++ b/src/main/java/edu/harvard/iq/dataverse/flyway/StartupFlywayMigrator.java @@ -15,7 +15,7 @@ @TransactionManagement(value = TransactionManagementType.BEAN) public class StartupFlywayMigrator { - @Resource(lookup = "jdbc/VDCNetDS") + @Resource(lookup = "java:app/jdbc/dataverse") private DataSource dataSource; @PostConstruct diff --git a/src/main/java/edu/harvard/iq/dataverse/util/DataSourceProducer.java b/src/main/java/edu/harvard/iq/dataverse/util/DataSourceProducer.java new file mode 100644 index 00000000000..f167b62dcd3 --- /dev/null +++ b/src/main/java/edu/harvard/iq/dataverse/util/DataSourceProducer.java @@ -0,0 +1,30 @@ +package edu.harvard.iq.dataverse.util; + +import javax.annotation.Resource; +import javax.annotation.sql.DataSourceDefinition; +import javax.enterprise.inject.Produces; +import javax.inject.Singleton; +import javax.sql.DataSource; + +@Singleton +@DataSourceDefinition( + name = "java:app/jdbc/dataverse", + // Using PGXADataSource instead of deprecated PGPoolingDataSource + className = "org.postgresql.xa.PGXADataSource", + user = "dataverse", + password = "${ALIAS=db_password_alias}", + serverName = "postgresql", + portNumber = 5432, + databaseName = "dataverse", + minPoolSize = 10, + maxPoolSize = 200) +public class DataSourceProducer { + + @Resource(lookup="java:app/jdbc/dataverse") + DataSource ds; + + @Produces + public DataSource getDatasource() { + return ds; + } +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 8b4e33858ac..72e61b83374 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -3,7 +3,7 @@ org.eclipse.persistence.jpa.PersistenceProvider - jdbc/VDCNetDS + java:app/jdbc/dataverse