Update Mysql Driver

This commit is contained in:
DuckieTM 2024-04-06 00:02:35 +02:00
parent ffd3f33917
commit 91cb726c03
3 changed files with 60 additions and 30 deletions

17
.gitignore vendored Normal file
View File

@ -0,0 +1,17 @@
logging/
compiled-builds/
*.iml
.idea/
target/**
TODO.txt
packet.pkt
plugins/**
src/test/
target/
config.ini
*.txt
*.jar
*.log
*.zip
.DS_Store

View File

@ -69,7 +69,9 @@
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version> <version>3.2.0</version>
<configuration> <configuration>
<additionalOptions><additionalOption>-Xdoclint:none</additionalOption></additionalOptions> <additionalOptions>
<additionalOption>-Xdoclint:none</additionalOption>
</additionalOptions>
<show>public</show> <show>public</show>
</configuration> </configuration>
</plugin> </plugin>
@ -104,9 +106,9 @@
<!-- MySQL Connector --> <!-- MySQL Connector -->
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>com.mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-j</artifactId>
<version>8.0.22</version> <version>8.3.0</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>

View File

@ -8,44 +8,55 @@ import org.slf4j.LoggerFactory;
class DatabasePool { class DatabasePool {
private final Logger log = LoggerFactory.getLogger(DatabasePool.class); private final Logger log = LoggerFactory.getLogger(DatabasePool.class);
private static final String DB_POOL_MAX_SIZE = "db.pool.maxsize";
private static final String DB_POOL_MIN_SIZE = "db.pool.minsize";
private static final String DB_HOSTNAME_KEY = "db.hostname";
private static final String DB_PORT_KEY = "db.port";
private static final String DB_PASSWORD_KEY = "db.password";
private static final String DB_NAME_KEY = "db.database";
private static final String DB_USER_KEY = "db.username";
private static final String DB_PARAMS_KEY = "db.params";
private HikariDataSource database; private HikariDataSource database;
private static DatabasePool instance;
DatabasePool() {
// Private constructor for singleton pattern
}
public static synchronized DatabasePool getInstance() {
if (instance == null) {
instance = new DatabasePool();
}
return instance;
}
public boolean getStoragePooling(ConfigurationManager config) { public boolean getStoragePooling(ConfigurationManager config) {
try { try {
HikariConfig databaseConfiguration = new HikariConfig(); HikariConfig databaseConfiguration = new HikariConfig();
databaseConfiguration.setMaximumPoolSize(config.getInt("db.pool.maxsize", 50)); databaseConfiguration.setMaximumPoolSize(config.getInt(DB_POOL_MAX_SIZE, 50));
databaseConfiguration.setMinimumIdle(config.getInt("db.pool.minsize", 10)); databaseConfiguration.setMinimumIdle(config.getInt(DB_POOL_MIN_SIZE, 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.setJdbcUrl("jdbc:mysql://" + config.getValue(DB_HOSTNAME_KEY, "localhost") + ":" + config.getValue(DB_PORT_KEY, "3306") + "/" + config.getValue(DB_NAME_KEY) + config.getValue(DB_PARAMS_KEY));
databaseConfiguration.addDataSourceProperty("serverName", config.getValue("db.hostname", "localhost")); databaseConfiguration.addDataSourceProperty("serverName", config.getValue(DB_HOSTNAME_KEY, "localhost"));
databaseConfiguration.addDataSourceProperty("port", config.getValue("db.port", "3306")); databaseConfiguration.addDataSourceProperty("port", config.getValue(DB_PORT_KEY, "3306"));
databaseConfiguration.addDataSourceProperty("databaseName", config.getValue("db.database", "habbo")); databaseConfiguration.addDataSourceProperty("databaseName", config.getValue(DB_NAME_KEY));
databaseConfiguration.addDataSourceProperty("user", config.getValue("db.username")); databaseConfiguration.addDataSourceProperty("user", config.getValue(DB_USER_KEY));
databaseConfiguration.addDataSourceProperty("password", config.getValue("db.password")); databaseConfiguration.addDataSourceProperty("password", config.getValue(DB_PASSWORD_KEY));
databaseConfiguration.addDataSourceProperty("dataSource.logger", "com.mysql.jdbc.log.StandardLogger"); log.info("INITIALIZING DATABASE SERVER: " + config.getValue(DB_HOSTNAME_KEY));
databaseConfiguration.addDataSourceProperty("dataSource.logSlowQueries", "true"); log.info("ON PORT: " + config.getValue(DB_PORT_KEY));
databaseConfiguration.addDataSourceProperty("dataSource.dumpQueriesOnException", "true"); log.info("HABBO DATABASE: " + config.getValue(DB_NAME_KEY));
databaseConfiguration.addDataSourceProperty("prepStmtCacheSize", "500");
databaseConfiguration.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
// databaseConfiguration.addDataSourceProperty("dataSource.logWriter", Logging.getErrorsSQLWriter());
databaseConfiguration.addDataSourceProperty("cachePrepStmts", "true");
databaseConfiguration.addDataSourceProperty("useServerPrepStmts", "true");
databaseConfiguration.addDataSourceProperty("rewriteBatchedStatements", "true");
databaseConfiguration.addDataSourceProperty("useUnicode", "true");
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); this.database = new HikariDataSource(databaseConfiguration);
} catch (Exception e) { } catch (Exception e) {
log.error("Error initializing database connection pool: {}", e.getMessage());
return false; return false;
} }
return true; return true;
} }
public HikariDataSource getDatabase() { public HikariDataSource getDatabase() {
return this.database; if (database == null) {
throw new IllegalStateException("Database connection pool is not initialized.");
}
return database;
} }
} }