Class DataSourceManager
- All Implemented Interfaces:
com.isomorphic.base.IAutoConfigurable
Note that these APIs are only intended for use in cases where your code is not running in the context of an RPCManager, such as a non-servlet application or some init-time logic. For normal client-server transaction code that has access to an RPCManager, use RPCManager.getDataSource() instead; this API tracks and frees all DataSource instances it returns at the end of the transaction cycle, so you don't need to worry about your application code leaking DataSource objects.
Scan the client-side documentation for "standaloneDataSource" for details and examples of how to use DataSource features in a non-servlet application
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidclearPooledInstances(String dsName) Clears all instances of the named DataSource from the poolstatic voidfree(DataSource ds) Frees the parameter DataSource object by returning it to the pool.static voidFrees the parameter DataSource object by returning it to the poolstatic DataSourceReturns a DataSource object from the pool, creating a new instance if necessary.static DataSourcegetDataSource(String name) Returns a DataSource object from the pool, creating a new instance if necessary.Returns a Set containing the identifiers of each datasource known to the DataSourceManager.static com.isomorphic.pool.PoolManagerReplaces the global DataSource pool with a new one.static voidRestarts DataSource pooling.
-
Method Details
-
restartPoolManager
Restarts DataSource pooling. This operation creates a new pool environment, effectively clearing all instances of all DataSources from the pool. This is an inherently dangerous method and should not be called in a production environment - instead, usehotSwapPool()- Throws:
Exception
-
hotSwapPool
public static com.isomorphic.pool.PoolManager hotSwapPool()Replaces the global DataSource pool with a new one. Existing queues that have already captured a reference to the old pool continue to borrow from and return to it until they complete; new queues will use the replacement pool. When the last RCS scope referencing the old pool ends, the old pool is closed automatically.This is the safe alternative to
restartPoolManager()for concurrent environments. Unlike restartPoolManager(), it does not close the old pool immediately, so in-flight requests are not disrupted.- Returns:
- the old PoolManager (for diagnostics/testing; callers should not close it or otherwise attempt to make any use of it)
-
clearPooledInstances
Clears all instances of the named DataSource from the pool- Parameters:
dsName- The name of the DataSource for which we should clear instances- Throws:
Exception
-
getDataSource
Returns a DataSource object from the pool, creating a new instance if necessary. Note that you must be careful to return the DataSource object to the pool using thefree(com.isomorphic.datasource.DataSource)method, or you will leak objects.- Parameters:
name- The name of the DataSource to return an instance of- Throws:
Exception
-
get
Returns a DataSource object from the pool, creating a new instance if necessary. This method is identical togetDataSource(java.lang.String).- Parameters:
name- The name of the DataSource to return an instance of- Throws:
Exception
-
freeDataSource
Frees the parameter DataSource object by returning it to the pool- Parameters:
ds- The DataSource instance to free (return to the pool)
-
free
Frees the parameter DataSource object by returning it to the pool. This method is identical tofreeDataSource(com.isomorphic.datasource.DataSource).- Parameters:
ds- The DataSource instance to free (return to the pool)
-
getDefinedDataSourceIdentifiers
Returns a Set containing the identifiers of each datasource known to the DataSourceManager.- Returns:
- a Set containing the identifiers of each datasource known to the DataSourceManager
-