HHH-18224 - db info logging cleanup
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
This commit is contained in:
parent
f556ba9e90
commit
55108d0740
|
@ -73,8 +73,8 @@ public interface MappingModelCreationLogger extends BasicLogger {
|
||||||
|
|
||||||
|
|
||||||
|[[connections-pooling]]org.hibernate.orm.connections.pooling
|
|[[connections-pooling]]org.hibernate.orm.connections.pooling
|
||||||
|<<ConnectionPoolingLogger>>
|
|<<ConnectionInfoLogger>>
|
||||||
|Logging related to connection pooling
|
|Logging related to connections and connection pooling
|
||||||
|
|
||||||
|org.hibernate.orm.boot
|
|org.hibernate.orm.boot
|
||||||
|n/a
|
|n/a
|
||||||
|
@ -93,9 +93,9 @@ public interface MappingModelCreationLogger extends BasicLogger {
|
||||||
|Sub-system (?)
|
|Sub-system (?)
|
||||||
|
|
||||||
|
|
||||||
|[[ConnectionPoolingLogger]]10001001
|
|[[ConnectionInfoLogger]]10001001
|
||||||
|10001500
|
|10001500
|
||||||
|org.hibernate.internal.log.ConnectionPoolingLogger
|
|org.hibernate.internal.log.ConnectionInfoLogger
|
||||||
| <<connections-pooling>>
|
| <<connections-pooling>>
|
||||||
|
|
||||||
|1
|
|1
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiato
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
|
@ -32,8 +33,6 @@ import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
|
|
||||||
import static org.hibernate.cfg.AgroalSettings.AGROAL_CONFIG_PREFIX;
|
import static org.hibernate.cfg.AgroalSettings.AGROAL_CONFIG_PREFIX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,7 +61,6 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
|
|
||||||
public static final String CONFIG_PREFIX = AGROAL_CONFIG_PREFIX + ".";
|
public static final String CONFIG_PREFIX = AGROAL_CONFIG_PREFIX + ".";
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final Logger LOGGER = Logger.getLogger( AgroalConnectionProvider.class );
|
|
||||||
private AgroalDataSource agroalDataSource = null;
|
private AgroalDataSource agroalDataSource = null;
|
||||||
private DatabaseConnectionInfo dbInfo;
|
private DatabaseConnectionInfo dbInfo;
|
||||||
|
|
||||||
|
@ -93,7 +91,7 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map<String, Object> props) throws HibernateException {
|
public void configure(Map<String, Object> props) throws HibernateException {
|
||||||
LOGGER.debug( "Configuring Agroal" );
|
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "Agroal" );
|
||||||
try {
|
try {
|
||||||
AgroalPropertiesReader agroalProperties = new AgroalPropertiesReader( CONFIG_PREFIX )
|
AgroalPropertiesReader agroalProperties = new AgroalPropertiesReader( CONFIG_PREFIX )
|
||||||
.readProperties( (Map) props ); //TODO: this is a garbage cast
|
.readProperties( (Map) props ); //TODO: this is a garbage cast
|
||||||
|
@ -122,9 +120,9 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
.setDBMaxPoolSize( String.valueOf(acpc.maxSize()) );
|
.setDBMaxPoolSize( String.valueOf(acpc.maxSize()) );
|
||||||
}
|
}
|
||||||
catch ( Exception e ) {
|
catch ( Exception e ) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.unableToInstantiateConnectionPool( e );
|
||||||
throw new HibernateException( e );
|
throw new HibernateException( e );
|
||||||
}
|
}
|
||||||
LOGGER.debug( "Agroal Configured" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- ConnectionProvider
|
// --- ConnectionProvider
|
||||||
|
@ -177,6 +175,8 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
|
||||||
@Override
|
@Override
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if ( agroalDataSource != null ) {
|
if ( agroalDataSource != null ) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( agroalDataSource.getConfiguration().connectionPoolConfiguration().
|
||||||
|
connectionFactoryConfiguration().jdbcUrl() );
|
||||||
agroalDataSource.close();
|
agroalDataSource.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,15 +24,14 @@ import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiato
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.internal.util.PropertiesHelper;
|
import org.hibernate.internal.util.PropertiesHelper;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
|
|
||||||
import static org.hibernate.c3p0.internal.C3P0MessageLogger.C3P0_LOGGER;
|
|
||||||
import static org.hibernate.c3p0.internal.C3P0MessageLogger.C3P0_MSG_LOGGER;
|
import static org.hibernate.c3p0.internal.C3P0MessageLogger.C3P0_MSG_LOGGER;
|
||||||
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.extractSetting;
|
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.extractSetting;
|
||||||
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
|
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
|
||||||
|
@ -111,6 +110,8 @@ public class C3P0ConnectionProvider
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map<String, Object> props) {
|
public void configure(Map<String, Object> props) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "C3p0" );
|
||||||
|
|
||||||
final String jdbcDriverClass = extractSetting(
|
final String jdbcDriverClass = extractSetting(
|
||||||
props,
|
props,
|
||||||
JdbcSettings.JAKARTA_JDBC_DRIVER,
|
JdbcSettings.JAKARTA_JDBC_DRIVER,
|
||||||
|
@ -126,19 +127,17 @@ public class C3P0ConnectionProvider
|
||||||
|
|
||||||
final Properties connectionProps = ConnectionProviderInitiator.getConnectionProperties( props );
|
final Properties connectionProps = ConnectionProviderInitiator.getConnectionProperties( props );
|
||||||
|
|
||||||
C3P0_MSG_LOGGER.connectionProperties( ConfigurationHelper.maskOut( connectionProps, "password" ) );
|
|
||||||
|
|
||||||
autocommit = getBoolean( JdbcSettings.AUTOCOMMIT, props );
|
autocommit = getBoolean( JdbcSettings.AUTOCOMMIT, props );
|
||||||
|
|
||||||
if ( jdbcDriverClass == null ) {
|
if ( jdbcDriverClass == null ) {
|
||||||
C3P0_MSG_LOGGER.jdbcDriverNotSpecified();
|
ConnectionInfoLogger.INSTANCE.jdbcDriverNotSpecified();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
serviceRegistry.requireService( ClassLoaderService.class ).classForName( jdbcDriverClass );
|
serviceRegistry.requireService( ClassLoaderService.class ).classForName( jdbcDriverClass );
|
||||||
}
|
}
|
||||||
catch (ClassLoadingException e) {
|
catch (ClassLoadingException e) {
|
||||||
throw new ClassLoadingException( C3P0_MSG_LOGGER.jdbcDriverNotFound( jdbcDriverClass ), e );
|
throw new ClassLoadingException( "JDBC Driver class " + jdbcDriverClass + " not found", e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,8 +196,8 @@ public class C3P0ConnectionProvider
|
||||||
ds = DataSources.pooledDataSource( unpooled, allProps );
|
ds = DataSources.pooledDataSource( unpooled, allProps );
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
C3P0_LOGGER.error( C3P0_MSG_LOGGER.unableToInstantiateC3p0ConnectionPool(), e );;
|
ConnectionInfoLogger.INSTANCE.unableToInstantiateConnectionPool( e );
|
||||||
throw new HibernateException( C3P0_MSG_LOGGER.unableToInstantiateC3p0ConnectionPool(), e );
|
throw new HibernateException( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
isolation = ConnectionProviderInitiator.extractIsolation( props );
|
isolation = ConnectionProviderInitiator.extractIsolation( props );
|
||||||
|
@ -247,12 +246,12 @@ public class C3P0ConnectionProvider
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stop() {
|
public void stop() {
|
||||||
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( C3p0Settings.C3P0_CONFIG_PREFIX );
|
||||||
try {
|
try {
|
||||||
DataSources.destroy( ds );
|
DataSources.destroy( ds );
|
||||||
}
|
}
|
||||||
catch (SQLException sqle) {
|
catch (SQLException sqle) {
|
||||||
C3P0_MSG_LOGGER.unableToDestroyC3p0ConnectionPool( sqle );
|
ConnectionInfoLogger.INSTANCE.unableToDestroyConnectionPool( sqle );
|
||||||
throw new HibernateException( "Unable to destroy the connection pool", sqle );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,19 +6,15 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.c3p0.internal;
|
package org.hibernate.c3p0.internal;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
|
|
||||||
import org.hibernate.internal.log.ConnectionPoolingLogger;
|
|
||||||
import org.hibernate.internal.log.SubSystemLogging;
|
import org.hibernate.internal.log.SubSystemLogging;
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
import org.jboss.logging.annotations.Cause;
|
|
||||||
import org.jboss.logging.annotations.LogMessage;
|
import org.jboss.logging.annotations.LogMessage;
|
||||||
import org.jboss.logging.annotations.Message;
|
import org.jboss.logging.annotations.Message;
|
||||||
import org.jboss.logging.annotations.MessageLogger;
|
import org.jboss.logging.annotations.MessageLogger;
|
||||||
import org.jboss.logging.annotations.ValidIdRange;
|
import org.jboss.logging.annotations.ValidIdRange;
|
||||||
|
|
||||||
import static org.jboss.logging.Logger.Level.INFO;
|
|
||||||
import static org.jboss.logging.Logger.Level.WARN;
|
import static org.jboss.logging.Logger.Level.WARN;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,10 +29,9 @@ import static org.jboss.logging.Logger.Level.WARN;
|
||||||
name = C3P0MessageLogger.NAME,
|
name = C3P0MessageLogger.NAME,
|
||||||
description = "Logging related to the C3P0 connection pool"
|
description = "Logging related to the C3P0 connection pool"
|
||||||
)
|
)
|
||||||
public interface C3P0MessageLogger extends ConnectionPoolingLogger {
|
public interface C3P0MessageLogger extends ConnectionInfoLogger {
|
||||||
String NAME = ConnectionPoolingLogger.LOGGER_NAME + ".c3p0";
|
String NAME = ConnectionInfoLogger.LOGGER_NAME + ".c3p0";
|
||||||
|
|
||||||
Logger C3P0_LOGGER = Logger.getLogger( NAME );
|
|
||||||
C3P0MessageLogger C3P0_MSG_LOGGER = Logger.getMessageLogger( C3P0MessageLogger.class, NAME );
|
C3P0MessageLogger C3P0_MSG_LOGGER = Logger.getMessageLogger( C3P0MessageLogger.class, NAME );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,31 +44,4 @@ public interface C3P0MessageLogger extends ConnectionPoolingLogger {
|
||||||
@Message(value = "Both hibernate-style property '%1$s' and c3p0-style property '%2$s' have been set in Hibernate "
|
@Message(value = "Both hibernate-style property '%1$s' and c3p0-style property '%2$s' have been set in Hibernate "
|
||||||
+ "properties. Hibernate-style property '%1$s' will be used and c3p0-style property '%2$s' will be ignored!", id = 10001)
|
+ "properties. Hibernate-style property '%1$s' will be used and c3p0-style property '%2$s' will be ignored!", id = 10001)
|
||||||
void bothHibernateAndC3p0StylesSet(String hibernateStyle,String c3p0Style);
|
void bothHibernateAndC3p0StylesSet(String hibernateStyle,String c3p0Style);
|
||||||
|
|
||||||
/**
|
|
||||||
* Build a message about not being able to find the JDBC driver class
|
|
||||||
*
|
|
||||||
* @param jdbcDriverClass The JDBC driver class we could not find
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "JDBC Driver class not found: %s", id = 10003)
|
|
||||||
String jdbcDriverNotFound(String jdbcDriverClass);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Log a message (WARN) about not being able to stop the underlying c3p0 pool.
|
|
||||||
*
|
|
||||||
* @param e The exception when we tried to stop pool
|
|
||||||
*/
|
|
||||||
@LogMessage(level = WARN)
|
|
||||||
@Message(value = "Could not destroy C3P0 connection pool", id = 10004)
|
|
||||||
void unableToDestroyC3p0ConnectionPool(@Cause SQLException e);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build a message about not being able to start the underlying c3p0 pool.
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Could not instantiate C3P0 connection pool", id = 10005)
|
|
||||||
String unableToInstantiateC3p0ConnectionPool();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import static org.hibernate.dialect.SimpleDatabaseVersion.NO_VERSION;
|
||||||
*/
|
*/
|
||||||
public class DatabaseConnectionInfoImpl implements DatabaseConnectionInfo {
|
public class DatabaseConnectionInfoImpl implements DatabaseConnectionInfo {
|
||||||
|
|
||||||
|
// Means either the value was not explicitly set, or simply not offered by the connection provider
|
||||||
public static final String DEFAULT = "undefined/unknown";
|
public static final String DEFAULT = "undefined/unknown";
|
||||||
|
|
||||||
protected String dbUrl = DEFAULT;
|
protected String dbUrl = DEFAULT;
|
||||||
|
@ -86,7 +87,12 @@ public class DatabaseConnectionInfoImpl implements DatabaseConnectionInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkValidInteger(String integerString) {
|
private boolean checkValidInteger(String integerString) {
|
||||||
return checkValidString( integerString ) && Integer.parseInt( integerString, 10 ) >= 0;
|
try {
|
||||||
|
return checkValidString( integerString ) && Integer.parseInt( integerString, 10 ) >= 0;
|
||||||
|
}
|
||||||
|
catch (NumberFormatException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkValidString(String value) {
|
private boolean checkValidString(String value) {
|
||||||
|
@ -101,7 +107,8 @@ public class DatabaseConnectionInfoImpl implements DatabaseConnectionInfo {
|
||||||
return DEFAULT.equalsIgnoreCase( value );
|
return DEFAULT.equalsIgnoreCase( value );
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
@Override
|
||||||
|
public String getDBInfoAsString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append( "\tDatabase JDBC URL [" ).append( dbUrl ).append(']');
|
sb.append( "\tDatabase JDBC URL [" ).append( dbUrl ).append(']');
|
||||||
sb.append(sb.length() > 0 ? "\n\t" : "" ).append( "Database driver: " ).append( dbDriverName );
|
sb.append(sb.length() > 0 ? "\n\t" : "" ).append( "Database driver: " ).append( dbDriverName );
|
||||||
|
|
|
@ -28,7 +28,6 @@ import org.hibernate.HibernateException;
|
||||||
import org.hibernate.Internal;
|
import org.hibernate.Internal;
|
||||||
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
|
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
import org.hibernate.cfg.JdbcSettings;
|
|
||||||
import org.hibernate.dialect.Database;
|
import org.hibernate.dialect.Database;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
@ -40,9 +39,9 @@ import org.hibernate.service.spi.ServiceException;
|
||||||
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
|
|
||||||
import static org.hibernate.internal.log.ConnectionPoolingLogger.CONNECTIONS_LOGGER;
|
import static org.hibernate.cfg.JdbcSettings.JAKARTA_JDBC_URL;
|
||||||
import static org.hibernate.internal.log.ConnectionPoolingLogger.CONNECTIONS_MESSAGE_LOGGER;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A connection provider that uses the {@link DriverManager} directly to open connections and provides
|
* A connection provider that uses the {@link DriverManager} directly to open connections and provides
|
||||||
|
@ -82,7 +81,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map<String, Object> configurationValues) {
|
public void configure(Map<String, Object> configurationValues) {
|
||||||
CONNECTIONS_MESSAGE_LOGGER.usingHibernateBuiltInConnectionPool();
|
ConnectionInfoLogger.INSTANCE.usingHibernateBuiltInConnectionPool();
|
||||||
PooledConnections pool = buildPool( configurationValues, serviceRegistry );
|
PooledConnections pool = buildPool( configurationValues, serviceRegistry );
|
||||||
final long validationInterval = ConfigurationHelper.getLong( VALIDATION_INTERVAL, configurationValues, 30 );
|
final long validationInterval = ConfigurationHelper.getLong( VALIDATION_INTERVAL, configurationValues, 30 );
|
||||||
this.state = new PoolState( pool, validationInterval );
|
this.state = new PoolState( pool, validationInterval );
|
||||||
|
@ -139,7 +138,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
StringBuilder list = new StringBuilder();
|
StringBuilder list = new StringBuilder();
|
||||||
if ( !success ) {
|
if ( !success ) {
|
||||||
//we're hoping that the driver is already loaded
|
//we're hoping that the driver is already loaded
|
||||||
CONNECTIONS_MESSAGE_LOGGER.noDriver( AvailableSettings.DRIVER );
|
ConnectionInfoLogger.INSTANCE.jdbcDriverNotSpecified();
|
||||||
Enumeration<Driver> drivers = DriverManager.getDrivers();
|
Enumeration<Driver> drivers = DriverManager.getDrivers();
|
||||||
while ( drivers.hasMoreElements() ) {
|
while ( drivers.hasMoreElements() ) {
|
||||||
if ( list.length() != 0) {
|
if ( list.length() != 0) {
|
||||||
|
@ -150,21 +149,11 @@ public class DriverManagerConnectionProviderImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( url == null ) {
|
if ( url == null ) {
|
||||||
final String msg = CONNECTIONS_MESSAGE_LOGGER.jdbcUrlNotSpecified( AvailableSettings.URL );
|
throw new HibernateException( "No JDBC URL specified by property " + JAKARTA_JDBC_URL );
|
||||||
CONNECTIONS_LOGGER.error( msg );
|
|
||||||
throw new HibernateException( msg );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final Properties connectionProps = ConnectionProviderInitiator.getConnectionProperties( configurationValues );
|
final Properties connectionProps = ConnectionProviderInitiator.getConnectionProperties( configurationValues );
|
||||||
|
|
||||||
// if debug level is enabled, then log the password, otherwise mask it
|
|
||||||
if ( CONNECTIONS_LOGGER.isDebugEnabled() ) {
|
|
||||||
CONNECTIONS_MESSAGE_LOGGER.connectionProperties( connectionProps );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
CONNECTIONS_MESSAGE_LOGGER.connectionProperties( ConfigurationHelper.maskOut( connectionProps, "password" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
final boolean autoCommit = ConfigurationHelper.getBoolean( AvailableSettings.AUTOCOMMIT, configurationValues );
|
final boolean autoCommit = ConfigurationHelper.getBoolean( AvailableSettings.AUTOCOMMIT, configurationValues );
|
||||||
final Integer isolation = ConnectionProviderInitiator.extractIsolation( configurationValues );
|
final Integer isolation = ConnectionProviderInitiator.extractIsolation( configurationValues );
|
||||||
final String initSql = (String) configurationValues.get( INIT_SQL );
|
final String initSql = (String) configurationValues.get( INIT_SQL );
|
||||||
|
@ -186,8 +175,8 @@ public class DriverManagerConnectionProviderImpl
|
||||||
.setDBDriverName( success ? driverClassName : list.toString() )
|
.setDBDriverName( success ? driverClassName : list.toString() )
|
||||||
.setDBAutoCommitMode( Boolean.toString( autoCommit ) )
|
.setDBAutoCommitMode( Boolean.toString( autoCommit ) )
|
||||||
.setDBIsolationLevel( isolation != null ? ConnectionProviderInitiator.toIsolationNiceName(isolation) : null )
|
.setDBIsolationLevel( isolation != null ? ConnectionProviderInitiator.toIsolationNiceName(isolation) : null )
|
||||||
// no standard setting for minimum size?
|
.setDBMinPoolSize( String.valueOf(ConfigurationHelper.getInt(MIN_SIZE, configurationValues, 1)) )
|
||||||
.setDBMaxPoolSize( ConfigurationHelper.getString(JdbcSettings.POOL_SIZE, configurationValues) );
|
.setDBMaxPoolSize( String.valueOf(ConfigurationHelper.getInt(AvailableSettings.POOL_SIZE, configurationValues, 20)) );
|
||||||
|
|
||||||
return factory.create(
|
return factory.create(
|
||||||
|
|
||||||
|
@ -204,7 +193,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
|
|
||||||
private static Driver loadDriverIfPossible(String driverClassName, ServiceRegistryImplementor serviceRegistry) {
|
private static Driver loadDriverIfPossible(String driverClassName, ServiceRegistryImplementor serviceRegistry) {
|
||||||
if ( driverClassName == null ) {
|
if ( driverClassName == null ) {
|
||||||
CONNECTIONS_LOGGER.debug( "No driver class specified" );
|
ConnectionInfoLogger.INSTANCE.debug( "No driver class specified" );
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +218,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
|
|
||||||
private static ConnectionCreatorFactory loadConnectionCreatorFactory(String connectionCreatorFactoryClassName, ServiceRegistryImplementor serviceRegistry) {
|
private static ConnectionCreatorFactory loadConnectionCreatorFactory(String connectionCreatorFactoryClassName, ServiceRegistryImplementor serviceRegistry) {
|
||||||
if ( connectionCreatorFactoryClassName == null ) {
|
if ( connectionCreatorFactoryClassName == null ) {
|
||||||
CONNECTIONS_LOGGER.debug( "No connection creator factory class specified" );
|
ConnectionInfoLogger.INSTANCE.debug( "No connection creator factory class specified" );
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +296,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
protected void validateConnectionsReturned() {
|
protected void validateConnectionsReturned() {
|
||||||
int allocationCount = getOpenConnections();
|
int allocationCount = getOpenConnections();
|
||||||
if ( allocationCount != 0 ) {
|
if ( allocationCount != 0 ) {
|
||||||
CONNECTIONS_MESSAGE_LOGGER.error( "Connection leak detected: there are " + allocationCount + " unclosed connections");
|
ConnectionInfoLogger.INSTANCE.error( "Connection leak detected: there are " + allocationCount + " unclosed connections");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,7 +357,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
|
|
||||||
private PooledConnections(
|
private PooledConnections(
|
||||||
Builder builder) {
|
Builder builder) {
|
||||||
CONNECTIONS_LOGGER.debugf( "Initializing Connection pool with %s Connections", builder.initialSize );
|
ConnectionInfoLogger.INSTANCE.debugf( "Initializing Connection pool with %s Connections", builder.initialSize );
|
||||||
connectionCreator = builder.connectionCreator;
|
connectionCreator = builder.connectionCreator;
|
||||||
connectionValidator = builder.connectionValidator == null
|
connectionValidator = builder.connectionValidator == null
|
||||||
? ConnectionValidator.ALWAYS_VALID
|
? ConnectionValidator.ALWAYS_VALID
|
||||||
|
@ -376,7 +365,6 @@ public class DriverManagerConnectionProviderImpl
|
||||||
autoCommit = builder.autoCommit;
|
autoCommit = builder.autoCommit;
|
||||||
maxSize = builder.maxSize;
|
maxSize = builder.maxSize;
|
||||||
minSize = builder.minSize;
|
minSize = builder.minSize;
|
||||||
CONNECTIONS_MESSAGE_LOGGER.hibernateConnectionPoolSize( maxSize, minSize );
|
|
||||||
addConnections( builder.initialSize );
|
addConnections( builder.initialSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,18 +374,18 @@ public class DriverManagerConnectionProviderImpl
|
||||||
if ( !primed && size >= minSize ) {
|
if ( !primed && size >= minSize ) {
|
||||||
// IMPL NOTE : the purpose of primed is to allow the pool to lazily reach its
|
// IMPL NOTE : the purpose of primed is to allow the pool to lazily reach its
|
||||||
// defined min-size.
|
// defined min-size.
|
||||||
CONNECTIONS_LOGGER.debug( "Connection pool now considered primed; min-size will be maintained" );
|
ConnectionInfoLogger.INSTANCE.debug( "Connection pool now considered primed; min-size will be maintained" );
|
||||||
primed = true;
|
primed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( size < minSize && primed ) {
|
if ( size < minSize && primed ) {
|
||||||
int numberToBeAdded = minSize - size;
|
int numberToBeAdded = minSize - size;
|
||||||
CONNECTIONS_LOGGER.debugf( "Adding %s Connections to the pool", numberToBeAdded );
|
ConnectionInfoLogger.INSTANCE.debugf( "Adding %s Connections to the pool", numberToBeAdded );
|
||||||
addConnections( numberToBeAdded );
|
addConnections( numberToBeAdded );
|
||||||
}
|
}
|
||||||
else if ( size > maxSize ) {
|
else if ( size > maxSize ) {
|
||||||
int numberToBeRemoved = size - maxSize;
|
int numberToBeRemoved = size - maxSize;
|
||||||
CONNECTIONS_LOGGER.debugf( "Removing %s Connections from the pool", numberToBeRemoved );
|
ConnectionInfoLogger.INSTANCE.debugf( "Removing %s Connections from the pool", numberToBeRemoved );
|
||||||
removeConnections( numberToBeRemoved );
|
removeConnections( numberToBeRemoved );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -422,7 +410,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
t = ex;
|
t = ex;
|
||||||
}
|
}
|
||||||
closeConnection( conn, t );
|
closeConnection( conn, t );
|
||||||
CONNECTIONS_MESSAGE_LOGGER.debug( "Connection release failed. Closing pooled connection", t );
|
ConnectionInfoLogger.INSTANCE.debug( "Connection release failed. Closing pooled connection", t );
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,7 +445,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
t = ex;
|
t = ex;
|
||||||
}
|
}
|
||||||
closeConnection( conn, t );
|
closeConnection( conn, t );
|
||||||
CONNECTIONS_MESSAGE_LOGGER.debug( "Connection preparation failed. Closing pooled connection", t );
|
ConnectionInfoLogger.INSTANCE.debug( "Connection preparation failed. Closing pooled connection", t );
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -466,7 +454,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
catch (SQLException ex) {
|
catch (SQLException ex) {
|
||||||
CONNECTIONS_MESSAGE_LOGGER.unableToCloseConnection( ex );
|
ConnectionInfoLogger.INSTANCE.unableToClosePooledConnection( ex );
|
||||||
if ( t != null ) {
|
if ( t != null ) {
|
||||||
t.addSuppressed( ex );
|
t.addSuppressed( ex );
|
||||||
}
|
}
|
||||||
|
@ -480,7 +468,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
try {
|
try {
|
||||||
int allocationCount = allConnections.size() - availableConnections.size();
|
int allocationCount = allConnections.size() - availableConnections.size();
|
||||||
if (allocationCount > 0) {
|
if (allocationCount > 0) {
|
||||||
CONNECTIONS_LOGGER.error( "Connection leak detected: there are " + allocationCount + " unclosed connections upon shutting down pool " + getUrl());
|
ConnectionInfoLogger.INSTANCE.error( "Connection leak detected: there are " + allocationCount + " unclosed connections upon shutting down pool " + getUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
@ -611,7 +599,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
if ( !active ) {
|
if ( !active ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CONNECTIONS_MESSAGE_LOGGER.cleaningUpConnectionPool( pool.getUrl() );
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( pool.getUrl() );
|
||||||
active = false;
|
active = false;
|
||||||
if ( executorService != null ) {
|
if ( executorService != null ) {
|
||||||
PrivilegedAction delegateToPrivilegedAction =
|
PrivilegedAction delegateToPrivilegedAction =
|
||||||
|
@ -636,7 +624,7 @@ public class DriverManagerConnectionProviderImpl
|
||||||
pool.close();
|
pool.close();
|
||||||
}
|
}
|
||||||
catch (SQLException e) {
|
catch (SQLException e) {
|
||||||
CONNECTIONS_MESSAGE_LOGGER.unableToClosePooledConnection( e );
|
ConnectionInfoLogger.INSTANCE.unableToDestroyConnectionPool( e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
|
|
@ -26,5 +26,5 @@ public interface DatabaseConnectionInfo {
|
||||||
|
|
||||||
DatabaseConnectionInfo setDBMaxPoolSize(String maxPoolSize);
|
DatabaseConnectionInfo setDBMaxPoolSize(String maxPoolSize);
|
||||||
|
|
||||||
String toString();
|
String getDBInfoAsString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,10 +17,8 @@ import org.hibernate.boot.registry.StandardServiceInitiator;
|
||||||
import org.hibernate.cfg.JdbcSettings;
|
import org.hibernate.cfg.JdbcSettings;
|
||||||
import org.hibernate.dialect.DatabaseVersion;
|
import org.hibernate.dialect.DatabaseVersion;
|
||||||
import org.hibernate.dialect.Dialect;
|
import org.hibernate.dialect.Dialect;
|
||||||
import org.hibernate.dialect.SimpleDatabaseVersion;
|
|
||||||
import org.hibernate.engine.config.spi.ConfigurationService;
|
import org.hibernate.engine.config.spi.ConfigurationService;
|
||||||
import org.hibernate.engine.jdbc.batch.spi.BatchBuilder;
|
import org.hibernate.engine.jdbc.batch.spi.BatchBuilder;
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
|
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
|
||||||
|
@ -36,7 +34,7 @@ import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
import org.hibernate.event.internal.EmptyEventManager;
|
import org.hibernate.event.internal.EmptyEventManager;
|
||||||
import org.hibernate.event.spi.EventManager;
|
import org.hibernate.event.spi.EventManager;
|
||||||
import org.hibernate.internal.CoreMessageLogger;
|
import org.hibernate.internal.CoreMessageLogger;
|
||||||
import org.hibernate.internal.log.ConnectionProviderLogger;
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.jdbc.AbstractReturningWork;
|
import org.hibernate.jdbc.AbstractReturningWork;
|
||||||
import org.hibernate.jpa.internal.MutableJpaComplianceImpl;
|
import org.hibernate.jpa.internal.MutableJpaComplianceImpl;
|
||||||
import org.hibernate.jpa.spi.JpaCompliance;
|
import org.hibernate.jpa.spi.JpaCompliance;
|
||||||
|
@ -169,7 +167,7 @@ public class JdbcEnvironmentInitiator implements StandardServiceInitiator<JdbcEn
|
||||||
// most likely, the version hasn't been set yet, at least not for the ConnectionProviders that we currently maintain
|
// most likely, the version hasn't been set yet, at least not for the ConnectionProviders that we currently maintain
|
||||||
databaseConnectionInfo.setDBVersion( jdbcEnvironment.getDialect().getVersion() );
|
databaseConnectionInfo.setDBVersion( jdbcEnvironment.getDialect().getVersion() );
|
||||||
|
|
||||||
ConnectionProviderLogger.INSTANCE.logConnectionDetails( databaseConnectionInfo );
|
ConnectionInfoLogger.INSTANCE.logConnectionInfoDetails( databaseConnectionInfo.getDBInfoAsString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JdbcEnvironmentImpl getJdbcEnvironmentWithDefaults(
|
private static JdbcEnvironmentImpl getJdbcEnvironmentWithDefaults(
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
package org.hibernate.internal.log;
|
package org.hibernate.internal.log;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.jboss.logging.BasicLogger;
|
import org.jboss.logging.BasicLogger;
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
@ -17,7 +16,7 @@ import org.jboss.logging.annotations.Message;
|
||||||
import org.jboss.logging.annotations.MessageLogger;
|
import org.jboss.logging.annotations.MessageLogger;
|
||||||
import org.jboss.logging.annotations.ValidIdRange;
|
import org.jboss.logging.annotations.ValidIdRange;
|
||||||
|
|
||||||
import static org.jboss.logging.Logger.Level.ERROR;
|
import static org.jboss.logging.Logger.Level.DEBUG;
|
||||||
import static org.jboss.logging.Logger.Level.INFO;
|
import static org.jboss.logging.Logger.Level.INFO;
|
||||||
import static org.jboss.logging.Logger.Level.WARN;
|
import static org.jboss.logging.Logger.Level.WARN;
|
||||||
|
|
||||||
|
@ -27,50 +26,46 @@ import static org.jboss.logging.Logger.Level.WARN;
|
||||||
@MessageLogger( projectCode = "HHH" )
|
@MessageLogger( projectCode = "HHH" )
|
||||||
@ValidIdRange( min = 10001001, max = 10001500 )
|
@ValidIdRange( min = 10001001, max = 10001500 )
|
||||||
@SubSystemLogging(
|
@SubSystemLogging(
|
||||||
name = ConnectionPoolingLogger.LOGGER_NAME,
|
name = ConnectionInfoLogger.LOGGER_NAME,
|
||||||
description = "Logging related to connection pooling"
|
description = "Logging related to connection pooling"
|
||||||
)
|
)
|
||||||
public interface ConnectionPoolingLogger extends BasicLogger {
|
public interface ConnectionInfoLogger extends BasicLogger {
|
||||||
String LOGGER_NAME = SubSystemLogging.BASE + ".connections.pooling";
|
String LOGGER_NAME = SubSystemLogging.BASE + ".connections.pooling";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static access to the logging instance
|
* Static access to the logging instance
|
||||||
*/
|
*/
|
||||||
Logger CONNECTIONS_LOGGER = Logger.getLogger( LOGGER_NAME );
|
ConnectionInfoLogger INSTANCE = Logger.getMessageLogger( ConnectionInfoLogger.class, LOGGER_NAME );
|
||||||
ConnectionPoolingLogger CONNECTIONS_MESSAGE_LOGGER = Logger.getMessageLogger( ConnectionPoolingLogger.class, LOGGER_NAME );
|
|
||||||
|
|
||||||
@LogMessage(level = INFO)
|
|
||||||
@Message(value = "Connection properties: %s", id = 10001001)
|
|
||||||
void connectionProperties(Properties connectionProps);
|
|
||||||
|
|
||||||
@LogMessage(level = WARN)
|
@LogMessage(level = WARN)
|
||||||
@Message(value = "Using built-in connection pool (not intended for production use)", id = 10001002)
|
@Message(value = "Using built-in connection pool (not intended for production use)", id = 10001002)
|
||||||
void usingHibernateBuiltInConnectionPool();
|
void usingHibernateBuiltInConnectionPool();
|
||||||
|
|
||||||
@Message(value = "No JDBC URL specified by property %s", id = 10001004)
|
|
||||||
String jdbcUrlNotSpecified(String property);
|
|
||||||
|
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = INFO)
|
||||||
@Message(value = "No JDBC driver class specified by %s", id = 10001010)
|
@Message(value = "Database info:\n%s", id = 10001005)
|
||||||
void noDriver(String property);
|
void logConnectionInfoDetails(String databaseConnectionInfo);
|
||||||
|
|
||||||
@LogMessage(level = WARN)
|
@LogMessage(level = WARN)
|
||||||
@Message(id = 10001006, value = "No JDBC Driver class was specified by property `jakarta.persistence.jdbc.driver`, `hibernate.driver` or `javax.persistence.jdbc.driver`")
|
@Message(id = 10001006, value = "No JDBC Driver class was specified by property `jakarta.persistence.jdbc.driver`, `hibernate.driver` or `javax.persistence.jdbc.driver`")
|
||||||
void jdbcDriverNotSpecified();
|
void jdbcDriverNotSpecified();
|
||||||
|
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = DEBUG)
|
||||||
@Message(value = "Cleaning up connection pool [%s]", id = 10001008)
|
@Message(value = "Cleaning up connection pool [%s]", id = 10001008)
|
||||||
void cleaningUpConnectionPool(String url);
|
void cleaningUpConnectionPool(String info);
|
||||||
|
|
||||||
@LogMessage(level = WARN)
|
@LogMessage(level = WARN)
|
||||||
@Message(value = "Problem closing pooled connection", id = 10001009)
|
@Message(value = "Problem closing pooled connection", id = 10001009)
|
||||||
void unableToClosePooledConnection(@Cause SQLException e);
|
void unableToClosePooledConnection(@Cause SQLException e);
|
||||||
|
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = WARN)
|
||||||
@Message(value = "Connection pool size: %s (min=%s)", id = 10001115)
|
@Message(value = "Could not destroy connection pool", id = 10001010)
|
||||||
void hibernateConnectionPoolSize(int poolSize, int minSize);
|
void unableToDestroyConnectionPool(@Cause Exception e);
|
||||||
|
|
||||||
@LogMessage(level = ERROR)
|
@LogMessage(level = DEBUG)
|
||||||
@Message(value = "Error closing connection", id = 10001284)
|
@Message(value = "Could not instantiate connection pool", id = 10001011)
|
||||||
void unableToCloseConnection(@Cause Exception e);
|
void unableToInstantiateConnectionPool(@Cause Exception e);
|
||||||
|
|
||||||
|
@LogMessage(level = DEBUG)
|
||||||
|
@Message(value = "Configuring connection pool [%s]", id = 10001012)
|
||||||
|
void configureConnectionPool(String type);
|
||||||
}
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.internal.log;
|
|
||||||
|
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
|
||||||
|
|
||||||
import org.jboss.logging.BasicLogger;
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
import org.jboss.logging.annotations.LogMessage;
|
|
||||||
import org.jboss.logging.annotations.Message;
|
|
||||||
import org.jboss.logging.annotations.MessageLogger;
|
|
||||||
import org.jboss.logging.annotations.ValidIdRange;
|
|
||||||
|
|
||||||
import static org.jboss.logging.Logger.Level.INFO;
|
|
||||||
|
|
||||||
@MessageLogger( projectCode = "HHH" )
|
|
||||||
@ValidIdRange( min = 10002001, max = 10002100 )
|
|
||||||
@SubSystemLogging(
|
|
||||||
name = ConnectionProviderLogger.LOGGER_NAME,
|
|
||||||
description = "Used to log details of database access through `ConnectionProvider`"
|
|
||||||
)
|
|
||||||
public interface ConnectionProviderLogger extends BasicLogger {
|
|
||||||
String LOGGER_NAME = SubSystemLogging.BASE + ".connections.provider";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Static access to the logging instance
|
|
||||||
*/
|
|
||||||
ConnectionProviderLogger INSTANCE = Logger.getMessageLogger(
|
|
||||||
ConnectionProviderLogger.class,
|
|
||||||
LOGGER_NAME
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
@LogMessage(level = INFO)
|
|
||||||
@Message(
|
|
||||||
value = "Database info:\n%s",
|
|
||||||
id = 10002001
|
|
||||||
)
|
|
||||||
void logConnectionDetails(DatabaseConnectionInfo databaseConnectionInfo);
|
|
||||||
}
|
|
|
@ -16,12 +16,11 @@ import org.hibernate.HibernateException;
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
|
|
||||||
import com.zaxxer.hikari.HikariConfig;
|
import com.zaxxer.hikari.HikariConfig;
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
|
|
||||||
|
@ -35,8 +34,6 @@ public class HikariCPConnectionProvider implements ConnectionProvider, Configura
|
||||||
|
|
||||||
private static final long serialVersionUID = -9131625057941275711L;
|
private static final long serialVersionUID = -9131625057941275711L;
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger( HikariCPConnectionProvider.class );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HikariCP configuration.
|
* HikariCP configuration.
|
||||||
*/
|
*/
|
||||||
|
@ -56,7 +53,7 @@ public class HikariCPConnectionProvider implements ConnectionProvider, Configura
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map<String, Object> props) throws HibernateException {
|
public void configure(Map<String, Object> props) throws HibernateException {
|
||||||
try {
|
try {
|
||||||
LOGGER.debug( "Configuring HikariCP" );
|
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "HikariCP" );
|
||||||
|
|
||||||
hcfg = HikariConfigurationUtil.loadConfiguration( props );
|
hcfg = HikariConfigurationUtil.loadConfiguration( props );
|
||||||
hds = new HikariDataSource( hcfg );
|
hds = new HikariDataSource( hcfg );
|
||||||
|
@ -70,10 +67,9 @@ public class HikariCPConnectionProvider implements ConnectionProvider, Configura
|
||||||
.setDBMaxPoolSize( String.valueOf(hcfg.getMaximumPoolSize()) );
|
.setDBMaxPoolSize( String.valueOf(hcfg.getMaximumPoolSize()) );
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.unableToInstantiateConnectionPool( e );
|
||||||
throw new HibernateException( e );
|
throw new HibernateException( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGGER.debug( "HikariCP Configured" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// *************************************************************************
|
// *************************************************************************
|
||||||
|
@ -129,6 +125,7 @@ public class HikariCPConnectionProvider implements ConnectionProvider, Configura
|
||||||
@Override
|
@Override
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if ( hds != null ) {
|
if ( hds != null ) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( "HikariCP" );
|
||||||
hds.close();
|
hds.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiato
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
import org.hibernate.service.spi.ServiceRegistryAwareService;
|
||||||
|
@ -37,7 +38,6 @@ import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;
|
||||||
|
|
||||||
import static org.hibernate.internal.util.StringHelper.isNotEmpty;
|
import static org.hibernate.internal.util.StringHelper.isNotEmpty;
|
||||||
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
|
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
|
||||||
import static org.hibernate.proxool.internal.ProxoolMessageLogger.PROXOOL_LOGGER;
|
|
||||||
import static org.hibernate.proxool.internal.ProxoolMessageLogger.PROXOOL_MESSAGE_LOGGER;
|
import static org.hibernate.proxool.internal.ProxoolMessageLogger.PROXOOL_MESSAGE_LOGGER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,6 +115,8 @@ public class ProxoolConnectionProvider
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map<String, Object> props) {
|
public void configure(Map<String, Object> props) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "Proxool" );
|
||||||
|
|
||||||
// Get the configurator files (if available)
|
// Get the configurator files (if available)
|
||||||
final String jaxpFile = (String) props.get( ProxoolSettings.PROXOOL_XML );
|
final String jaxpFile = (String) props.get( ProxoolSettings.PROXOOL_XML );
|
||||||
final String propFile = (String) props.get( ProxoolSettings.PROXOOL_PROPERTIES );
|
final String propFile = (String) props.get( ProxoolSettings.PROXOOL_PROPERTIES );
|
||||||
|
@ -129,8 +131,8 @@ public class ProxoolConnectionProvider
|
||||||
if ( "true".equals( externalConfig ) ) {
|
if ( "true".equals( externalConfig ) ) {
|
||||||
// Validate that an alias name was provided to determine which pool to use
|
// Validate that an alias name was provided to determine which pool to use
|
||||||
if ( !isNotEmpty( proxoolAlias ) ) {
|
if ( !isNotEmpty( proxoolAlias ) ) {
|
||||||
final String msg = PROXOOL_MESSAGE_LOGGER.unableToConfigureProxoolProviderToUseExistingInMemoryPool( ProxoolSettings.PROXOOL_POOL_ALIAS );
|
final String msg = "Cannot configure Proxool Provider to use an existing in memory pool without the " +
|
||||||
PROXOOL_LOGGER.error( msg );
|
ProxoolSettings.PROXOOL_POOL_ALIAS + " property set.";
|
||||||
throw new HibernateException( msg );
|
throw new HibernateException( msg );
|
||||||
}
|
}
|
||||||
// Append the stem to the proxool pool alias
|
// Append the stem to the proxool pool alias
|
||||||
|
@ -148,8 +150,7 @@ public class ProxoolConnectionProvider
|
||||||
|
|
||||||
// Validate that an alias name was provided to determine which pool to use
|
// Validate that an alias name was provided to determine which pool to use
|
||||||
if ( !isNotEmpty( proxoolAlias ) ) {
|
if ( !isNotEmpty( proxoolAlias ) ) {
|
||||||
final String msg = PROXOOL_MESSAGE_LOGGER.unableToConfigureProxoolProviderToUseJaxp( ProxoolSettings.PROXOOL_POOL_ALIAS );
|
final String msg = "Cannot configure Proxool Provider to use JAXP without the " + ProxoolSettings.PROXOOL_POOL_ALIAS + " property set.";
|
||||||
PROXOOL_LOGGER.error( msg );
|
|
||||||
throw new HibernateException( msg );
|
throw new HibernateException( msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,8 +158,7 @@ public class ProxoolConnectionProvider
|
||||||
JAXPConfigurator.configure( getConfigStreamReader( jaxpFile ), false );
|
JAXPConfigurator.configure( getConfigStreamReader( jaxpFile ), false );
|
||||||
}
|
}
|
||||||
catch (ProxoolException e) {
|
catch (ProxoolException e) {
|
||||||
final String msg = PROXOOL_MESSAGE_LOGGER.unableToLoadJaxpConfiguratorFile( jaxpFile );
|
final String msg = "Proxool Provider unable to load JAXP configurator file: " + jaxpFile;
|
||||||
PROXOOL_LOGGER.error( msg, e );
|
|
||||||
throw new HibernateException( msg, e );
|
throw new HibernateException( msg, e );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,8 +173,7 @@ public class ProxoolConnectionProvider
|
||||||
|
|
||||||
// Validate that an alias name was provided to determine which pool to use
|
// Validate that an alias name was provided to determine which pool to use
|
||||||
if ( !isNotEmpty( proxoolAlias ) ) {
|
if ( !isNotEmpty( proxoolAlias ) ) {
|
||||||
final String msg = PROXOOL_MESSAGE_LOGGER.unableToConfigureProxoolProviderToUsePropertiesFile( ProxoolSettings.PROXOOL_POOL_ALIAS );
|
final String msg = "Cannot configure Proxool Provider to use Properties File without the " + ProxoolSettings.PROXOOL_POOL_ALIAS + " property set.";
|
||||||
PROXOOL_LOGGER.error( msg );
|
|
||||||
throw new HibernateException( msg );
|
throw new HibernateException( msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,8 +181,7 @@ public class ProxoolConnectionProvider
|
||||||
PropertyConfigurator.configure( getConfigProperties( propFile ) );
|
PropertyConfigurator.configure( getConfigProperties( propFile ) );
|
||||||
}
|
}
|
||||||
catch (ProxoolException e) {
|
catch (ProxoolException e) {
|
||||||
final String msg = PROXOOL_MESSAGE_LOGGER.unableToLoadPropertyConfiguratorFile( propFile );
|
final String msg = "Proxool Provider unable to load Property configurator file: " + propFile;
|
||||||
PROXOOL_LOGGER.error( msg, e );
|
|
||||||
throw new HibernateException( msg, e );
|
throw new HibernateException( msg, e );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,6 +239,7 @@ public class ProxoolConnectionProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
// We have created the pool ourselves, so shut it down
|
// We have created the pool ourselves, so shut it down
|
||||||
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( "proxool" );
|
||||||
try {
|
try {
|
||||||
if ( ProxoolFacade.getAliases().length == 1 ) {
|
if ( ProxoolFacade.getAliases().length == 1 ) {
|
||||||
ProxoolFacade.shutdown( 0 );
|
ProxoolFacade.shutdown( 0 );
|
||||||
|
@ -252,9 +251,7 @@ public class ProxoolConnectionProvider
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
// If you're closing down the ConnectionProvider chances are an
|
// If you're closing down the ConnectionProvider chances are an
|
||||||
// is not a real big deal, just warn
|
// is not a real big deal, just warn
|
||||||
final String msg = PROXOOL_MESSAGE_LOGGER.exceptionClosingProxoolPool();
|
ConnectionInfoLogger.INSTANCE.unableToDestroyConnectionPool( e );
|
||||||
PROXOOL_LOGGER.warn( msg, e );
|
|
||||||
throw new HibernateException( msg, e );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.proxool.internal;
|
package org.hibernate.proxool.internal;
|
||||||
|
|
||||||
import org.hibernate.internal.log.ConnectionPoolingLogger;
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.internal.log.SubSystemLogging;
|
import org.hibernate.internal.log.SubSystemLogging;
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
@ -15,7 +15,7 @@ import org.jboss.logging.annotations.Message;
|
||||||
import org.jboss.logging.annotations.MessageLogger;
|
import org.jboss.logging.annotations.MessageLogger;
|
||||||
import org.jboss.logging.annotations.ValidIdRange;
|
import org.jboss.logging.annotations.ValidIdRange;
|
||||||
|
|
||||||
import static org.jboss.logging.Logger.Level.INFO;
|
import static org.jboss.logging.Logger.Level.DEBUG;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The jboss-logging {@link MessageLogger} for the hibernate-proxool module. It reserves message ids ranging from
|
* The jboss-logging {@link MessageLogger} for the hibernate-proxool module. It reserves message ids ranging from
|
||||||
|
@ -29,9 +29,8 @@ import static org.jboss.logging.Logger.Level.INFO;
|
||||||
name = ProxoolMessageLogger.LOGGER_NAME,
|
name = ProxoolMessageLogger.LOGGER_NAME,
|
||||||
description = "Logs details related to Proxool connection pooling"
|
description = "Logs details related to Proxool connection pooling"
|
||||||
)
|
)
|
||||||
public interface ProxoolMessageLogger extends ConnectionPoolingLogger {
|
public interface ProxoolMessageLogger extends ConnectionInfoLogger {
|
||||||
String LOGGER_NAME = ConnectionPoolingLogger.LOGGER_NAME + ".proxool";
|
String LOGGER_NAME = ConnectionInfoLogger.LOGGER_NAME + ".proxool";
|
||||||
Logger PROXOOL_LOGGER = Logger.getLogger( LOGGER_NAME );
|
|
||||||
ProxoolMessageLogger PROXOOL_MESSAGE_LOGGER = Logger.getMessageLogger( ProxoolMessageLogger.class, LOGGER_NAME );
|
ProxoolMessageLogger PROXOOL_MESSAGE_LOGGER = Logger.getMessageLogger( ProxoolMessageLogger.class, LOGGER_NAME );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -39,7 +38,7 @@ public interface ProxoolMessageLogger extends ConnectionPoolingLogger {
|
||||||
*
|
*
|
||||||
* @param proxoolAlias The name (alias) of the proxool pool
|
* @param proxoolAlias The name (alias) of the proxool pool
|
||||||
*/
|
*/
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = DEBUG)
|
||||||
@Message(value = "Configuring Proxool Provider to use pool alias: %s", id = 30002)
|
@Message(value = "Configuring Proxool Provider to use pool alias: %s", id = 30002)
|
||||||
void configuringProxoolProviderToUsePoolAlias(String proxoolAlias);
|
void configuringProxoolProviderToUsePoolAlias(String proxoolAlias);
|
||||||
|
|
||||||
|
@ -48,7 +47,7 @@ public interface ProxoolMessageLogger extends ConnectionPoolingLogger {
|
||||||
*
|
*
|
||||||
* @param proxoolAlias The name (alias) of the proxool pool
|
* @param proxoolAlias The name (alias) of the proxool pool
|
||||||
*/
|
*/
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = DEBUG)
|
||||||
@Message(value = "Configuring Proxool Provider using existing pool in memory: %s", id = 30003)
|
@Message(value = "Configuring Proxool Provider using existing pool in memory: %s", id = 30003)
|
||||||
void configuringProxoolProviderUsingExistingPool(String proxoolAlias);
|
void configuringProxoolProviderUsingExistingPool(String proxoolAlias);
|
||||||
|
|
||||||
|
@ -57,7 +56,7 @@ public interface ProxoolMessageLogger extends ConnectionPoolingLogger {
|
||||||
*
|
*
|
||||||
* @param jaxpFile The XML configuration file to use
|
* @param jaxpFile The XML configuration file to use
|
||||||
*/
|
*/
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = DEBUG)
|
||||||
@Message(value = "Configuring Proxool Provider using JAXPConfigurator: %s", id = 30004)
|
@Message(value = "Configuring Proxool Provider using JAXPConfigurator: %s", id = 30004)
|
||||||
void configuringProxoolProviderUsingJaxpConfigurator(String jaxpFile);
|
void configuringProxoolProviderUsingJaxpConfigurator(String jaxpFile);
|
||||||
|
|
||||||
|
@ -66,65 +65,8 @@ public interface ProxoolMessageLogger extends ConnectionPoolingLogger {
|
||||||
*
|
*
|
||||||
* @param propFile The properties file to use
|
* @param propFile The properties file to use
|
||||||
*/
|
*/
|
||||||
@LogMessage(level = INFO)
|
@LogMessage(level = DEBUG)
|
||||||
@Message(value = "Configuring Proxool Provider using Properties File: %s", id = 30005)
|
@Message(value = "Configuring Proxool Provider using Properties File: %s", id = 30005)
|
||||||
void configuringProxoolProviderUsingPropertiesFile(String propFile);
|
void configuringProxoolProviderUsingPropertiesFile(String propFile);
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds a message about not being able to close the underlying proxool pool.
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Exception occurred when closing the Proxool pool", id = 30006)
|
|
||||||
String exceptionClosingProxoolPool();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds a message about invalid configuration
|
|
||||||
*
|
|
||||||
* @param proxoolPoolAlias The name (alias) of the proxool pool
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Cannot configure Proxool Provider to use an existing in memory pool without the %s property set.", id = 30007)
|
|
||||||
String unableToConfigureProxoolProviderToUseExistingInMemoryPool(String proxoolPoolAlias);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds a message about invalid configuration
|
|
||||||
*
|
|
||||||
* @param proxoolPoolAlias The name (alias) of the proxool pool
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Cannot configure Proxool Provider to use JAXP without the %s property set.", id = 30008)
|
|
||||||
String unableToConfigureProxoolProviderToUseJaxp(String proxoolPoolAlias);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds a message about invalid configuration
|
|
||||||
*
|
|
||||||
* @param proxoolPoolAlias The name (alias) of the proxool pool
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Cannot configure Proxool Provider to use Properties File without the %s property set.", id = 30009)
|
|
||||||
String unableToConfigureProxoolProviderToUsePropertiesFile(String proxoolPoolAlias);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds a message about not being able to find or load the XML configuration file
|
|
||||||
*
|
|
||||||
* @param jaxpFile The XML file
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Proxool Provider unable to load JAXP configurator file: %s", id = 30010)
|
|
||||||
String unableToLoadJaxpConfiguratorFile(String jaxpFile);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds a message about not being able to find or load the properties configuration file
|
|
||||||
*
|
|
||||||
* @param propFile The properties file
|
|
||||||
*
|
|
||||||
* @return The message
|
|
||||||
*/
|
|
||||||
@Message(value = "Proxool Provider unable to load Property configurator file: %s", id = 30011)
|
|
||||||
String unableToLoadPropertyConfiguratorFile(String propFile);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,13 +23,12 @@ import org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiato
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.internal.util.config.ConfigurationHelper;
|
import org.hibernate.internal.util.config.ConfigurationHelper;
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
|
|
||||||
import oracle.ucp.UniversalConnectionPoolException;
|
import oracle.ucp.UniversalConnectionPoolException;
|
||||||
import oracle.ucp.admin.UniversalConnectionPoolManager;
|
import oracle.ucp.admin.UniversalConnectionPoolManager;
|
||||||
import oracle.ucp.admin.UniversalConnectionPoolManagerImpl;
|
import oracle.ucp.admin.UniversalConnectionPoolManagerImpl;
|
||||||
|
@ -41,10 +40,10 @@ import org.hibernate.cfg.AvailableSettings;
|
||||||
public class UCPConnectionProvider implements ConnectionProvider, Configurable, Stoppable {
|
public class UCPConnectionProvider implements ConnectionProvider, Configurable, Stoppable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final Logger LOGGER = Logger.getLogger( "UCPConnectionProvider.class" );
|
|
||||||
private PoolDataSource ucpDS = null;
|
private PoolDataSource ucpDS = null;
|
||||||
private UniversalConnectionPoolManager poolManager = null;
|
private UniversalConnectionPoolManager poolManager = null;
|
||||||
private static final String CONFIG_PREFIX = "hibernate.oracleucp.";
|
private static final String UCP_CONFIG_PREFIX = "hibernate.oracleucp";
|
||||||
|
private static final String CONFIG_PREFIX = UCP_CONFIG_PREFIX + ".";
|
||||||
private boolean autoCommit;
|
private boolean autoCommit;
|
||||||
private Integer isolation;
|
private Integer isolation;
|
||||||
|
|
||||||
|
@ -54,7 +53,7 @@ public class UCPConnectionProvider implements ConnectionProvider, Configurable,
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map props) throws HibernateException {
|
public void configure(Map props) throws HibernateException {
|
||||||
try {
|
try {
|
||||||
LOGGER.trace( "Configuring oracle UCP" );
|
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "Ucp" );
|
||||||
|
|
||||||
isolation = ConnectionProviderInitiator.extractIsolation( props );
|
isolation = ConnectionProviderInitiator.extractIsolation( props );
|
||||||
autoCommit = ConfigurationHelper.getBoolean( AvailableSettings.AUTOCOMMIT, props );
|
autoCommit = ConfigurationHelper.getBoolean( AvailableSettings.AUTOCOMMIT, props );
|
||||||
|
@ -74,11 +73,9 @@ public class UCPConnectionProvider implements ConnectionProvider, Configurable,
|
||||||
.setDBMaxPoolSize( String.valueOf(ucpDS.getMaxPoolSize()) );
|
.setDBMaxPoolSize( String.valueOf(ucpDS.getMaxPoolSize()) );
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
LOGGER.debug( "oracle UCP Configuration failed" );
|
ConnectionInfoLogger.INSTANCE.unableToInstantiateConnectionPool( e );
|
||||||
throw new HibernateException( e );
|
throw new HibernateException( e );
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGGER.trace( "oracle UCP Configured" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void configureDataSource(PoolDataSource ucpDS, Properties ucpProps) {
|
private void configureDataSource(PoolDataSource ucpDS, Properties ucpProps) {
|
||||||
|
@ -226,13 +223,14 @@ public class UCPConnectionProvider implements ConnectionProvider, Configurable,
|
||||||
@Override
|
@Override
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if(this.ucpDS!=null && ucpDS.getConnectionPoolName() != null) {
|
if(this.ucpDS!=null && ucpDS.getConnectionPoolName() != null) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( UCP_CONFIG_PREFIX + " [" + ucpDS.getConnectionPoolName() + "]" );
|
||||||
try {
|
try {
|
||||||
UniversalConnectionPoolManager poolManager = UniversalConnectionPoolManagerImpl.
|
UniversalConnectionPoolManager poolManager = UniversalConnectionPoolManagerImpl.
|
||||||
getUniversalConnectionPoolManager();
|
getUniversalConnectionPoolManager();
|
||||||
poolManager.destroyConnectionPool(ucpDS.getConnectionPoolName());
|
poolManager.destroyConnectionPool(ucpDS.getConnectionPoolName());
|
||||||
}
|
}
|
||||||
catch (UniversalConnectionPoolException e) {
|
catch (UniversalConnectionPoolException e) {
|
||||||
LOGGER.debug("Unable to destroy UCP connection pool");
|
ConnectionInfoLogger.INSTANCE.unableToDestroyConnectionPool( e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ package org.hibernate.vibur.internal;
|
||||||
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
import org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
import org.hibernate.engine.jdbc.connections.spi.DatabaseConnectionInfo;
|
||||||
|
import org.hibernate.internal.log.ConnectionInfoLogger;
|
||||||
import org.hibernate.service.UnknownUnwrapTypeException;
|
import org.hibernate.service.UnknownUnwrapTypeException;
|
||||||
import org.hibernate.service.spi.Configurable;
|
import org.hibernate.service.spi.Configurable;
|
||||||
import org.hibernate.service.spi.Stoppable;
|
import org.hibernate.service.spi.Stoppable;
|
||||||
|
@ -48,7 +49,9 @@ import static org.hibernate.cfg.AvailableSettings.*;
|
||||||
* @see ConnectionProvider
|
* @see ConnectionProvider
|
||||||
*/
|
*/
|
||||||
public class ViburDBCPConnectionProvider implements ConnectionProvider, Configurable, Stoppable {
|
public class ViburDBCPConnectionProvider implements ConnectionProvider, Configurable, Stoppable {
|
||||||
private static final String VIBUR_PREFIX = "hibernate.vibur.";
|
|
||||||
|
private static final String VIBUR_CONFIG_PREFIX = "hibernate.vibur";
|
||||||
|
private static final String VIBUR_PREFIX = VIBUR_CONFIG_PREFIX + ".";
|
||||||
|
|
||||||
private ViburDBCPDataSource dataSource = null;
|
private ViburDBCPDataSource dataSource = null;
|
||||||
|
|
||||||
|
@ -56,6 +59,8 @@ public class ViburDBCPConnectionProvider implements ConnectionProvider, Configur
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(Map<String, Object> configurationValues) {
|
public void configure(Map<String, Object> configurationValues) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "Vibur" );
|
||||||
|
|
||||||
dataSource = new ViburDBCPDataSource( transform( configurationValues ) );
|
dataSource = new ViburDBCPDataSource( transform( configurationValues ) );
|
||||||
dataSource.start();
|
dataSource.start();
|
||||||
|
|
||||||
|
@ -81,6 +86,7 @@ public class ViburDBCPConnectionProvider implements ConnectionProvider, Configur
|
||||||
@Override
|
@Override
|
||||||
public void stop() {
|
public void stop() {
|
||||||
if ( dataSource != null ) {
|
if ( dataSource != null ) {
|
||||||
|
ConnectionInfoLogger.INSTANCE.cleaningUpConnectionPool( VIBUR_CONFIG_PREFIX );
|
||||||
dataSource.terminate();
|
dataSource.terminate();
|
||||||
dataSource = null;
|
dataSource = null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue