public abstract class AbstractDataSourceBasedMultiTenantConnectionProviderImpl extends Object implements MultiTenantConnectionProvider
MultiTenantConnectionProvider based on DataSources.| Constructor and Description |
|---|
AbstractDataSourceBasedMultiTenantConnectionProviderImpl() |
| Modifier and Type | Method and Description |
|---|---|
Connection |
getAnyConnection()
Allows access to the database metadata of the underlying database(s) in situations where we do not have a
tenant id (like startup processing, for example).
|
Connection |
getConnection(String tenantIdentifier)
Obtains a connection for Hibernate use according to the underlying strategy of this provider.
|
boolean |
isUnwrappableAs(Class unwrapType)
Can this wrapped service be unwrapped as the indicated type?
|
void |
releaseAnyConnection(Connection connection)
Release a connection obtained from
MultiTenantConnectionProvider.getAnyConnection() |
void |
releaseConnection(String tenantIdentifier,
Connection connection)
Release a connection from Hibernate use.
|
protected abstract DataSource |
selectAnyDataSource() |
protected abstract DataSource |
selectDataSource(String tenantIdentifier) |
boolean |
supportsAggressiveRelease()
Does this connection provider support aggressive release of JDBC
connections and re-acquisition of those connections (if need be) later?
This is used in conjunction with
AvailableSettings.RELEASE_CONNECTIONS
to aggressively release JDBC connections. |
<T> T |
unwrap(Class<T> unwrapType)
Unproxy the service proxy
|
public AbstractDataSourceBasedMultiTenantConnectionProviderImpl()
protected abstract DataSource selectAnyDataSource()
protected abstract DataSource selectDataSource(String tenantIdentifier)
public Connection getAnyConnection() throws SQLException
MultiTenantConnectionProvidergetAnyConnection in interface MultiTenantConnectionProviderSQLException - Indicates a problem opening a connectionpublic void releaseAnyConnection(Connection connection) throws SQLException
MultiTenantConnectionProviderMultiTenantConnectionProvider.getAnyConnection()releaseAnyConnection in interface MultiTenantConnectionProviderconnection - The JDBC connection to releaseSQLException - Indicates a problem closing the connectionpublic Connection getConnection(String tenantIdentifier) throws SQLException
MultiTenantConnectionProvidergetConnection in interface MultiTenantConnectionProvidertenantIdentifier - The identifier of the tenant for which to get a connectionSQLException - Indicates a problem opening a connectionpublic void releaseConnection(String tenantIdentifier, Connection connection) throws SQLException
MultiTenantConnectionProviderreleaseConnection in interface MultiTenantConnectionProvidertenantIdentifier - The identifier of the tenant.connection - The JDBC connection to releaseSQLException - Indicates a problem closing the connectionpublic boolean supportsAggressiveRelease()
MultiTenantConnectionProviderAvailableSettings.RELEASE_CONNECTIONS
to aggressively release JDBC connections. However, the configured ConnectionProvider
must support re-acquisition of the same underlying connection for that semantic to work.
Typically, this is only true in managed environments where a container
tracks connections by transaction or thread.
Note that JTA semantic depends on the fact that the underlying connection provider does
support aggressive release.supportsAggressiveRelease in interface MultiTenantConnectionProvidertrue if aggressive releasing is supported; false otherwise.public boolean isUnwrappableAs(Class unwrapType)
WrappedisUnwrappableAs in interface WrappedunwrapType - The type to check.Copyright © 2001-2022 Red Hat, Inc. All Rights Reserved.