public abstract class AbstractMultiTenantConnectionProvider extends Object implements MultiTenantConnectionProvider
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?
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
MultiTenantConnectionProvider
getAnyConnection
in interface MultiTenantConnectionProvider
SQLException
- Indicates a problem opening a connectionpublic void releaseAnyConnection(Connection connection) throws SQLException
MultiTenantConnectionProvider
MultiTenantConnectionProvider.getAnyConnection()
releaseAnyConnection
in interface MultiTenantConnectionProvider
connection
- The JDBC connection to releaseSQLException
- Indicates a problem closing the connectionpublic Connection getConnection(String tenantIdentifier) throws SQLException
MultiTenantConnectionProvider
getConnection
in interface MultiTenantConnectionProvider
tenantIdentifier
- 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
MultiTenantConnectionProvider
releaseConnection
in interface MultiTenantConnectionProvider
tenantIdentifier
- The identifier of the tenant.connection
- The JDBC connection to releaseSQLException
- Indicates a problem closing the connectionpublic boolean supportsAggressiveRelease()
MultiTenantConnectionProvider
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.
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 MultiTenantConnectionProvider
true
if aggressive releasing is supported; false
otherwise.public boolean isUnwrappableAs(Class unwrapType)
Wrapped
isUnwrappableAs
in interface Wrapped
unwrapType
- The type to check.Copyright © 2016 JBoss by Red Hat. All rights reserved.