diff --git a/zyplayer-doc-data/pom.xml b/zyplayer-doc-data/pom.xml index 8b75f342..82018b53 100644 --- a/zyplayer-doc-data/pom.xml +++ b/zyplayer-doc-data/pom.xml @@ -41,10 +41,6 @@ spring-boot-starter-test test - - org.springframework.boot - spring-boot-starter-jta-atomikos - com.baomidou mybatis-plus-boot-starter diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java index f4346ea4..8ba38d16 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/config/MybatisPlusConfig.java @@ -1,26 +1,19 @@ package com.zyplayer.doc.data.config; -import com.atomikos.icatch.jta.UserTransactionImp; -import com.atomikos.icatch.jta.UserTransactionManager; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; -import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import com.github.pagehelper.PageHelper; import com.zyplayer.doc.data.repository.support.interceptor.SqlLogInterceptor; +import com.zyplayer.doc.data.utils.DruidDataSourceUtil; import org.apache.ibatis.plugin.Interceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.transaction.jta.JtaTransactionManager; import javax.sql.DataSource; -import javax.transaction.TransactionManager; -import javax.transaction.UserTransaction; import java.util.Properties; /** @@ -32,58 +25,17 @@ public class MybatisPlusConfig { /** * sql日志 **/ - private static final SqlLogInterceptor SQL_LOG_INTERCEPTOR; + private static final SqlLogInterceptor SQL_LOG_INTERCEPTOR = new SqlLogInterceptor(); /** * MYSQL 分页 **/ private static final PageHelper MYSQL_PAGE_HELPER; static { - { - MYSQL_PAGE_HELPER = new PageHelper(); - Properties properties = new Properties(); - properties.setProperty("dialect", "mysql"); - MYSQL_PAGE_HELPER.setProperties(properties); - } - { - SQL_LOG_INTERCEPTOR = new SqlLogInterceptor(); - Properties properties = new Properties(); - SQL_LOG_INTERCEPTOR.setProperties(properties); - } - } - - /** - * 分布式事务配置 - */ - @Configuration - static class JTATransactionManagerConfig { - - @Bean(name = "userTransaction") - public UserTransaction userTransaction() throws Throwable { - UserTransactionImp userTransactionImp = new UserTransactionImp(); - userTransactionImp.setTransactionTimeout(300); - return userTransactionImp; - } - - @Bean(name = "atomikosTransactionManager") - public TransactionManager atomikosTransactionManager() { - UserTransactionManager userTransactionManager = new UserTransactionManager(); - userTransactionManager.setForceShutdown(true); - return userTransactionManager; - } - - @Bean(name = "transactionManager") - public PlatformTransactionManager transactionManager() throws Throwable { - UserTransaction userTransaction = userTransaction(); - TransactionManager atomikosTransactionManager = atomikosTransactionManager(); - - JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(userTransaction, atomikosTransactionManager); - jtaTransactionManager.setAllowCustomIsolationLevels(true); - jtaTransactionManager.setGlobalRollbackOnParticipationFailure(true); - jtaTransactionManager.setDefaultTimeout(30); - - return jtaTransactionManager; - } + MYSQL_PAGE_HELPER = new PageHelper(); + Properties properties = new Properties(); + properties.setProperty("dialect", "mysql"); + MYSQL_PAGE_HELPER.setProperties(properties); } /** @@ -105,24 +57,7 @@ public class MybatisPlusConfig { @Bean(name = "manageDatasource") public DataSource manageDatasource() { - Properties xaProperties = new Properties(); - xaProperties.setProperty("driverClassName", driverClassName); - xaProperties.setProperty("url", url); - xaProperties.setProperty("username", username); - xaProperties.setProperty("password", password); - xaProperties.setProperty("maxActive", "500"); - xaProperties.setProperty("testOnBorrow", "true"); - xaProperties.setProperty("testWhileIdle", "true"); - xaProperties.setProperty("validationQuery", "select 'x'"); - - AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean(); - xaDataSource.setXaProperties(xaProperties); - xaDataSource.setXaDataSourceClassName("com.alibaba.druid.pool.xa.DruidXADataSource"); - xaDataSource.setUniqueResourceName("manageDatasource"); - xaDataSource.setMaxPoolSize(500); - xaDataSource.setMinPoolSize(1); - xaDataSource.setMaxLifetime(60); - return xaDataSource; + return DruidDataSourceUtil.createDataSource(driverClassName, url, username, password); } @Bean(name = "manageSqlSessionFactory") @@ -137,16 +72,6 @@ public class MybatisPlusConfig { } } - @Bean - public PerformanceInterceptor performanceInterceptor() { - PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); - /* */ - performanceInterceptor.setMaxTime(1000); - /* */ - performanceInterceptor.setFormat(true); - return performanceInterceptor; - } - @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/utils/DruidDataSourceUtil.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/utils/DruidDataSourceUtil.java new file mode 100644 index 00000000..1879f82f --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/utils/DruidDataSourceUtil.java @@ -0,0 +1,50 @@ +package com.zyplayer.doc.data.utils; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.DruidPooledConnection; +import com.zyplayer.doc.core.exception.ConfirmException; + +import java.util.concurrent.atomic.AtomicLong; + +public class DruidDataSourceUtil { + + private static AtomicLong nameId = new AtomicLong(0); + + public static DruidDataSource createDataSource(String driverClassName, String url, String username, String password){ + try { + // 数据源配置 + DruidDataSource dataSource = new DruidDataSource(); + dataSource.setDriverClassName(driverClassName); + dataSource.setUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + dataSource.setInitialSize(2); + dataSource.setMinIdle(2); + dataSource.setMaxActive(50); + dataSource.setTestWhileIdle(true); + dataSource.setTestOnBorrow(false); + dataSource.setTestOnReturn(false); + dataSource.setValidationQuery("select 1"); + dataSource.setMaxWait(3000); + dataSource.setTimeBetweenEvictionRunsMillis(60000); + dataSource.setMinEvictableIdleTimeMillis(3600000); + // 重试3次,失败退出,源码里是errorCount > connectionErrorRetryAttempts,所以写成2就是3次、、、 + // CreateConnectionThread 源码在这个类里面 + dataSource.setConnectionErrorRetryAttempts(2); + dataSource.setBreakAfterAcquireFailure(true); + dataSource.setName("zyplayer-doc-db-" + nameId.incrementAndGet()); + if (url.contains("oracle")) { + dataSource.setValidationQuery("select 1 from dual"); + } + DruidPooledConnection connection = dataSource.getConnection(3000); + if (connection == null) { + throw new ConfirmException("尝试获取该数据源连接失败:" + url); + } + connection.recycle(); + return dataSource; + } catch (Throwable e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/zyplayer-doc-db/pom.xml b/zyplayer-doc-db/pom.xml index cf6ac632..98350c14 100644 --- a/zyplayer-doc-db/pom.xml +++ b/zyplayer-doc-db/pom.xml @@ -37,10 +37,6 @@ org.springframework.boot spring-boot-starter-jdbc - - org.springframework.boot - spring-boot-starter-jta-atomikos - org.mybatis mybatis diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java index 06036b7c..9a1b0f0b 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java @@ -1,9 +1,8 @@ package com.zyplayer.doc.db.framework.configuration; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.pool.DruidPooledConnection; -import com.zyplayer.doc.core.exception.ConfirmException; import com.zyplayer.doc.data.repository.manage.entity.DbDatasource; +import com.zyplayer.doc.data.utils.DruidDataSourceUtil; import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; import com.zyplayer.doc.db.framework.db.interceptor.SqlLogInterceptor; import org.apache.ibatis.plugin.Interceptor; @@ -18,33 +17,7 @@ public class DatasourceUtil { public static DatabaseFactoryBean createDatabaseFactoryBean(DbDatasource dbDatasource){ try { // 数据源配置 - DruidDataSource dataSource = new DruidDataSource(); - dataSource.setDriverClassName(dbDatasource.getDriverClassName()); - dataSource.setUrl(dbDatasource.getSourceUrl()); - dataSource.setUsername(dbDatasource.getSourceName()); - dataSource.setPassword(dbDatasource.getSourcePassword()); - dataSource.setInitialSize(2); - dataSource.setMinIdle(2); - dataSource.setMaxActive(50); - dataSource.setTestWhileIdle(true); - dataSource.setTestOnBorrow(false); - dataSource.setTestOnReturn(false); - dataSource.setValidationQuery("select 1"); - dataSource.setMaxWait(3000); - dataSource.setTimeBetweenEvictionRunsMillis(60000); - dataSource.setMinEvictableIdleTimeMillis(3600000); - // 重试3次,失败退出,源码里是errorCount > connectionErrorRetryAttempts,所以写成2就是3次、、、 - // CreateConnectionThread 源码在这个类里面 - dataSource.setConnectionErrorRetryAttempts(2); - dataSource.setBreakAfterAcquireFailure(true); - dataSource.setName("zyplayer-doc-db-" + dbDatasource.getId()); - if (dbDatasource.getSourceUrl().contains("oracle")) { - dataSource.setValidationQuery("select 1 from dual"); - } - DruidPooledConnection connection = dataSource.getConnection(3000); - if (connection == null) { - throw new ConfirmException("尝试获取该数据源连接失败:" + dbDatasource.getSourceUrl()); - } + DruidDataSource dataSource = DruidDataSourceUtil.createDataSource(dbDatasource.getDriverClassName(), dbDatasource.getSourceUrl(), dbDatasource.getSourceName(), dbDatasource.getSourcePassword()); // 描述连接信息的对象 DatabaseFactoryBean databaseFactoryBean = new DatabaseFactoryBean(); Resource[] resources = null; @@ -86,7 +59,6 @@ public class DatasourceUtil { databaseFactoryBean.setDatabaseProduct(DatabaseFactoryBean.DatabaseProduct.ORACLE); resources = resolver.getResources("classpath:com/zyplayer/doc/db/framework/db/mapper/oracle/*.xml"); } - connection.recycle(); if (resources == null) { return null; } diff --git a/zyplayer-doc-manage/pom.xml b/zyplayer-doc-manage/pom.xml index 39e8e081..59fcd1fb 100644 --- a/zyplayer-doc-manage/pom.xml +++ b/zyplayer-doc-manage/pom.xml @@ -40,10 +40,6 @@ spring-boot-starter-test test - - org.springframework.boot - spring-boot-starter-jta-atomikos - diff --git a/zyplayer-doc-manage/src/main/resources/logback.xml b/zyplayer-doc-manage/src/main/resources/logback.xml index c64c83b9..553633f8 100644 --- a/zyplayer-doc-manage/src/main/resources/logback.xml +++ b/zyplayer-doc-manage/src/main/resources/logback.xml @@ -1,45 +1,42 @@ - - - - - - - - - ${outPattern} - - - - /web/logs/zyplayer-doc-manage/error.log - - /web/logs/zyplayer-doc-manage/error.%d{yyyy-MM-dd}.log - ${maxHistory} - - - ${outPattern} - - - - /web/logs/zyplayer-doc-manage/common.log - - /web/logs/zyplayer-doc-manage/common.%d{yyyy-MM-dd}.log - ${maxHistory} - - - ${outPattern} - - - - - - - - - - - - - - - - + + + + + + + + + ${outPattern} + + + + /web/logs/zyplayer-doc-manage/error.log + + /web/logs/zyplayer-doc-manage/error.%d{yyyy-MM-dd}.log + ${maxHistory} + + + ${outPattern} + + + + /web/logs/zyplayer-doc-manage/common.log + + /web/logs/zyplayer-doc-manage/common.%d{yyyy-MM-dd}.log + ${maxHistory} + + + ${outPattern} + + + + + + + + + + + + + diff --git a/zyplayer-doc-other/zyplayer-doc-test/src/main/resources/logback.xml b/zyplayer-doc-other/zyplayer-doc-test/src/main/resources/logback.xml index d8a1dab6..fc026c83 100644 --- a/zyplayer-doc-other/zyplayer-doc-test/src/main/resources/logback.xml +++ b/zyplayer-doc-other/zyplayer-doc-test/src/main/resources/logback.xml @@ -30,9 +30,6 @@ - - -