update seata-server 2.3.0 => 2.4.0 (注意此版本改动较多 升级需要严格根据提交记录处理)

This commit is contained in:
疯狂的狮子Li
2025-06-30 15:46:13 +08:00
parent c39a816689
commit 61ea1b3354
10 changed files with 69 additions and 61 deletions

View File

@@ -17,7 +17,7 @@
<revision>2.4.0</revision> <revision>2.4.0</revision>
<spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version> <spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version>
<sentinel.version>1.8.8</sentinel.version> <sentinel.version>1.8.8</sentinel.version>
<seata.version>2.3.0</seata.version> <seata.version>2.4.0</seata.version>
<nacos.client.version>2.5.1</nacos.client.version> <nacos.client.version>2.5.1</nacos.client.version>
<dubbo.version>3.3.4</dubbo.version> <dubbo.version>3.3.4</dubbo.version>
<dubbo-extensions.version>3.3.1</dubbo-extensions.version> <dubbo-extensions.version>3.3.1</dubbo-extensions.version>

View File

@@ -1,8 +1,6 @@
package org.dromara.common.seata.config; package org.dromara.common.seata.config;
import org.dromara.common.core.factory.YmlPropertySourceFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.PropertySource;
/** /**
* seata 配置 * seata 配置
@@ -10,7 +8,6 @@ import org.springframework.context.annotation.PropertySource;
* @author Lion Li * @author Lion Li
*/ */
@AutoConfiguration @AutoConfiguration
@PropertySource(value = "classpath:common-seata.yml", factory = YmlPropertySourceFactory.class)
public class SeataConfiguration { public class SeataConfiguration {
} }

View File

@@ -1,23 +0,0 @@
# 内置配置 不允许修改 如需修改请在 nacos 上写相同配置覆盖
# seata配置
seata:
config:
type: nacos
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
group: ${spring.cloud.nacos.config.group}
namespace: ${spring.profiles.active}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: seata-server.properties
registry:
type: nacos
nacos:
application: ruoyi-seata-server
server-addr: ${spring.cloud.nacos.server-addr}
group: ${spring.cloud.nacos.discovery.group}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
namespace: ${spring.profiles.active}
# 关闭自动代理
enable-auto-data-source-proxy: false

View File

@@ -27,7 +27,7 @@
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>
<seata.version>2.3.0</seata.version> <seata.version>2.4.0</seata.version>
<spring-boot-for-server.version>2.7.18</spring-boot-for-server.version> <spring-boot-for-server.version>2.7.18</spring-boot-for-server.version>
<spring-framework-for-server.version>5.3.39</spring-framework-for-server.version> <spring-framework-for-server.version>5.3.39</spring-framework-for-server.version>
<snakeyaml-for-server.version>2.0</snakeyaml-for-server.version> <snakeyaml-for-server.version>2.0</snakeyaml-for-server.version>
@@ -161,6 +161,12 @@
<version>${seata.version}</version> <version>${seata.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.seata</groupId>
<artifactId>seata-all</artifactId>
<version>${seata.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.seata</groupId> <groupId>org.apache.seata</groupId>
<artifactId>seata-core</artifactId> <artifactId>seata-core</artifactId>
@@ -199,11 +205,11 @@
<version>${seata.version}</version> <version>${seata.version}</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>org.apache.seata</groupId> <!-- <groupId>org.apache.seata</groupId>-->
<artifactId>seata-console</artifactId> <!-- <artifactId>seata-namingserver</artifactId>-->
<version>${seata.version}</version> <!-- <version>${seata.version}</version>-->
</dependency> <!-- </dependency>-->
<!-- for database --> <!-- for database -->
<dependency> <dependency>

View File

@@ -16,13 +16,14 @@
*/ */
package org.apache.seata.core.store.db; package org.apache.seata.core.store.db;
import org.apache.seata.common.ConfigurationKeys;
import org.apache.seata.common.exception.ShouldNeverHappenException;
import org.apache.seata.common.exception.StoreException; import org.apache.seata.common.exception.StoreException;
import org.apache.seata.common.executor.Initialize; import org.apache.seata.common.executor.Initialize;
import org.apache.seata.common.util.ConfigTools; import org.apache.seata.common.util.ConfigTools;
import org.apache.seata.common.util.StringUtils; import org.apache.seata.common.util.StringUtils;
import org.apache.seata.config.Configuration; import org.apache.seata.config.Configuration;
import org.apache.seata.config.ConfigurationFactory; import org.apache.seata.config.ConfigurationFactory;
import org.apache.seata.core.constants.ConfigurationKeys;
import org.apache.seata.core.constants.DBType; import org.apache.seata.core.constants.DBType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -55,13 +56,13 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider,
*/ */
protected static final Configuration CONFIG = ConfigurationFactory.getInstance(); protected static final Configuration CONFIG = ConfigurationFactory.getInstance();
private final static String MYSQL_DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver"; private static final String MYSQL_DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
private final static String MYSQL8_DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver"; private static final String MYSQL8_DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver";
private final static String MYSQL_DRIVER_FILE_PREFIX = "mysql-connector-java-"; private static final String MYSQL_DRIVER_FILE_PREFIX = "mysql-connector-j";
private final static Map<String, ClassLoader> MYSQL_DRIVER_LOADERS; private static final Map<String, ClassLoader> MYSQL_DRIVER_LOADERS;
private static final long DEFAULT_DB_MAX_WAIT = 5000; private static final long DEFAULT_DB_MAX_WAIT = 5000;
@@ -85,7 +86,7 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider,
} }
public void validate() { public void validate() {
//valid driver class name // valid driver class name
String driverClassName = getDriverClassName(); String driverClassName = getDriverClassName();
// ClassLoader loader = getDriverClassLoader(); // ClassLoader loader = getDriverClassLoader();
// if (null == loader) { // if (null == loader) {
@@ -95,15 +96,31 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider,
// loader.loadClass(driverClassName); // loader.loadClass(driverClassName);
Class.forName(driverClassName); Class.forName(driverClassName);
} catch (ClassNotFoundException exx) { } catch (ClassNotFoundException exx) {
String driverClassPath = null;
String folderPath = System.getProperty("loader.path"); String folderPath = System.getProperty("loader.path");
if (null != folderPath) { if (folderPath == null) {
driverClassPath = folderPath + "/jdbc/"; folderPath = System.getProperty("java.class.path");
} }
String driverClassPath = Stream.of(folderPath.split(File.pathSeparator))
.map(File::new)
.filter(File::exists)
.map(file -> file.isFile() ? file.getParentFile() : file)
.filter(Objects::nonNull)
.filter(File::isDirectory)
// Only the MySQL driver needs to be placed in the jdbc folder.
.map(file -> (MYSQL8_DRIVER_CLASS_NAME.equals(driverClassName)
|| MYSQL_DRIVER_CLASS_NAME.equals(driverClassName))
? new File(file, "jdbc")
: file)
.filter(File::exists)
.filter(File::isDirectory)
.distinct()
.findAny()
.map(File::getAbsolutePath)
.orElseThrow(() -> new ShouldNeverHappenException("cannot find jdbc folder"));
throw new StoreException(String.format( throw new StoreException(String.format(
"The driver {%s} cannot be found in the path %s. Please ensure that the appropriate database driver dependencies are included in the classpath.", driverClassName, driverClassPath)); "The driver {%s} cannot be found in the path %s. Please ensure that the appropriate database driver dependencies are included in the classpath.",
driverClassName, driverClassPath));
} }
} }
/** /**
* generate the datasource * generate the datasource
@@ -140,17 +157,20 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider,
* @return the db max wait * @return the db max wait
*/ */
protected Long getMaxWait() { protected Long getMaxWait() {
Long maxWait = CONFIG.getLong(ConfigurationKeys.STORE_DB_MAX_WAIT, DEFAULT_DB_MAX_WAIT); return CONFIG.getLong(ConfigurationKeys.STORE_DB_MAX_WAIT, DEFAULT_DB_MAX_WAIT);
return maxWait;
} }
protected ClassLoader getDriverClassLoader() { protected ClassLoader getDriverClassLoader() {
return MYSQL_DRIVER_LOADERS.getOrDefault(getDriverClassName(), ClassLoader.getSystemClassLoader()); return MYSQL_DRIVER_LOADERS.getOrDefault(
getDriverClassName(), this.getClass().getClassLoader());
} }
private static Map<String, ClassLoader> createMysqlDriverClassLoaders() { private static Map<String, ClassLoader> createMysqlDriverClassLoaders() {
Map<String, ClassLoader> loaders = new HashMap<>(); Map<String, ClassLoader> loaders = new HashMap<>();
String cp = System.getProperty("java.class.path"); String cp = System.getProperty("loader.path");
if (cp == null) {
cp = System.getProperty("java.class.path");
}
if (cp == null || cp.isEmpty()) { if (cp == null || cp.isEmpty()) {
return loaders; return loaders;
} }
@@ -178,7 +198,7 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider,
} }
try { try {
URL url = file.toURI().toURL(); URL url = file.toURI().toURL();
ClassLoader loader = new URLClassLoader(new URL[]{url}, ClassLoader.getSystemClassLoader()); ClassLoader loader = new URLClassLoader(new URL[] {url}, ClassLoader.getSystemClassLoader());
try { try {
loader.loadClass(MYSQL8_DRIVER_CLASS_NAME); loader.loadClass(MYSQL8_DRIVER_CLASS_NAME);
loaders.putIfAbsent(MYSQL8_DRIVER_CLASS_NAME, loader); loaders.putIfAbsent(MYSQL8_DRIVER_CLASS_NAME, loader);
@@ -279,5 +299,4 @@ public abstract class AbstractDataSourceProvider implements DataSourceProvider,
protected String getPublicKey() { protected String getPublicKey() {
return CONFIG.getConfig(ConfigurationKeys.STORE_PUBLIC_KEY); return CONFIG.getConfig(ConfigurationKeys.STORE_PUBLIC_KEY);
} }
} }

View File

@@ -19,11 +19,6 @@ logging:
# bootstrap-servers: 127.0.0.1:9092 # bootstrap-servers: 127.0.0.1:9092
# topic: logback_to_logstash # topic: logback_to_logstash
console:
user:
username: seata
password: seata
seata: seata:
config: config:
# support: nacos 、 consul 、 apollo 、 zk 、 etcd3 # support: nacos 、 consul 、 apollo 、 zk 、 etcd3
@@ -52,9 +47,3 @@ seata:
##if use MSE Nacos with auth, mutex with username/password attribute ##if use MSE Nacos with auth, mutex with username/password attribute
#access-key: "" #access-key: ""
#secret-key: "" #secret-key: ""
security:
secretKey: rE7bYayhpvduYwCxuhckybEPDXyna6xwm5m7MZjtjrdXjVxAbXAMccXHyaJvB346
tokenValidityInMilliseconds: 1800000
csrf-ignore-urls: /metadata/v1/**
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json,/health,/error,/vgroup/v1/**

View File

@@ -266,6 +266,26 @@ seata:
application-id: ${spring.application.name} application-id: ${spring.application.name}
# Seata 事务组编号,用于 TC 集群名 # Seata 事务组编号,用于 TC 集群名
tx-service-group: ${spring.application.name}-group tx-service-group: ${spring.application.name}-group
config:
type: nacos
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
group: ${spring.cloud.nacos.config.group}
namespace: ${spring.profiles.active}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: seata-server.properties
registry:
type: nacos
nacos:
application: ruoyi-seata-server
server-addr: ${spring.cloud.nacos.server-addr}
group: ${spring.cloud.nacos.discovery.group}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
namespace: ${spring.profiles.active}
# 关闭自动代理
enable-auto-data-source-proxy: false
# 多租户配置 # 多租户配置
tenant: tenant: