public abstract class AbstractMultiTenantConnectionProvider extends Object implements MultiTenantConnectionProvider
Basic support for MultiTenantConnectionProvider implementations using
individual ConnectionProvider instances per tenant behind the scenes.
| Constructor and Description |
|---|
AbstractMultiTenantConnectionProvider() |
| 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).
|
protected abstract ConnectionProvider |
getAnyConnectionProvider() |
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 ConnectionProvider |
selectConnectionProvider(String tenantIdentifier) |
boolean |
supportsAggressiveRelease()
Does this connection provider support aggressive release of JDBC
connections and re-acquisition of those connections (if need be) later?
<p/>
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 AbstractMultiTenantConnectionProvider()
protected abstract ConnectionProvider getAnyConnectionProvider()
protected abstract ConnectionProvider selectConnectionProvider(String tenantIdentifier)
public Connection getAnyConnection() throws SQLException
MultiTenantConnectionProviderAllows 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).
getAnyConnection in interface MultiTenantConnectionProviderSQLException - Indicates a problem opening a connectionpublic void releaseAnyConnection(Connection connection) throws SQLException
MultiTenantConnectionProviderRelease a connection obtained from MultiTenantConnectionProvider.getAnyConnection()
releaseAnyConnection in interface MultiTenantConnectionProviderconnection - The JDBC connection to releaseSQLException - Indicates a problem closing the connectionpublic Connection getConnection(String tenantIdentifier) throws SQLException
MultiTenantConnectionProviderObtains a connection for Hibernate use according to the underlying strategy of this provider.
getConnection 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
MultiTenantConnectionProviderRelease a connection from Hibernate use.
releaseConnection in interface MultiTenantConnectionProvidertenantIdentifier - The identifier of the tenant.connection - The JDBC connection to releaseSQLException - Indicates a problem closing the connectionpublic boolean supportsAggressiveRelease()
MultiTenantConnectionProviderDoes this connection provider support aggressive release of JDBC
connections and re-acquisition of those connections (if need be) later?
<p/>
This is used in conjunction with AvailableSettings.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.
<p/>
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)
WrappedCan this wrapped service be unwrapped as the indicated type?
isUnwrappableAs in interface WrappedunwrapType - The type to check.Copyright © 2001-2018 Red Hat, Inc. All Rights Reserved.