提交 17dcc579 authored 作者: taojinlong's avatar taojinlong

feat: 示例数据

上级 f88d0f5e
...@@ -32,5 +32,5 @@ public abstract class DatasourceProvider { ...@@ -32,5 +32,5 @@ public abstract class DatasourceProvider {
abstract public Map<String, List> fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception; abstract public Map<String, List> fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception;
abstract public void initDataSource(DatasourceRequest datasourceRequest) throws Exception; abstract public void initDataSource(DatasourceRequest datasourceRequest, String type) throws Exception;
} }
...@@ -271,7 +271,7 @@ public class JdbcProvider extends DatasourceProvider { ...@@ -271,7 +271,7 @@ public class JdbcProvider extends DatasourceProvider {
private Connection getConnectionFromPool(DatasourceRequest datasourceRequest) throws Exception { private Connection getConnectionFromPool(DatasourceRequest datasourceRequest) throws Exception {
ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId()); ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
if (dataSource == null) { if (dataSource == null) {
initDataSource(datasourceRequest); initDataSource(datasourceRequest, "add");
} }
dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId()); dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
Connection co = dataSource.getConnection(); Connection co = dataSource.getConnection();
...@@ -279,30 +279,48 @@ public class JdbcProvider extends DatasourceProvider { ...@@ -279,30 +279,48 @@ public class JdbcProvider extends DatasourceProvider {
} }
@Override @Override
public void initDataSource(DatasourceRequest datasourceRequest) throws Exception { public void initDataSource(DatasourceRequest datasourceRequest, String type) throws Exception {
ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId()); switch (type){
if (dataSource == null) { case "add":
dataSource = new ComboPooledDataSource(); ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
setCredential(datasourceRequest, dataSource); if (dataSource == null) {
dataSource.setMaxIdleTime(30); // 最大空闲时间 extracted(datasourceRequest);
dataSource.setAcquireIncrement(5);// 增长数 }
dataSource.setInitialPoolSize(initPoolSize);// 初始连接数 break;
dataSource.setMinPoolSize(initPoolSize); // 最小连接数 case "edit":
dataSource.setMaxPoolSize(maxConnections); // 最大连接数 jdbcConnection.remove(datasourceRequest.getDatasource().getId());
dataSource.setAcquireRetryAttempts(30);// 获取连接重试次数 extracted(datasourceRequest);
dataSource.setIdleConnectionTestPeriod(60); // 每60s检查数据库空闲连接 break;
dataSource.setMaxStatements(0); // c3p0全局的PreparedStatements缓存的大小 case "delete":
dataSource.setBreakAfterAcquireFailure(false); // 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false jdbcConnection.remove(datasourceRequest.getDatasource().getId());
dataSource.setTestConnectionOnCheckout(false); // 在每个connection 提交是校验有效性 break;
dataSource.setTestConnectionOnCheckin(true); // 取得连接的同时将校验连接的有效性 default:
dataSource.setCheckoutTimeout(60000); // 从连接池获取连接的超时时间,如设为0则无限期等待。单位毫秒,默认为0 break;
dataSource.setPreferredTestQuery("SELECT 1");
dataSource.setDebugUnreturnedConnectionStackTraces(true);
dataSource.setUnreturnedConnectionTimeout(3600);
jdbcConnection.put(datasourceRequest.getDatasource().getId(), dataSource);
} }
} }
private void extracted(DatasourceRequest datasourceRequest) throws PropertyVetoException {
ComboPooledDataSource dataSource;
dataSource = new ComboPooledDataSource();
setCredential(datasourceRequest, dataSource);
dataSource.setMaxIdleTime(30); // 最大空闲时间
dataSource.setAcquireIncrement(5);// 增长数
dataSource.setInitialPoolSize(initPoolSize);// 初始连接数
dataSource.setMinPoolSize(initPoolSize); // 最小连接数
dataSource.setMaxPoolSize(maxConnections); // 最大连接数
dataSource.setAcquireRetryAttempts(30);// 获取连接重试次数
dataSource.setIdleConnectionTestPeriod(60); // 每60s检查数据库空闲连接
dataSource.setMaxStatements(0); // c3p0全局的PreparedStatements缓存的大小
dataSource.setBreakAfterAcquireFailure(false); // 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false
dataSource.setTestConnectionOnCheckout(false); // 在每个connection 提交是校验有效性
dataSource.setTestConnectionOnCheckin(true); // 取得连接的同时将校验连接的有效性
dataSource.setCheckoutTimeout(60000); // 从连接池获取连接的超时时间,如设为0则无限期等待。单位毫秒,默认为0
dataSource.setPreferredTestQuery("SELECT 1");
dataSource.setDebugUnreturnedConnectionStackTraces(true);
dataSource.setUnreturnedConnectionTimeout(3600);
jdbcConnection.put(datasourceRequest.getDatasource().getId(), dataSource);
}
private static Connection getConnection(DatasourceRequest datasourceRequest) throws Exception { private static Connection getConnection(DatasourceRequest datasourceRequest) throws Exception {
String username = null; String username = null;
String password = null; String password = null;
......
...@@ -55,9 +55,24 @@ public class DatasourceService { ...@@ -55,9 +55,24 @@ public class DatasourceService {
datasource.setCreateTime(currentTimeMillis); datasource.setCreateTime(currentTimeMillis);
datasource.setCreateBy(String.valueOf(AuthUtils.getUser().getUsername())); datasource.setCreateBy(String.valueOf(AuthUtils.getUser().getUsername()));
datasourceMapper.insertSelective(datasource); datasourceMapper.insertSelective(datasource);
initConnectionPool(datasource, "add");
return datasource; return datasource;
} }
private void initConnectionPool(Datasource datasource, String type) {
commonThreadPool.addTask(() -> {
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
datasourceProvider.initDataSource(datasourceRequest, type);
LogUtil.info("Succsss to init datasource connection pool: " + datasource.getName());
} catch (Exception e) {
LogUtil.error("Failed to init datasource connection pool: " + datasource.getName(), e);
}
});
}
public List<DatasourceDTO> getDatasourceList(DatasourceUnionRequest request) throws Exception { public List<DatasourceDTO> getDatasourceList(DatasourceUnionRequest request) throws Exception {
request.setSort("update_time desc"); request.setSort("update_time desc");
return extDataSourceMapper.queryUnion(request); return extDataSourceMapper.queryUnion(request);
...@@ -92,6 +107,7 @@ public class DatasourceService { ...@@ -92,6 +107,7 @@ public class DatasourceService {
datasource.setCreateTime(null); datasource.setCreateTime(null);
datasource.setUpdateTime(System.currentTimeMillis()); datasource.setUpdateTime(System.currentTimeMillis());
datasourceMapper.updateByPrimaryKeySelective(datasource); datasourceMapper.updateByPrimaryKeySelective(datasource);
initConnectionPool(datasource, "edit");
} }
public void validate(Datasource datasource) throws Exception { public void validate(Datasource datasource) throws Exception {
...@@ -148,17 +164,7 @@ public class DatasourceService { ...@@ -148,17 +164,7 @@ public class DatasourceService {
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample()); List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
datasources.forEach(datasource -> { datasources.forEach(datasource -> {
try { try {
commonThreadPool.addTask(() -> { initConnectionPool(datasource, "add");
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
datasourceProvider.initDataSource(datasourceRequest);
LogUtil.info("Succsss to init datasource connection pool: " + datasource.getName());
} catch (Exception e) {
LogUtil.error("Failed to init datasource connection pool: " + datasource.getName(), e);
}
});
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论