Java 类org.springframework.jdbc.datasource.DelegatingDataSource 实例源码

项目:cloud-config    文件:C3P0DataSourceFactoryBean.java   
@Override
protected DataSource createInstance() throws Exception {
    Preconditions.checkNotNull(config, "config cannot be empty");
    final ComboPooledDataSource targetDataSource = createNewDataSource();
    final DelegatingDataSource proxyDataSource = createProxyDataSource(targetDataSource);
    config.setReloadCallback(new ReloadCallback() {
        @Override
        public void reload() throws Exception {
            // switch data source
            ComboPooledDataSource oldTargetDataSource = (ComboPooledDataSource)proxyDataSource.getTargetDataSource();
            ComboPooledDataSource newTargetDataSource = createNewDataSource();
            newTargetDataSource.getConnection().close(); // initialize a connection (+ throw it away) to force the datasource to initialize the pool

            proxyDataSource.setTargetDataSource(newTargetDataSource);
            oldTargetDataSource.close();
        }
    });
    return proxyDataSource;
}
项目:cloud-config    文件:BoneCPDataSourceFactoryBean.java   
@Override
protected DataSource createInstance() throws Exception {
    Preconditions.checkNotNull(config, "config cannot be empty");
    final BoneCPDataSource targetDataSource = createNewDataSource();
    final DelegatingDataSource proxyDataSource = createProxyDataSource(targetDataSource);
    config.setReloadCallback(new ReloadCallback() {
        @Override
        public void reload() throws Exception {
            // switch data source
            BoneCPDataSource oldTargetDataSource = (BoneCPDataSource)proxyDataSource.getTargetDataSource();
            BoneCPDataSource newTargetDataSource = createNewDataSource();
            newTargetDataSource.getConnection().close(); // initialize a connection (+ throw it away) to force the datasource to initialize the pool

            proxyDataSource.setTargetDataSource(newTargetDataSource);
            oldTargetDataSource.close();
        }
    });
    return proxyDataSource;
}
项目:cloud-config    文件:DruidDataSourceFactoryBean.java   
@Override
protected DataSource createInstance() throws Exception {
    Preconditions.checkNotNull(config, "config cannot be empty");
    final DruidDataSource targetDataSource = createNewDataSource();
    final DelegatingDataSource proxyDataSource = createProxyDataSource(targetDataSource);
    config.setReloadCallback(new ReloadCallback() {
        @Override
        public void reload() throws Exception {
            // switch data source
            DruidDataSource oldTargetDataSource = (DruidDataSource)proxyDataSource.getTargetDataSource();
            DruidDataSource newTargetDataSource = createNewDataSource();
            newTargetDataSource.getConnection().close(); // initialize a connection (+ throw it away) to force the datasource to initialize the pool

            proxyDataSource.setTargetDataSource(newTargetDataSource);
            oldTargetDataSource.close();
        }
    });
    return proxyDataSource;
}
项目:communote-server    文件:C3P0DataSourceConnectionProvider.java   
/**
 * Close the datasource. This part is c3p0 specific, since the close is not generally available
 * on the {@link DataSource} interface.
 *
 * @param dataSource
 *            the data source to close. if null, nothing will be done.
 */
private void closeDataSource(DataSource dataSource) {
    try {
        // if wrapped get target DataSource
        while (dataSource instanceof DelegatingDataSource) {
            dataSource = ((DelegatingDataSource) dataSource).getTargetDataSource();
        }
        if (dataSource instanceof PooledDataSource) {
            LOGGER.info("Closing database connection pool.");
            ((PooledDataSource) dataSource).close();
        }
    } catch (Exception e) {
        LOGGER.error("An error occurred while closing the connections", e);
    }
}
项目:owsi-core-parent    文件:DatabaseInitializationService.java   
/**
 * Méthode utilisée par l'initialisation spring pour la mise en place
 * du {@link DataSource}
 */
public void setDataSource(DataSource dataSource) {
    /*
     * Il faut utiliser une DelegatingDataSource car le transaction manager d'hibernate
     * n'accepte pas de partager la gestion d'un data-source avec un autre transaction
     * manager.
     * On wrappe donc la data-source pour qu'hibernate accepte de déléguer la gestion.
     */
    DelegatingDataSource myDataSource = new DelegatingDataSource(dataSource);
    jdbcTemplate = new JdbcTemplate(myDataSource);
}
项目:cloud-config    文件:AbstractDataSourceFactoryBean.java   
protected DelegatingDataSource createProxyDataSource(DataSource targetDataSource) {
    return new DelegatingDataSource(targetDataSource) {
        @Override
        public String toString() {
            if(getTargetDataSource()!=null) {
                return getTargetDataSource().toString();
            } else {
                return "_NULL_DATA_SOURCE_";
            }
        }
    };
}
项目:opennmszh    文件:TemporaryDatabaseExecutionListener.java   
private static TemporaryDatabase findTemporaryDatabase(final DataSource dataSource) {
    if (dataSource instanceof TemporaryDatabase) {
        return (TemporaryDatabase) dataSource;
    } else if (dataSource instanceof DelegatingDataSource) {
        return findTemporaryDatabase(((DelegatingDataSource) dataSource).getTargetDataSource());
    } else {
        return null;
    }
}
项目:OpenNMS    文件:TemporaryDatabaseExecutionListener.java   
private static TemporaryDatabase findTemporaryDatabase(final DataSource dataSource) {
    if (dataSource instanceof TemporaryDatabase) {
        return (TemporaryDatabase) dataSource;
    } else if (dataSource instanceof DelegatingDataSource) {
        return findTemporaryDatabase(((DelegatingDataSource) dataSource).getTargetDataSource());
    } else {
        return null;
    }
}
项目:cloud-config    文件:C3P0DataSourceFactoryBean.java   
@Override
protected void destroyInstance(DataSource instance) throws Exception {
    ((ComboPooledDataSource)((DelegatingDataSource)instance).getTargetDataSource()).close();
}
项目:cloud-config    文件:BoneCPDataSourceFactoryBean.java   
@Override
protected void destroyInstance(DataSource instance) throws Exception {
    ((BoneCPDataSource)((DelegatingDataSource)instance).getTargetDataSource()).close();
}
项目:cloud-config    文件:DruidDataSourceFactoryBean.java   
@Override
protected void destroyInstance(DataSource instance) throws Exception {
    ((DruidDataSource)((DelegatingDataSource)instance).getTargetDataSource()).close();
}