public class PARPDatasource implements DataSource, FactoryBean<PARPDatasource> {
private static PARPDatasource parpDatasource = new PARPDatasource();
private static ThreadLocal<String> currrentDatasourceId = new ThreadLocal<String>();
private static Map<String, DataSource> dataSourceStore = new ConcurrentHashMap<String, DataSource>();
private static Log log = LogFactory.getLog(PARPDatasource.class);
public static synchronized void updateDataSource(
Map<String, String> dbSourceInfo) throws Exception {
currrentDatasourceId.set(dbSourceInfo.get("ID_BI_INFO"));
if (!isDataSourceUnchanged(dbSourceInfo)) {
log.info("datasource changed reinit datasourceId="+ getCurrentDataSourceId());
ComboPooledDataSource oldDataSource = (ComboPooledDataSource) dataSourceStore
.get(getCurrentDataSourceId());
dataSourceStore.put(getCurrentDataSourceId(),
initDataSource(dbSourceInfo));
closeQuietly(oldDataSource);
}
}
public static synchronized void refreshDataSource(
Map<String, String> dbSourceInfo) throws Exception {
log.info("datasource refresh reinit");
currrentDatasourceId.set(dbSourceInfo.get("ID_BI_INFO"));
log.info("datasource refresh reinit datasourceId="
+ getCurrentDataSourceId());
ComboPooledDataSource oldDataSource = (ComboPooledDataSource) dataSourceStore
.get(getCurrentDataSourceId());
dataSourceStore.put(getCurrentDataSourceId(),
initDataSource(dbSourceInfo));
closeQuietly(oldDataSource);
}
private static void closeQuietly(ComboPooledDataSource oldDataSource) {
log.info("datasource closeQuietly");
if (oldDataSource != null) {
try {
log.info("datasource closeQuietly start");
oldDataSource.close();
log.info("datasource clos
private static PARPDatasource parpDatasource = new PARPDatasource();
private static ThreadLocal<String> currrentDatasourceId = new ThreadLocal<String>();
private static Map<String, DataSource> dataSourceStore = new ConcurrentHashMap<String, DataSource>();
private static Log log = LogFactory.getLog(PARPDatasource.class);
public static synchronized void updateDataSource(
Map<String, String> dbSourceInfo) throws Exception {
currrentDatasourceId.set(dbSourceInfo.get("ID_BI_INFO"));
if (!isDataSourceUnchanged(dbSourceInfo)) {
log.info("datasource changed reinit datasourceId="+ getCurrentDataSourceId());
ComboPooledDataSource oldDataSource = (ComboPooledDataSource) dataSourceStore
.get(getCurrentDataSourceId());
dataSourceStore.put(getCurrentDataSourceId(),
initDataSource(dbSourceInfo));
closeQuietly(oldDataSource);
}
}
public static synchronized void refreshDataSource(
Map<String, String> dbSourceInfo) throws Exception {
log.info("datasource refresh reinit");
currrentDatasourceId.set(dbSourceInfo.get("ID_BI_INFO"));
log.info("datasource refresh reinit datasourceId="
+ getCurrentDataSourceId());
ComboPooledDataSource oldDataSource = (ComboPooledDataSource) dataSourceStore
.get(getCurrentDataSourceId());
dataSourceStore.put(getCurrentDataSourceId(),
initDataSource(dbSourceInfo));
closeQuietly(oldDataSource);
}
private static void closeQuietly(ComboPooledDataSource oldDataSource) {
log.info("datasource closeQuietly");
if (oldDataSource != null) {
try {
log.info("datasource closeQuietly start");
oldDataSource.close();
log.info("datasource clos