学习分布式事务遇到的小bug

一、介绍Seata

在处理分布式事务时我用到是Seata,Seata的事务管理中有三个重要的角色:

  • TC ( Transaction Coordinator ) - **事务协调者:**维护全局和分支事务的状态,协调全局事务提交或回滚。
  • TM (Transaction Manager) - **事务管理器:**定义全局事务的范围、开始全局事务、提交或回滚全局事务。

  • RM (Resource Manager) - **资源管理器:**管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

在学习TC的时候,我走两个过程:

1、部署TC服务(准备数据库表,准备配置文件,Docker部署)

2、微服务集成Seata(引入依赖,改造配置,添加数据表)

参考黑马资料:Docs

二、出现的问题

是当运行项目的时候发现下面的报错:

java 复制代码
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @5c90e579

其中关键信息是:module java.base does not "opens java.lang" to unnamed module @5c90e579。

我也发现一些解决办法,其中一个就是在启动参数加上下面参数:

java 复制代码
--add-opens java.base/java.lang=ALL-UNNAMED

步骤如下:

在查阅了一些资料后得知JDK17出现:module java.base does not "opens java.lang" to unnamed module的原因是因为 JVM 的模块 java.base 没有对未命名的模块开放 java.lang 这个包的深度反射 API 的调用权限,在JDK8后会出现,需要开放一些权限,又是一个版本问题。

问题解决!

相关推荐
dg10111 小时前
go-zero学习笔记(三)
笔记·学习·golang
知识点集锦2 小时前
【无标题】
网络·学习·microsoft·华为·云计算
bjackal2 小时前
K8S学习笔记-------1.安装部署K8S集群环境
笔记·学习·kubernetes
LightspeedResearch2 小时前
冲刺高分!挑战7天一篇GBD DAY1-7
学习
南宫生3 小时前
力扣动态规划-19【算法学习day.113】
java·学习·算法·leetcode·动态规划
charlie1145141913 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(绘图设备封装)
c语言·stm32·单片机·学习·oled·嵌入式软件
萝卜青今天也要开心4 小时前
读书笔记-《Redis设计与实现》(二)单机数据库实现(上)
java·数据库·redis·学习·缓存
Bluesonli5 小时前
UE5 蓝图学习计划 - Day 8:触发器与交互事件
学习·ue5·虚幻·虚幻引擎·unreal engine
学问小小谢6 小时前
第21节课:前端构建工具—自动化与模块化的利器
运维·前端·学习·计算机·自动化·电脑·硬件工程
遗憾皆是温柔6 小时前
JavaFX - 3D 形状
java·开发语言·ide·学习·3d