Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

log4j2 Trình quản lý JDBC không thể kết nối với cơ sở dữ liệu

Ok, giải pháp là:

1- tạo lớp Nhà máy kết nối

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnection;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDataSource;
import org.apache.commons.pool.impl.GenericObjectPool;


public class ConnectionFactory {

    private static interface Singleton {
        final ConnectionFactory INSTANCE = new ConnectionFactory();
    }

    private final DataSource dataSource;

    private ConnectionFactory() {

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.exit(0);
        }

        Properties properties = new Properties();
        properties.setProperty("user", "root");
        properties.setProperty("password", "root");

        GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>();
        DriverManagerConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
                "jdbc:mysql://example.org:3306/exampleDb", properties
        );
        new PoolableConnectionFactory(connectionFactory, pool, null, "SELECT 1", 3, false, false, Connection.TRANSACTION_READ_COMMITTED);
        this.dataSource = new PoolingDataSource(pool);
    }

    public static Connection getDatabaseConnection() throws SQLException {
        return Singleton.INSTANCE.dataSource.getConnection();
    }
}

2- tạo tệp cấu hình vào src / main / resources gọi là log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE" monitorInterval="30">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <JDBC name="databaseAppender" tableName="logs">
            <ConnectionFactory class="my.pack.ConnectionFactory"
                method="getDatabaseConnection" />
            <!-- <Column name="id" literal="LOGGING.APPLICATION_LOG_SEQUENCE.NEXTVAL" /> -->
            <Column name="date" isEventTimestamp="true" />
            <Column name="level" pattern="%level" />
            <Column name="message" pattern="%message" />
            <Column name="class" pattern="%class" /> 
        </JDBC>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="Console" />
            <AppenderRef ref="databaseAppender" />
        </Root>
    </Loggers>
</Configuration>

3- tạo một bảng như thế này:

4- thêm trình kết nối mysql vào {tomcat} / bin

Gợi ý của Maven:

    <commons-dbcp.version>1.4</commons-dbcp.version>

    <commons-pool.version>1.6</commons-pool.version>

    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>${commons-dbcp.version}</version>
    </dependency>

    <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>${commons-pool.version}</version>
    </dependency>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận hướng chỉ mục từ lược đồ thông tin trong MySQL

  2. Đếm số lượng từ phù hợp

  3. Đánh giá về các chức năng của cửa sổ phân tích mới trong MySQL 8.0

  4. Đang cố gắng 'gọi' các thủ tục được lưu trữ bằng CodeIgniter

  5. CloudFormation:Mẫu RDS Mysql để tạo DB, bảng, người dùng hoặc tải giản đồ