diff options
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/traccar/database/DataManager.java | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/src/org/traccar/database/DataManager.java b/src/org/traccar/database/DataManager.java index ac3be45ac..898669c21 100644 --- a/src/org/traccar/database/DataManager.java +++ b/src/org/traccar/database/DataManager.java @@ -15,7 +15,24 @@ */ package org.traccar.database; -import com.mchange.v2.c3p0.ComboPooledDataSource; +import java.io.File; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +import javax.naming.InitialContext; +import javax.sql.DataSource; + import liquibase.Contexts; import liquibase.Liquibase; import liquibase.database.Database; @@ -23,6 +40,7 @@ import liquibase.database.DatabaseFactory; import liquibase.exception.LiquibaseException; import liquibase.resource.FileSystemResourceAccessor; import liquibase.resource.ResourceAccessor; + import org.traccar.Config; import org.traccar.Context; import org.traccar.helper.Log; @@ -34,22 +52,8 @@ import org.traccar.model.Position; import org.traccar.model.Server; import org.traccar.model.User; -import javax.naming.InitialContext; -import javax.sql.DataSource; -import java.io.File; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLClassLoader; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; public class DataManager implements IdentityManager { @@ -106,19 +110,23 @@ public class DataManager implements IdentityManager { Class.forName(driver); } - ComboPooledDataSource ds = new ComboPooledDataSource(); - ds.setDriverClass(config.getString("database.driver")); - ds.setJdbcUrl(config.getString("database.url")); - ds.setUser(config.getString("database.user")); - ds.setPassword(config.getString("database.password")); - ds.setIdleConnectionTestPeriod(600); - ds.setTestConnectionOnCheckin(true); - ds.setMaxStatementsPerConnection(config.getInteger("database.maxStatements")); + HikariConfig hConfig = new HikariConfig(); + hConfig.setDriverClassName( config.getString("database.driver") ); + hConfig.setJdbcUrl( config.getString("database.url") ); + hConfig.setUsername( config.getString("database.user") ); + hConfig.setPassword( config.getString("database.password") ); + hConfig.setConnectionInitSql( "SELECT 1 FROM DUAL" ); + hConfig.setIdleTimeout( 600000 ); // milliseconds +// ds.setIdleConnectionTestPeriod(600); +// ds.setMaxStatementsPerConnection(config.getInteger("database.maxStatements")); + int maxPoolSize = config.getInteger("database.maxPoolSize"); + if (maxPoolSize != 0) { - ds.setMaxPoolSize(maxPoolSize); + hConfig.setMaximumPoolSize( maxPoolSize ); } - dataSource = ds; + + dataSource = new HikariDataSource(hConfig); } } |