Arcturus-Community/src/main/java/com/eu/habbo/database/DatabasePool.java

51 lines
3.0 KiB
Java
Raw Normal View History

2018-07-06 15:30:00 +02:00
package com.eu.habbo.database;
import com.eu.habbo.core.ConfigurationManager;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2019-05-26 20:14:53 +02:00
class DatabasePool {
2018-07-06 15:30:00 +02:00
private final Logger log = LoggerFactory.getLogger(DatabasePool.class);
private HikariDataSource database;
2019-05-26 20:14:53 +02:00
public boolean getStoragePooling(ConfigurationManager config) {
try {
2018-07-06 15:30:00 +02:00
HikariConfig databaseConfiguration = new HikariConfig();
databaseConfiguration.setMaximumPoolSize(config.getInt("db.pool.maxsize", 50));
databaseConfiguration.setMinimumIdle(config.getInt("db.pool.minsize", 10));
databaseConfiguration.setJdbcUrl("jdbc:mysql://" + config.getValue("db.hostname", "localhost") + ":" + config.getValue("db.port", "3306") + "/" + config.getValue("db.database", "habbo") + config.getValue("db.params"));
databaseConfiguration.addDataSourceProperty("serverName", config.getValue("db.hostname", "localhost"));
databaseConfiguration.addDataSourceProperty("port", config.getValue("db.port", "3306"));
databaseConfiguration.addDataSourceProperty("databaseName", config.getValue("db.database", "habbo"));
databaseConfiguration.addDataSourceProperty("user", config.getValue("db.username"));
databaseConfiguration.addDataSourceProperty("password", config.getValue("db.password"));
databaseConfiguration.addDataSourceProperty("dataSource.logger", "com.mysql.jdbc.log.StandardLogger");
databaseConfiguration.addDataSourceProperty("dataSource.logSlowQueries", "true");
databaseConfiguration.addDataSourceProperty("dataSource.dumpQueriesOnException", "true");
databaseConfiguration.addDataSourceProperty("prepStmtCacheSize", "500");
databaseConfiguration.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
2019-05-26 20:14:53 +02:00
// databaseConfiguration.addDataSourceProperty("dataSource.logWriter", Logging.getErrorsSQLWriter());
2018-07-06 15:30:00 +02:00
databaseConfiguration.addDataSourceProperty("cachePrepStmts", "true");
databaseConfiguration.addDataSourceProperty("useServerPrepStmts", "true");
databaseConfiguration.addDataSourceProperty("rewriteBatchedStatements", "true");
2019-05-26 20:14:53 +02:00
databaseConfiguration.addDataSourceProperty("useUnicode", "true");
2018-07-06 15:30:00 +02:00
databaseConfiguration.setAutoCommit(true);
databaseConfiguration.setConnectionTimeout(300000L);
databaseConfiguration.setValidationTimeout(5000L);
databaseConfiguration.setLeakDetectionThreshold(20000L);
databaseConfiguration.setMaxLifetime(1800000L);
databaseConfiguration.setIdleTimeout(600000L);
//databaseConfiguration.setDriverClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
this.database = new HikariDataSource(databaseConfiguration);
2019-05-26 20:14:53 +02:00
} catch (Exception e) {
2018-07-06 15:30:00 +02:00
return false;
}
return true;
}
2019-05-26 20:14:53 +02:00
public HikariDataSource getDatabase() {
2018-07-06 15:30:00 +02:00
return this.database;
}
}