Merge pull request #8709 from dataease/pr@dev@fixconn
fix(数据源): 停止应用时,释放数据源链接
This commit is contained in:
commit
da5ebe55d6
@ -1,6 +1,7 @@
|
||||
package io.dataease.listener;
|
||||
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.service.datasource.DatasourceService;
|
||||
import net.sf.ehcache.CacheManager;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -8,17 +9,23 @@ import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextClosedEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Component
|
||||
public class ApplicationCloseEventListener implements ApplicationListener<ContextClosedEvent> {
|
||||
|
||||
@Autowired(required = false)
|
||||
CacheManager cacheManager;
|
||||
@Resource
|
||||
DatasourceService datasourceService;
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextClosedEvent event) {
|
||||
|
||||
if (ObjectUtils.isNotEmpty(cacheManager))
|
||||
cacheManager.shutdown();
|
||||
datasourceService.releaseDsconnections();
|
||||
LogUtil.info("DataEase is stopping");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,10 +10,7 @@ import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.constants.RedisConstants;
|
||||
import io.dataease.commons.constants.SysAuthConstants;
|
||||
import io.dataease.commons.model.AuthURD;
|
||||
import io.dataease.commons.utils.AuthUtils;
|
||||
import io.dataease.commons.utils.BeanUtils;
|
||||
import io.dataease.commons.utils.CommonThreadPool;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.*;
|
||||
import io.dataease.controller.ResultHolder;
|
||||
import io.dataease.controller.datasource.request.UpdataDsRequest;
|
||||
import io.dataease.controller.request.DatasourceUnionRequest;
|
||||
@ -43,6 +40,7 @@ import io.dataease.plugins.common.request.datasource.DatasourceRequest;
|
||||
import io.dataease.plugins.common.util.SpringContextUtil;
|
||||
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
|
||||
import io.dataease.plugins.datasource.entity.Status;
|
||||
import io.dataease.plugins.datasource.provider.DefaultJdbcProvider;
|
||||
import io.dataease.plugins.datasource.provider.Provider;
|
||||
import io.dataease.plugins.datasource.provider.ProviderFactory;
|
||||
import io.dataease.provider.datasource.ApiProvider;
|
||||
@ -654,4 +652,15 @@ public class DatasourceService {
|
||||
datasourceMapper.updateByPrimaryKeyWithBLOBs(datasource);
|
||||
}
|
||||
|
||||
public void releaseDsconnections(){
|
||||
List<DefaultJdbcProvider> providers = (List<DefaultJdbcProvider>)SpringContextUtil.getApplicationContext().getBeansOfType(DefaultJdbcProvider.class).values();
|
||||
providers.forEach(provider ->{
|
||||
provider.getJdbcConnection().values().forEach(druidDataSource -> {
|
||||
try {
|
||||
druidDataSource.close();
|
||||
}catch (Exception e){}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -23,6 +23,10 @@ import java.sql.*;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class DefaultJdbcProvider extends Provider {
|
||||
public Map<String, DruidDataSource> getJdbcConnection() {
|
||||
return jdbcConnection;
|
||||
}
|
||||
|
||||
protected Map<String, DruidDataSource> jdbcConnection = new HashMap<>();
|
||||
protected ExtendedJdbcClassLoader extendedJdbcClassLoader;
|
||||
private Map<String, ExtendedJdbcClassLoader> customJdbcClassLoaders = new HashMap<>();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user