Skip to content

Commit

Permalink
Use Hikari ConnectionPool
Browse files Browse the repository at this point in the history
  • Loading branch information
webb-ben committed Jan 24, 2025
1 parent 15d08db commit 614fb3c
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 31 deletions.
8 changes: 0 additions & 8 deletions FROST-Server.Core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>jdbc-socket-factory-core</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
Expand Down
5 changes: 5 additions & 0 deletions FROST-Server.HTTP/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,11 @@
<artifactId>mariadb-java-client</artifactId>
<version>${version.mariadb}</version>
</artifactItem>
<artifactItem>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
<version>${version.socketfactory}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
Expand Down
5 changes: 5 additions & 0 deletions FROST-Server.MQTTP/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@
<artifactId>mariadb-java-client</artifactId>
<version>${version.mariadb}</version>
</artifactItem>
<artifactItem>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
<version>${version.socketfactory}</version>
</artifactItem>
</artifactItems>
</configuration>
</execution>
Expand Down
6 changes: 3 additions & 3 deletions FROST-Server.SQLjooq/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>jdbc-socket-factory-core</artifactId>
<artifactId>postgres-socket-factory</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>de.fraunhofer.iosb.ilt</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import static de.fraunhofer.iosb.ilt.frostserver.util.Constants.VALUE_ID_TYPE_UUID;

import com.fasterxml.jackson.databind.JsonNode;
import com.google.cloud.sql.postgres.SocketFactory;
import com.github.fge.jsonpatch.JsonPatch;
import com.github.fge.jsonpatch.JsonPatchException;
import de.fraunhofer.iosb.ilt.frostserver.json.deserialize.JsonReaderDefault;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
*/
package de.fraunhofer.iosb.ilt.frostserver.persistence.pgjooq.utils;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import de.fraunhofer.iosb.ilt.frostclient.settings.annotation.SensitiveValue;
import de.fraunhofer.iosb.ilt.frostserver.settings.ConfigDefaults;
import de.fraunhofer.iosb.ilt.frostserver.settings.Settings;
Expand All @@ -30,7 +32,6 @@
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.ConnectionFactory;
import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
import org.apache.commons.dbcp2.PoolableConnection;
Expand All @@ -42,7 +43,7 @@
import org.slf4j.LoggerFactory;

/**
* Utility class for creating database connections.
* Utility class for creating database connections using HikariCP.
*/
public class ConnectionUtils implements ConfigDefaults {

Expand Down Expand Up @@ -106,7 +107,7 @@ private static DataSource createPoolingConnection(String name, Settings settings
DataSource source = EXISTING_POOLS.get(name);
if (source == null) {
if (!settings.get(TAG_DB_URL, ConnectionUtils.class).isEmpty()) {
source = setupBasicDataSource(settings);
source = setupHikariDataSource(settings);
} else {
source = setupDataSource(settings);
}
Expand All @@ -116,22 +117,23 @@ private static DataSource createPoolingConnection(String name, Settings settings
}
}

private static DataSource setupBasicDataSource(Settings settings) {
LOGGER.info("Setting up BasicDataSource for database connections.");
private static DataSource setupHikariDataSource(Settings settings) {
LOGGER.info("Setting up HikariDataSource for database connections.");
String driver = settings.get(TAG_DB_DRIVER, ConnectionUtils.class);
if (driver.isEmpty()) {
throw new IllegalArgumentException("Property '" + TAG_DB_DRIVER + "' must be non-empty");
}
try {
Class.forName(driver);
BasicDataSource ds = new BasicDataSource();
ds.setUrl(settings.get(TAG_DB_URL, ConnectionUtils.class));
ds.setUsername(settings.get(TAG_DB_USERNAME, ConnectionUtils.class));
ds.setPassword(settings.get(TAG_DB_PASSWRD, ConnectionUtils.class));
ds.setMaxIdle(settings.getInt(TAG_DB_MAXIDLE, ds.getMaxIdle()));
ds.setMaxTotal(settings.getInt(TAG_DB_MAXCONN, ds.getMaxTotal()));
ds.setMinIdle(settings.getInt(TAG_DB_MINIDLE, ds.getMinIdle()));
return ds;
HikariConfig config = new HikariConfig();
config.setJdbcUrl(settings.get(TAG_DB_URL, ConnectionUtils.class));
config.setUsername(settings.get(TAG_DB_USERNAME, ConnectionUtils.class));
config.setPassword(settings.get(TAG_DB_PASSWRD, ConnectionUtils.class));
config.setMaximumPoolSize(settings.getInt(TAG_DB_MAXCONN, 10)); // Default 10
config.setMinimumIdle(settings.getInt(TAG_DB_MINIDLE, 2)); // Default 2
config.setMaxLifetime(1800000); // Default 30 minutes
config.setIdleTimeout(600000); // Default 10 minutes
return new HikariDataSource(config);
} catch (ClassNotFoundException exc) {
throw new IllegalArgumentException(exc);
}
Expand Down Expand Up @@ -196,7 +198,7 @@ public Connection get() {
try {
connection = ConnectionUtils.getConnection(connectionName, settings);
} catch (SQLException ex) {
LOGGER.error("Could not inizialize {}", getClass().getName(), ex);
LOGGER.error("Could not initialize {}", getClass().getName(), ex);
}
}
return connection;
Expand Down
11 changes: 6 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@
<version.dbcp2>2.13.0</version.dbcp2>
<version.geolatte-common>0.8</version.geolatte-common>
<version.guava>33.4.0-jre</version.guava>
<version.hikari>5.0.1</version.hikari>
<version.httpclient>4.5.14</version.httpclient>
<version.jackson>2.18.2</version.jackson>
<version.jackson-databind>${version.jackson}</version.jackson-databind>
Expand Down Expand Up @@ -195,11 +196,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>jdbc-socket-factory-core</artifactId>
<version>${version.socketfactory}</version>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
Expand All @@ -211,6 +207,11 @@
<artifactId>guava</artifactId>
<version>${version.guava}</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${version.hikari}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
Expand Down

0 comments on commit 614fb3c

Please sign in to comment.