Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.exel.dwrp.api.data;
- import com.exel.dwrp.api.system.task.DBBlocklistWordReloadTask;
- import com.exel.dwrp.api.system.task.DBReloadTask;
- import com.exel.dwrp.api.utils.LogUtils;
- import com.zaxxer.hikari.HikariConfig;
- import com.zaxxer.hikari.HikariDataSource;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Timer;
- /**
- * MySQL Database connection using Hikari as pooling library
- *
- * @author usman
- * @since 24-03-2017
- */
- public class DBConnector {
- private static DBConnector instance = null;
- Connection con;
- HikariDataSource ds;
- /**
- * Init timer and configuration
- */
- private DBConnector() {
- try {
- initDBPool();
- con = ds.getConnection();
- if (Constant.db_auto_reload) {
- // Timer timer = new Timer(true);
- // timer.scheduleAtFixedRate(new DBReloadTask(), 10000, Constant.db_auto_reload_timer);
- Timer timer1 = new Timer(true);
- timer1.scheduleAtFixedRate(new DBBlocklistWordReloadTask(), 10000, Constant.db_auto_reload_blockword_timer);
- }
- } catch (Exception e) {
- StringWriter errors = new StringWriter();
- e.printStackTrace(new PrintWriter(errors));
- LogUtils.getInstance().writeLog(DBConnector.class, LogUtils.Level.ERROR, errors.toString());
- System.out.println("<=== System shutdown. ===>");
- System.out.println("<=== Database connection failed.. please check error log. ===>");
- System.exit(0);
- }
- }
- public static DBConnector getInstance() {
- if (instance == null) {
- instance = new DBConnector();
- }
- return instance;
- }
- /**
- * Init database configuration and pooling library
- */
- private void initDBPool() {
- HikariConfig config = new HikariConfig();
- config.setJdbcUrl("jdbc:mysql://" + Constant.db_host + ":" + Constant.db_port + "/" + Constant.db_name);
- config.setUsername(Constant.db_username);
- config.setPassword(Constant.db_password);
- config.setMaximumPoolSize(Constant.db_connection);
- config.addDataSourceProperty("cachePrepStmts", "true");
- config.addDataSourceProperty("prepStmtCacheSize", "500");
- config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
- config.addDataSourceProperty("useServerPrepStmts","true");
- config.addDataSourceProperty("useLocalSessionState","true");
- config.addDataSourceProperty("useLocalTransactionState","true");
- config.addDataSourceProperty("rewriteBatchedStatements","true");
- config.addDataSourceProperty("cacheResultSetMetadata","true");
- config.addDataSourceProperty("cacheServerConfiguration","true");
- config.addDataSourceProperty("elideSetAutoCommits","true");
- config.addDataSourceProperty("maintainTimeStats","false");
- config.addDataSourceProperty("autoReconnect","true");
- config.addDataSourceProperty("useSSL","false");
- config.setMaxLifetime(Constant.maxLifetime);
- config.setIdleTimeout(Constant.idleTimeout);
- config.setConnectionTimeout(Constant.connectionTimeout);
- config.setValidationTimeout(Constant.validationTimeout);
- config.setConnectionInitSql("SELECT 1");
- config.setConnectionTestQuery("SELECT 1");
- config.setLeakDetectionThreshold(Constant.leakDetectionThreshold);
- ds = new HikariDataSource(config);
- }
- /**
- * getting statement of database
- * @return Statement variable
- */
- public Statement getStatement() {
- Statement statement = null;
- try {
- if (con.isClosed()) {
- initDBPool();
- con = ds.getConnection();
- statement = con.createStatement();
- }
- } catch (SQLException e) {
- StringWriter errors = new StringWriter();
- e.printStackTrace(new PrintWriter(errors));
- LogUtils.getInstance().writeLog(DBConnector.class, LogUtils.Level.ERROR, errors.toString());
- }
- try {
- statement = con.createStatement();
- } catch (SQLException e) {
- StringWriter errors = new StringWriter();
- e.printStackTrace(new PrintWriter(errors));
- LogUtils.getInstance().writeLog(DBConnector.class, LogUtils.Level.ERROR, errors.toString());
- }
- return statement;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement