From 211eafaeed3da02b35ecb24989451e76ae1f8e11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?=
<806783409@qq.com>
Date: Wed, 8 Apr 2020 12:17:15 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89jta=E4=BA=8B=E5=8A=A1?=
=?UTF-8?q?=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
zyplayer-doc-data/pom.xml | 4 -
.../doc/data/config/MybatisPlusConfig.java | 89 ++-----------------
.../doc/data/utils/DruidDataSourceUtil.java | 50 +++++++++++
zyplayer-doc-db/pom.xml | 4 -
.../configuration/DatasourceUtil.java | 32 +------
zyplayer-doc-manage/pom.xml | 4 -
.../src/main/resources/logback.xml | 87 +++++++++---------
.../src/main/resources/logback.xml | 3 -
8 files changed, 101 insertions(+), 172 deletions(-)
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/utils/DruidDataSourceUtil.java
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 @@
-
-
-