2016-04-19 3 views
3

Я пытаюсь настроить log4j для входа в базу данных с помощью JDBCAppender, обратившись к приведенной ниже ссылке.log4j type GenericObjectPool не принимает параметры

http://logging.apache.org/log4j/2.x/manual/appenders.html#JDBCAppender

Однако я получаю ошибку «тип GenericObjectPool не принимает параметры». Может кто-нибудь, пожалуйста, помогите мне исправить эту ошибку?

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="error"> 


<Appenders> 
    <JDBC name="databaseAppender" tableName="LOGGING.APPLICATION_LOG"> 
     <ConnectionFactory class="net.example.db.ConnectionFactory" method="getDatabaseConnection" /> 
     <Column name="EVENT_ID" literal="LOGGING.APPLICATION_LOG_SEQUENCE.NEXTVAL" /> 
     <Column name="EVENT_DATE" isEventTimestamp="true" /> 
     <Column name="LEVEL" pattern="%level" /> 
     <Column name="LOGGER" pattern="%logger" /> 
     <Column name="MESSAGE" pattern="%message" /> 
     <Column name="THROWABLE" pattern="%ex{full}" /> 
    </JDBC> 
    </Appenders> 
    <Loggers> 
    <Root level="warn"> 
     <AppenderRef ref="databaseAppender"/> 
    </Root> 
    </Loggers> 
</Configuration> 

ConnectionFactory.java

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() { 
     Properties properties = new Properties(); 
     properties.setProperty("user", "logging"); 
     properties.setProperty("password", "abc123"); // or get properties from some configuration file 

     GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>(); //Error: type GenericObjectPool does not take parameters 
     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(); 
    } 
} 
+0

такие же проблемы, любые решения? – Kjenos

ответ

1

Проблема была решена самостоятельно.

Я добавил, что зависимость от maven работает отлично.

<dependency> 
     <groupId>commons-pool</groupId> 
     <artifactId>commons-pool</artifactId> 
     <version>1.6</version> 
    </dependency> 
Смежные вопросы