diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBConnectionSmokeTests.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBConnectionSmokeTests.java
index 5cdd73130..8dc67787a 100644
--- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBConnectionSmokeTests.java
+++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBConnectionSmokeTests.java
@@ -52,6 +52,10 @@ public class SDBConnectionSmokeTests {
+ PROPERTY_DB_URL + "'");
return;
}
+
+ // Get the full URL, with options.
+ url = SDBDataSource.getJdbcUrl(props);
+
String username = props.getProperty(PROPERTY_DB_USERNAME);
if (username == null || username.isEmpty()) {
ss.fatal("runtime.properties does not contain a value for '"
diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBDataSource.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBDataSource.java
index cbf292d92..dcb4899f7 100644
--- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBDataSource.java
+++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/triplesource/impl/sdb/SDBDataSource.java
@@ -2,8 +2,6 @@
package edu.cornell.mannlib.vitro.webapp.triplesource.impl.sdb;
-import java.beans.PropertyVetoException;
-
import javax.servlet.ServletContext;
import org.apache.commons.lang3.StringUtils;
@@ -51,7 +49,7 @@ public class SDBDataSource {
public BasicDataSource getDataSource() {
BasicDataSource cpds = new BasicDataSource();
cpds.setDriverClassName(getDbDriverClassName());
- cpds.setUrl(getJdbcUrl());
+ cpds.setUrl(getJdbcUrl(configProps));
cpds.setUsername(configProps.getProperty(PROPERTY_DB_USERNAME));
cpds.setPassword(configProps.getProperty(PROPERTY_DB_PASSWORD));
cpds.setMaxTotal(getMaxActive());
@@ -75,41 +73,6 @@ public class SDBDataSource {
DEFAULT_DRIVER_CLASS);
}
- private String getDbType() {
- return configProps.getProperty(PROPERTY_DB_TYPE, DEFAULT_TYPE);
- }
-
- private String getJdbcUrl() {
- String url = configProps.getProperty(PROPERTY_DB_URL);
-
- // Ensure that MySQL handles unicode properly, else all kinds of
- // horrible nastiness ensues.
- if (DEFAULT_TYPE.equals(getDbType())) {
- if (!url.contains("?")) {
- url += "?useUnicode=yes&characterEncoding=utf8&nullNamePatternMatchesAll=true&cachePrepStmts=true&useServerPrepStmts=true";
- } else {
- String urlLwr = url.toLowerCase();
- if (!urlLwr.contains("useunicode")) {
- url += "&useUnicode=yes";
- }
- if (!urlLwr.contains("characterencoding")) {
- url += "&characterEncoding=utf8";
- }
- if (!urlLwr.contains("nullnamepatternmatchesall")) {
- url += "&nullNamePatternMatchesAll=true";
- }
- if (!urlLwr.contains("cacheprepstmts")) {
- url += "&cachePrepStmts=true";
- }
- if (!urlLwr.contains("useserverprepstmts")) {
- url += "&useServerPrepStmts=true";
- }
- }
- }
-
- return url;
- }
-
private String getValidationQuery() {
return configProps.getProperty(PROPERTY_DB_VALIDATION_QUERY,
DEFAULT_VALIDATION_QUERY);
@@ -167,4 +130,49 @@ public class SDBDataSource {
return defaultValue;
}
}
+
+ /**
+ * Get the JDBC URL, perhaps with special MySQL options.
+ *
+ * This must be static and package-accessible so SDBConnectionSmokeTests can
+ * use the same options.
+ */
+ static String getJdbcUrl(ConfigurationProperties props) {
+ String url = props.getProperty(PROPERTY_DB_URL);
+
+ // Ensure that MySQL handles unicode properly, else all kinds of
+ // horrible nastiness ensues. Also, set some other handy options.
+ if (DEFAULT_TYPE.equals(getDbType(props))) {
+ if (!url.contains("?")) {
+ url += "?useUnicode=yes&characterEncoding=utf8&nullNamePatternMatchesAll=true&cachePrepStmts=true&useServerPrepStmts=true&serverTimezone=UTC";
+ } else {
+ String urlLwr = url.toLowerCase();
+ if (!urlLwr.contains("useunicode")) {
+ url += "&useUnicode=yes";
+ }
+ if (!urlLwr.contains("characterencoding")) {
+ url += "&characterEncoding=utf8";
+ }
+ if (!urlLwr.contains("nullnamepatternmatchesall")) {
+ url += "&nullNamePatternMatchesAll=true";
+ }
+ if (!urlLwr.contains("cacheprepstmts")) {
+ url += "&cachePrepStmts=true";
+ }
+ if (!urlLwr.contains("useserverprepstmts")) {
+ url += "&useServerPrepStmts=true";
+ }
+ if (!urlLwr.contains("servertimezone")) {
+ url += "&serverTimezone=UTC";
+ }
+ }
+ }
+ return url;
+ }
+
+ private static String getDbType(ConfigurationProperties props) {
+ return props.getProperty(PROPERTY_DB_TYPE, DEFAULT_TYPE);
+ }
+
+
}
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index e4d9df421..6f55129dd 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -114,7 +114,7 @@
mysql
mysql-connector-java
- 6.0.6
+ 5.1.46
net.sf.jga