From d9adbadd9fa14cb7174f6167c438a45e8176fd26 Mon Sep 17 00:00:00 2001 From: SZH <szh_hello@163.com> Date: 星期四, 23 二月 2023 15:22:04 +0800 Subject: [PATCH] 数据库连接池移除druid atomikos分布式事务使用com.mysql.cj.jdbc.MysqlXADataSource --- safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java | 106 +++++++++++++++++++++------------------------------- 1 files changed, 43 insertions(+), 63 deletions(-) diff --git a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java index 4b7e3c5..3dca8bb 100644 --- a/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java +++ b/safePlatfrom-out-web/src/main/java/com/gkhy/safePlatform/config/database/DruidConfig.java @@ -1,12 +1,8 @@ package com.gkhy.safePlatform.config.database; -import com.alibaba.druid.filter.stat.StatFilter; -import com.alibaba.druid.support.http.StatViewServlet; -import com.alibaba.druid.support.http.WebStatFilter; -import com.alibaba.druid.wall.WallConfig; -import com.alibaba.druid.wall.WallFilter; import com.atomikos.icatch.jta.UserTransactionImp; import com.atomikos.icatch.jta.UserTransactionManager; +import com.mysql.cj.jdbc.MysqlXADataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean; @@ -32,24 +28,29 @@ @Configuration public class DruidConfig { - @Value("${spring.datasource.type}") - private String datasourceClass; + @Autowired + private DataCourceProperties dataCourceProperties; @Bean(name = "dsGoalManage") @Primary @Autowired public DataSource dsGoalManage(Environment env) { - AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + final MysqlXADataSource mysqlXADataSource = new MysqlXADataSource(); Properties prop = build(env, "spring.datasource.goalmanage."); -// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource"); - ds.setXaDataSourceClassName(datasourceClass); + mysqlXADataSource.setUrl(dataCourceProperties.getGoalmanage().getUrl()); + mysqlXADataSource.setUser(dataCourceProperties.getGoalmanage().getUsername()); + mysqlXADataSource.setPassword(dataCourceProperties.getGoalmanage().getPassword()); + final AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + ds.setXaDataSource(mysqlXADataSource); ds.setUniqueResourceName("goalmanage"); - ds.setPoolSize(2); + ds.setPoolSize(dataCourceProperties.getGoalmanage().getInitialSize()); + ds.setMinPoolSize(dataCourceProperties.getGoalmanage().getMinIdle()); + ds.setMaxPoolSize(dataCourceProperties.getGoalmanage().getMaxActive()); ds.setXaProperties(prop); ds.setMaxIdleTime(3600); ds.setMaxLifetime(3000); + ds.setTestQuery(dataCourceProperties.getGoalmanage().getValidationQuery()); return ds; - } @@ -57,15 +58,21 @@ @Primary @Bean(name = "dsEmergency") public AtomikosDataSourceBean dsEmergency(Environment env) { - AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + final MysqlXADataSource mysqlXADataSource = new MysqlXADataSource(); Properties prop = build(env, "spring.datasource.emergency."); -// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource"); - ds.setXaDataSourceClassName(datasourceClass); + mysqlXADataSource.setUrl(dataCourceProperties.getEmergency().getUrl()); + mysqlXADataSource.setUser(dataCourceProperties.getEmergency().getUsername()); + mysqlXADataSource.setPassword(dataCourceProperties.getEmergency().getPassword()); + final AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + ds.setXaDataSource(mysqlXADataSource); ds.setUniqueResourceName("emergency"); - ds.setPoolSize(2); + ds.setPoolSize(dataCourceProperties.getEmergency().getInitialSize()); + ds.setMinPoolSize(dataCourceProperties.getEmergency().getMinIdle()); + ds.setMaxPoolSize(dataCourceProperties.getEmergency().getMaxActive()); ds.setXaProperties(prop); ds.setMaxIdleTime(3600); ds.setMaxLifetime(3000); + ds.setTestQuery(dataCourceProperties.getEmergency().getValidationQuery()); return ds; } @@ -73,15 +80,21 @@ @Primary @Bean(name = "dsIncidentManage") public AtomikosDataSourceBean dsIncidentManage(Environment env) { - AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + final MysqlXADataSource mysqlXADataSource = new MysqlXADataSource(); Properties prop = build(env, "spring.datasource.incidentmanage."); - ds.setXaDataSourceClassName(datasourceClass); -// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource"); + mysqlXADataSource.setUrl(dataCourceProperties.getIncidentmanage().getUrl()); + mysqlXADataSource.setUser(dataCourceProperties.getIncidentmanage().getUsername()); + mysqlXADataSource.setPassword(dataCourceProperties.getIncidentmanage().getPassword()); + final AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + ds.setXaDataSource(mysqlXADataSource); ds.setUniqueResourceName("incidentmanage"); - ds.setPoolSize(2); + ds.setPoolSize(dataCourceProperties.getIncidentmanage().getInitialSize()); + ds.setMinPoolSize(dataCourceProperties.getIncidentmanage().getMinIdle()); + ds.setMaxPoolSize(dataCourceProperties.getIncidentmanage().getMaxActive()); ds.setXaProperties(prop); ds.setMaxIdleTime(3600); ds.setMaxLifetime(3000); + ds.setTestQuery(dataCourceProperties.getIncidentmanage().getValidationQuery()); return ds; } @@ -89,15 +102,21 @@ @Primary @Bean(name = "dsEquipment") public AtomikosDataSourceBean dsEquipment(Environment env) { - AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + final MysqlXADataSource mysqlXADataSource = new MysqlXADataSource(); Properties prop = build(env, "spring.datasource.equipment."); - ds.setXaDataSourceClassName(datasourceClass); -// ds.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource"); + mysqlXADataSource.setUrl(dataCourceProperties.getEquipment().getUrl()); + mysqlXADataSource.setUser(dataCourceProperties.getEquipment().getUsername()); + mysqlXADataSource.setPassword(dataCourceProperties.getEquipment().getPassword()); + final AtomikosDataSourceBean ds = new AtomikosDataSourceBean(); + ds.setXaDataSource(mysqlXADataSource); ds.setUniqueResourceName("equipment"); - ds.setPoolSize(2); + ds.setPoolSize(dataCourceProperties.getEquipment().getInitialSize()); + ds.setMinPoolSize(dataCourceProperties.getEquipment().getMinIdle()); + ds.setMaxPoolSize(dataCourceProperties.getEquipment().getMaxActive()); ds.setXaProperties(prop); ds.setMaxIdleTime(3600); ds.setMaxLifetime(3000); + ds.setTestQuery(dataCourceProperties.getEquipment().getValidationQuery()); return ds; } @@ -143,45 +162,6 @@ // prop.put("filters", env.getProperty(prefix + "filters")); return prop; - } - -// @Bean - public ServletRegistrationBean druidServlet() { - ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); - - //控制台管理用户,加入下面2行 进入druid后台就需要登录 - //servletRegistrationBean.addInitParameter("loginUsername", "admin"); - //servletRegistrationBean.addInitParameter("loginPassword", "admin"); - return servletRegistrationBean; - } - -// @Bean - public FilterRegistrationBean filterRegistrationBean() { - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); - filterRegistrationBean.setFilter(new WebStatFilter()); - filterRegistrationBean.addUrlPatterns("/*"); - filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); - filterRegistrationBean.addInitParameter("profileEnable", "true"); - return filterRegistrationBean; - } - -// @Bean - public StatFilter statFilter(){ - StatFilter statFilter = new StatFilter(); - statFilter.setLogSlowSql(true); //slowSqlMillis用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢。 - statFilter.setMergeSql(true); //SQL合并配置 - statFilter.setSlowSqlMillis(1000);//slowSqlMillis的缺省值为3000,也就是3秒。 - return statFilter; - } - -// @Bean - public WallFilter wallFilter(){ - WallFilter wallFilter = new WallFilter(); - //允许执行多条SQL - WallConfig config = new WallConfig(); - config.setMultiStatementAllow(true); - wallFilter.setConfig(config); - return wallFilter; } } -- Gitblit v1.9.2