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

一、介绍Seata

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

  • TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。

  • TM (Transaction Manager) - 事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。

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

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

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

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

参考黑马资料:Docs

二、出现的问题

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

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。

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

--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后会出现,需要开放一些权限,又是一个版本问题。

问题解决!

相关推荐

  1. C++使用for(:)遇到BUG

    2024-07-14 23:20:03       35 阅读
  2. Rom应用开发遇到得一些bug

    2024-07-14 23:20:03       29 阅读
  3. 分布式事务实现方式

    2024-07-14 23:20:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 23:20:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 23:20:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 23:20:03       57 阅读
  4. Python语言-面向对象

    2024-07-14 23:20:03       68 阅读

热门阅读

  1. Mybatis一对一,一对多关联查询

    2024-07-14 23:20:03       24 阅读
  2. R语言简单介绍及零基础学习路径

    2024-07-14 23:20:03       19 阅读
  3. 在unity中的球形插值方法中第三个参数t是什么

    2024-07-14 23:20:03       17 阅读
  4. linux安装pure-ftpd-1.0.51

    2024-07-14 23:20:03       17 阅读
  5. Linux 编程中的 open() 与 fdopen() 区别与联系

    2024-07-14 23:20:03       19 阅读
  6. iPython 使用技巧

    2024-07-14 23:20:03       16 阅读
  7. C基础入门题:石头剪刀布

    2024-07-14 23:20:03       21 阅读