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;
|
|
|
|
}
|
|
|
|
}
|