D
- either java.sql.Driver or javax.sql.DataSourcepublic abstract class AbstractDatabaseCluster<D> extends java.lang.Object implements DatabaseCluster<D>, DatabaseClusterMBean, javax.management.MBeanRegistration
Modifier | Constructor and Description |
---|---|
protected |
AbstractDatabaseCluster(java.lang.String id,
java.net.URL url) |
Modifier and Type | Method and Description |
---|---|
boolean |
activate(Database<D> database,
StateManager manager)
Activates the specified database
|
void |
activate(java.lang.String databaseId)
Synchronizes, using the default strategy, and reactivates the specified database.
|
void |
activate(java.lang.String databaseId,
java.lang.String strategyId)
Synchronizes, using the specified strategy, and reactivates the specified database.
|
protected void |
add(Database<D> database) |
void |
addActivationListener(DatabaseActivationListener listener) |
void |
addDeactivationListener(DatabaseDeactivationListener listener) |
void |
addSynchronizationListener(SynchronizationListener listener) |
protected void |
addSynchronizationStrategyBuilder(SynchronizationStrategyBuilder builder) |
boolean |
deactivate(Database<D> database,
StateManager manager)
Deactivates the specified database
|
void |
deactivate(java.lang.String databaseId)
Deactivates the specified database.
|
boolean |
equals(java.lang.Object object) |
void |
flushMetaDataCache()
Flushes this cluster's cache of DatabaseMetaData.
|
java.util.Set<java.lang.String> |
getActiveDatabases()
Returns a collection of active databases in this cluster.
|
java.util.Map<java.lang.Boolean,java.util.List<Database<D>>> |
getAliveMap(java.util.Collection<Database<D>> databases)
Determines whether the specified databases are alive.
|
Balancer<D> |
getBalancer()
Returns the Balancer implementation used by this database cluster.
|
Database<D> |
getDatabase(java.lang.String id)
Returns the database identified by the specified id
|
DatabaseMetaDataCache |
getDatabaseMetaDataCache()
Returns a DatabaseMetaData cache.
|
protected java.util.Iterator<Database<D>> |
getDatabases() |
protected DatabaseClusterDecorator |
getDecorator() |
java.lang.String |
getDefaultSynchronizationStrategy()
Returns the default synchronization strategy used by this cluster.
|
Dialect |
getDialect()
Returns a dialect capable of returning database vendor specific values.
|
java.lang.String |
getId()
Returns the identifier of this cluster.
|
java.util.Set<java.lang.String> |
getInactiveDatabases()
Returns a collection of inactive databases in this cluster.
|
LockManager |
getLockManager()
Returns a LockManager capable of acquiring named read/write locks on the specific objects in this database cluster.
|
java.util.concurrent.ExecutorService |
getNonTransactionalExecutor()
Returns an executor service used to execute non-transactional database writes.
|
StateManager |
getStateManager()
Returns a StateManager for persisting database cluster state.
|
java.util.Set<java.lang.String> |
getSynchronizationStrategies()
Returns the set of synchronization strategies available to this cluster.
|
protected java.util.Iterator<SynchronizationStrategyBuilder> |
getSynchronizationStrategyBuilders() |
java.util.concurrent.ExecutorService |
getTransactionalExecutor()
Returns an executor service used to execute transactional database writes.
|
java.net.URL |
getUrl()
Returns the URL of the configuration file for this cluster.
|
java.lang.String |
getVersion()
Return the current HA-JDBC version
|
int |
hashCode() |
boolean |
isActive()
Indicates whether or not this cluster is active, i.e.
|
boolean |
isAlive(java.lang.String id)
Determines whether or not the specified database is responsive
|
boolean |
isCurrentDateEvaluationEnabled()
Indicates whether or not non-deterministic CURRENT_DATE SQL functions will be evaluated to deterministic static values.
|
boolean |
isCurrentTimeEvaluationEnabled()
Indicates whether or not non-deterministic CURRENT_TIME functions will be evaluated to deterministic static values.
|
boolean |
isCurrentTimestampEvaluationEnabled()
Indicates whether or not non-deterministic CURRENT_TIMESTAMP functions will be evaluated to deterministic static values.
|
boolean |
isIdentityColumnDetectionEnabled()
Indicates whether or not identity column detection is enabled for this cluster.
|
boolean |
isRandEvaluationEnabled()
Indicates whether or not non-deterministic RAND() functions will be replaced by evaluated to static values.
|
boolean |
isSequenceDetectionEnabled()
Indicates whether or not sequence detection is enabled for this cluster.
|
void |
postDeregister() |
void |
postRegister(java.lang.Boolean registered) |
void |
preDeregister() |
javax.management.ObjectName |
preRegister(javax.management.MBeanServer server,
javax.management.ObjectName name) |
protected void |
register(Database<D> database,
javax.management.DynamicMBean mbean) |
void |
remove(java.lang.String id)
Removes the specified database/DataSource from the cluster.
|
void |
removeActivationListener(DatabaseActivationListener listener) |
void |
removeDeactivationListener(DatabaseDeactivationListener listener) |
void |
removeSynchronizationListener(SynchronizationListener listener) |
protected void |
setDecorator(DatabaseClusterDecorator decorator) |
void |
setLockManager(LockManager lockManager)
Sets the LockManager implementation capable of acquiring named read/write locks on the specific objects in this database cluster.
|
void |
setStateManager(StateManager stateManager)
Sets the StateManager implementation for persisting database cluster state.
|
void |
start()
Called upon database cluster start.
|
void |
stop()
Called when database cluster is stopped.
|
java.lang.String |
toString()
Provided so that mbean proxies will use mbean toString() implementation
|
protected AbstractDatabaseCluster(java.lang.String id, java.net.URL url)
public java.lang.String getId()
DatabaseCluster
getId
in interface DatabaseCluster<D>
DatabaseCluster.getId()
public java.lang.String getVersion()
DatabaseClusterMBean
getVersion
in interface DatabaseClusterMBean
DatabaseClusterMBean.getVersion()
public java.util.Map<java.lang.Boolean,java.util.List<Database<D>>> getAliveMap(java.util.Collection<Database<D>> databases)
DatabaseCluster
getAliveMap
in interface DatabaseCluster<D>
databases
- a collection of database descriptorsDatabaseCluster.getAliveMap(java.util.Collection)
public boolean deactivate(Database<D> database, StateManager manager)
DatabaseCluster
deactivate
in interface DatabaseCluster<D>
database
- a database descriptormanager
- a state managerDatabaseCluster.deactivate(net.sf.hajdbc.Database, net.sf.hajdbc.StateManager)
public boolean activate(Database<D> database, StateManager manager)
DatabaseCluster
activate
in interface DatabaseCluster<D>
database
- a database descriptormanager
- a state managerDatabaseCluster.activate(net.sf.hajdbc.Database, net.sf.hajdbc.StateManager)
public java.util.Set<java.lang.String> getActiveDatabases()
DatabaseClusterMBean
getActiveDatabases
in interface DatabaseClusterMBean
DatabaseClusterMBean.getActiveDatabases()
public java.util.Set<java.lang.String> getInactiveDatabases()
DatabaseClusterMBean
getInactiveDatabases
in interface DatabaseClusterMBean
DatabaseClusterMBean.getInactiveDatabases()
public Database<D> getDatabase(java.lang.String id)
DatabaseCluster
getDatabase
in interface DatabaseCluster<D>
id
- a database identifierDatabaseCluster.getDatabase(java.lang.String)
public java.lang.String getDefaultSynchronizationStrategy()
DatabaseClusterMBean
getDefaultSynchronizationStrategy
in interface DatabaseClusterMBean
DatabaseClusterMBean.getDefaultSynchronizationStrategy()
public java.util.Set<java.lang.String> getSynchronizationStrategies()
DatabaseClusterMBean
getSynchronizationStrategies
in interface DatabaseClusterMBean
DatabaseClusterMBean.getSynchronizationStrategies()
public Balancer<D> getBalancer()
DatabaseCluster
getBalancer
in interface DatabaseCluster<D>
Balancer
DatabaseCluster.getBalancer()
public java.util.concurrent.ExecutorService getTransactionalExecutor()
DatabaseCluster
getTransactionalExecutor
in interface DatabaseCluster<D>
ExecutorService
DatabaseCluster.getTransactionalExecutor()
public java.util.concurrent.ExecutorService getNonTransactionalExecutor()
DatabaseCluster
getNonTransactionalExecutor
in interface DatabaseCluster<D>
ExecutorService
DatabaseCluster.getNonTransactionalExecutor()
public Dialect getDialect()
DatabaseCluster
getDialect
in interface DatabaseCluster<D>
Dialect
DatabaseCluster.getDialect()
public DatabaseMetaDataCache getDatabaseMetaDataCache()
DatabaseCluster
getDatabaseMetaDataCache
in interface DatabaseCluster<D>
DatabaseMetaDataCache
implementationDatabaseCluster.getDatabaseMetaDataCache()
public LockManager getLockManager()
DatabaseCluster
getLockManager
in interface DatabaseCluster<D>
DatabaseCluster.getLockManager()
public boolean isAlive(java.lang.String id)
DatabaseClusterMBean
isAlive
in interface DatabaseClusterMBean
id
- a database identifierDatabaseClusterMBean.isAlive(java.lang.String)
public void deactivate(java.lang.String databaseId)
DatabaseClusterMBean
deactivate
in interface DatabaseClusterMBean
databaseId
- a database identifierDatabaseClusterMBean.deactivate(java.lang.String)
public void activate(java.lang.String databaseId)
DatabaseClusterMBean
activate
in interface DatabaseClusterMBean
databaseId
- a database identifierDatabaseClusterMBean.activate(java.lang.String)
public void activate(java.lang.String databaseId, java.lang.String strategyId)
DatabaseClusterMBean
activate
in interface DatabaseClusterMBean
databaseId
- a database identifierstrategyId
- the class name of a synchronization strategyDatabaseClusterMBean.activate(java.lang.String, java.lang.String)
public void remove(java.lang.String id)
DatabaseClusterMBean
remove
in interface DatabaseClusterMBean
id
- a database identifierDatabaseClusterMBean.remove(java.lang.String)
public boolean isActive()
DatabaseCluster
isActive
in interface DatabaseCluster<D>
DatabaseCluster.isActive()
public void start() throws java.lang.Exception
Lifecycle
start
in interface Lifecycle
java.lang.Exception
- if this service fails to start.Lifecycle.start()
public void stop()
Lifecycle
stop
in interface Lifecycle
Lifecycle.stop()
public void flushMetaDataCache()
DatabaseClusterMBean
flushMetaDataCache
in interface DatabaseClusterMBean
DatabaseClusterMBean.flushMetaDataCache()
public boolean isIdentityColumnDetectionEnabled()
DatabaseCluster
isIdentityColumnDetectionEnabled
in interface DatabaseCluster<D>
DatabaseCluster.isIdentityColumnDetectionEnabled()
public boolean isSequenceDetectionEnabled()
DatabaseCluster
isSequenceDetectionEnabled
in interface DatabaseCluster<D>
DatabaseCluster.isSequenceDetectionEnabled()
public boolean isCurrentDateEvaluationEnabled()
DatabaseCluster
isCurrentDateEvaluationEnabled
in interface DatabaseCluster<D>
DatabaseCluster.isCurrentDateEvaluationEnabled()
public boolean isCurrentTimeEvaluationEnabled()
DatabaseCluster
isCurrentTimeEvaluationEnabled
in interface DatabaseCluster<D>
DatabaseCluster.isCurrentTimeEvaluationEnabled()
public boolean isCurrentTimestampEvaluationEnabled()
DatabaseCluster
isCurrentTimestampEvaluationEnabled
in interface DatabaseCluster<D>
DatabaseCluster.isCurrentTimestampEvaluationEnabled()
public boolean isRandEvaluationEnabled()
DatabaseCluster
isRandEvaluationEnabled
in interface DatabaseCluster<D>
DatabaseCluster.isRandEvaluationEnabled()
public java.lang.String toString()
DatabaseClusterMBean
toString
in interface DatabaseClusterMBean
toString
in class java.lang.Object
Object.toString()
public boolean equals(java.lang.Object object)
equals
in class java.lang.Object
Object.equals(java.lang.Object)
public int hashCode()
hashCode
in class java.lang.Object
Object.hashCode()
protected DatabaseClusterDecorator getDecorator()
protected void setDecorator(DatabaseClusterDecorator decorator)
protected java.util.Iterator<Database<D>> getDatabases()
public StateManager getStateManager()
DatabaseCluster
getStateManager
in interface DatabaseCluster<D>
DatabaseCluster.getStateManager()
public void setStateManager(StateManager stateManager)
DatabaseCluster
setStateManager
in interface DatabaseCluster<D>
stateManager
- a state managerDatabaseCluster.setStateManager(net.sf.hajdbc.StateManager)
public void setLockManager(LockManager lockManager)
DatabaseCluster
setLockManager
in interface DatabaseCluster<D>
lockManager
- a lock managerDatabaseCluster.setLockManager(net.sf.hajdbc.LockManager)
public java.net.URL getUrl()
DatabaseClusterMBean
getUrl
in interface DatabaseClusterMBean
DatabaseClusterMBean.getUrl()
public void postDeregister()
postDeregister
in interface javax.management.MBeanRegistration
MBeanRegistration.postDeregister()
public void postRegister(java.lang.Boolean registered)
postRegister
in interface javax.management.MBeanRegistration
MBeanRegistration.postRegister(java.lang.Boolean)
public void preDeregister() throws java.lang.Exception
preDeregister
in interface javax.management.MBeanRegistration
java.lang.Exception
MBeanRegistration.preDeregister()
public javax.management.ObjectName preRegister(javax.management.MBeanServer server, javax.management.ObjectName name) throws java.lang.Exception
preRegister
in interface javax.management.MBeanRegistration
java.lang.Exception
MBeanRegistration.preRegister(javax.management.MBeanServer, javax.management.ObjectName)
protected void addSynchronizationStrategyBuilder(SynchronizationStrategyBuilder builder) throws java.lang.Exception
java.lang.Exception
protected java.util.Iterator<SynchronizationStrategyBuilder> getSynchronizationStrategyBuilders() throws java.lang.Exception
java.lang.Exception
public void addActivationListener(DatabaseActivationListener listener)
addActivationListener
in interface DatabaseClusterMBean
DatabaseClusterMBean.addActivationListener(net.sf.hajdbc.DatabaseActivationListener)
public void addDeactivationListener(DatabaseDeactivationListener listener)
addDeactivationListener
in interface DatabaseClusterMBean
DatabaseClusterMBean.addDeactivationListener(net.sf.hajdbc.DatabaseDeactivationListener)
public void addSynchronizationListener(SynchronizationListener listener)
addSynchronizationListener
in interface DatabaseClusterMBean
DatabaseClusterMBean.addSynchronizationListener(net.sf.hajdbc.SynchronizationListener)
public void removeActivationListener(DatabaseActivationListener listener)
removeActivationListener
in interface DatabaseClusterMBean
DatabaseClusterMBean.removeActivationListener(net.sf.hajdbc.DatabaseActivationListener)
public void removeDeactivationListener(DatabaseDeactivationListener listener)
removeDeactivationListener
in interface DatabaseClusterMBean
DatabaseClusterMBean.removeDeactivationListener(net.sf.hajdbc.DatabaseDeactivationListener)
public void removeSynchronizationListener(SynchronizationListener listener)
removeSynchronizationListener
in interface DatabaseClusterMBean
DatabaseClusterMBean.removeSynchronizationListener(net.sf.hajdbc.SynchronizationListener)