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()
DatabaseClustergetId in interface DatabaseCluster<D>DatabaseCluster.getId()public java.lang.String getVersion()
DatabaseClusterMBeangetVersion in interface DatabaseClusterMBeanDatabaseClusterMBean.getVersion()public java.util.Map<java.lang.Boolean,java.util.List<Database<D>>> getAliveMap(java.util.Collection<Database<D>> databases)
DatabaseClustergetAliveMap in interface DatabaseCluster<D>databases - a collection of database descriptorsDatabaseCluster.getAliveMap(java.util.Collection)public boolean deactivate(Database<D> database, StateManager manager)
DatabaseClusterdeactivate 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)
DatabaseClusteractivate 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()
DatabaseClusterMBeangetActiveDatabases in interface DatabaseClusterMBeanDatabaseClusterMBean.getActiveDatabases()public java.util.Set<java.lang.String> getInactiveDatabases()
DatabaseClusterMBeangetInactiveDatabases in interface DatabaseClusterMBeanDatabaseClusterMBean.getInactiveDatabases()public Database<D> getDatabase(java.lang.String id)
DatabaseClustergetDatabase in interface DatabaseCluster<D>id - a database identifierDatabaseCluster.getDatabase(java.lang.String)public java.lang.String getDefaultSynchronizationStrategy()
DatabaseClusterMBeangetDefaultSynchronizationStrategy in interface DatabaseClusterMBeanDatabaseClusterMBean.getDefaultSynchronizationStrategy()public java.util.Set<java.lang.String> getSynchronizationStrategies()
DatabaseClusterMBeangetSynchronizationStrategies in interface DatabaseClusterMBeanDatabaseClusterMBean.getSynchronizationStrategies()public Balancer<D> getBalancer()
DatabaseClustergetBalancer in interface DatabaseCluster<D>BalancerDatabaseCluster.getBalancer()public java.util.concurrent.ExecutorService getTransactionalExecutor()
DatabaseClustergetTransactionalExecutor in interface DatabaseCluster<D>ExecutorServiceDatabaseCluster.getTransactionalExecutor()public java.util.concurrent.ExecutorService getNonTransactionalExecutor()
DatabaseClustergetNonTransactionalExecutor in interface DatabaseCluster<D>ExecutorServiceDatabaseCluster.getNonTransactionalExecutor()public Dialect getDialect()
DatabaseClustergetDialect in interface DatabaseCluster<D>DialectDatabaseCluster.getDialect()public DatabaseMetaDataCache getDatabaseMetaDataCache()
DatabaseClustergetDatabaseMetaDataCache in interface DatabaseCluster<D>DatabaseMetaDataCache implementationDatabaseCluster.getDatabaseMetaDataCache()public LockManager getLockManager()
DatabaseClustergetLockManager in interface DatabaseCluster<D>DatabaseCluster.getLockManager()public boolean isAlive(java.lang.String id)
DatabaseClusterMBeanisAlive in interface DatabaseClusterMBeanid - a database identifierDatabaseClusterMBean.isAlive(java.lang.String)public void deactivate(java.lang.String databaseId)
DatabaseClusterMBeandeactivate in interface DatabaseClusterMBeandatabaseId - a database identifierDatabaseClusterMBean.deactivate(java.lang.String)public void activate(java.lang.String databaseId)
DatabaseClusterMBeanactivate in interface DatabaseClusterMBeandatabaseId - a database identifierDatabaseClusterMBean.activate(java.lang.String)public void activate(java.lang.String databaseId, java.lang.String strategyId)
DatabaseClusterMBeanactivate in interface DatabaseClusterMBeandatabaseId - a database identifierstrategyId - the class name of a synchronization strategyDatabaseClusterMBean.activate(java.lang.String, java.lang.String)public void remove(java.lang.String id)
DatabaseClusterMBeanremove in interface DatabaseClusterMBeanid - a database identifierDatabaseClusterMBean.remove(java.lang.String)public boolean isActive()
DatabaseClusterisActive in interface DatabaseCluster<D>DatabaseCluster.isActive()public void start() throws java.lang.Exception
Lifecyclestart in interface Lifecyclejava.lang.Exception - if this service fails to start.Lifecycle.start()public void stop()
Lifecyclestop in interface LifecycleLifecycle.stop()public void flushMetaDataCache()
DatabaseClusterMBeanflushMetaDataCache in interface DatabaseClusterMBeanDatabaseClusterMBean.flushMetaDataCache()public boolean isIdentityColumnDetectionEnabled()
DatabaseClusterisIdentityColumnDetectionEnabled in interface DatabaseCluster<D>DatabaseCluster.isIdentityColumnDetectionEnabled()public boolean isSequenceDetectionEnabled()
DatabaseClusterisSequenceDetectionEnabled in interface DatabaseCluster<D>DatabaseCluster.isSequenceDetectionEnabled()public boolean isCurrentDateEvaluationEnabled()
DatabaseClusterisCurrentDateEvaluationEnabled in interface DatabaseCluster<D>DatabaseCluster.isCurrentDateEvaluationEnabled()public boolean isCurrentTimeEvaluationEnabled()
DatabaseClusterisCurrentTimeEvaluationEnabled in interface DatabaseCluster<D>DatabaseCluster.isCurrentTimeEvaluationEnabled()public boolean isCurrentTimestampEvaluationEnabled()
DatabaseClusterisCurrentTimestampEvaluationEnabled in interface DatabaseCluster<D>DatabaseCluster.isCurrentTimestampEvaluationEnabled()public boolean isRandEvaluationEnabled()
DatabaseClusterisRandEvaluationEnabled in interface DatabaseCluster<D>DatabaseCluster.isRandEvaluationEnabled()public java.lang.String toString()
DatabaseClusterMBeantoString in interface DatabaseClusterMBeantoString in class java.lang.ObjectObject.toString()public boolean equals(java.lang.Object object)
equals in class java.lang.ObjectObject.equals(java.lang.Object)public int hashCode()
hashCode in class java.lang.ObjectObject.hashCode()protected DatabaseClusterDecorator getDecorator()
protected void setDecorator(DatabaseClusterDecorator decorator)
protected java.util.Iterator<Database<D>> getDatabases()
public StateManager getStateManager()
DatabaseClustergetStateManager in interface DatabaseCluster<D>DatabaseCluster.getStateManager()public void setStateManager(StateManager stateManager)
DatabaseClustersetStateManager in interface DatabaseCluster<D>stateManager - a state managerDatabaseCluster.setStateManager(net.sf.hajdbc.StateManager)public void setLockManager(LockManager lockManager)
DatabaseClustersetLockManager in interface DatabaseCluster<D>lockManager - a lock managerDatabaseCluster.setLockManager(net.sf.hajdbc.LockManager)public java.net.URL getUrl()
DatabaseClusterMBeangetUrl in interface DatabaseClusterMBeanDatabaseClusterMBean.getUrl()public void postDeregister()
postDeregister in interface javax.management.MBeanRegistrationMBeanRegistration.postDeregister()public void postRegister(java.lang.Boolean registered)
postRegister in interface javax.management.MBeanRegistrationMBeanRegistration.postRegister(java.lang.Boolean)public void preDeregister() throws java.lang.Exception
preDeregister in interface javax.management.MBeanRegistrationjava.lang.ExceptionMBeanRegistration.preDeregister()public javax.management.ObjectName preRegister(javax.management.MBeanServer server, javax.management.ObjectName name) throws java.lang.Exception
preRegister in interface javax.management.MBeanRegistrationjava.lang.ExceptionMBeanRegistration.preRegister(javax.management.MBeanServer, javax.management.ObjectName)protected void addSynchronizationStrategyBuilder(SynchronizationStrategyBuilder builder) throws java.lang.Exception
java.lang.Exceptionprotected java.util.Iterator<SynchronizationStrategyBuilder> getSynchronizationStrategyBuilders() throws java.lang.Exception
java.lang.Exceptionpublic void addActivationListener(DatabaseActivationListener listener)
addActivationListener in interface DatabaseClusterMBeanDatabaseClusterMBean.addActivationListener(net.sf.hajdbc.DatabaseActivationListener)public void addDeactivationListener(DatabaseDeactivationListener listener)
addDeactivationListener in interface DatabaseClusterMBeanDatabaseClusterMBean.addDeactivationListener(net.sf.hajdbc.DatabaseDeactivationListener)public void addSynchronizationListener(SynchronizationListener listener)
addSynchronizationListener in interface DatabaseClusterMBeanDatabaseClusterMBean.addSynchronizationListener(net.sf.hajdbc.SynchronizationListener)public void removeActivationListener(DatabaseActivationListener listener)
removeActivationListener in interface DatabaseClusterMBeanDatabaseClusterMBean.removeActivationListener(net.sf.hajdbc.DatabaseActivationListener)public void removeDeactivationListener(DatabaseDeactivationListener listener)
removeDeactivationListener in interface DatabaseClusterMBeanDatabaseClusterMBean.removeDeactivationListener(net.sf.hajdbc.DatabaseDeactivationListener)public void removeSynchronizationListener(SynchronizationListener listener)
removeSynchronizationListener in interface DatabaseClusterMBeanDatabaseClusterMBean.removeSynchronizationListener(net.sf.hajdbc.SynchronizationListener)