Narayana 事务管理器初始化流程

2023-12-06 08:36

本文主要是介绍Narayana 事务管理器初始化流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总体流程

创建 TransactionManagerImple创建事务管理器对象
读取 narayana 的 xml 配置,进行属性赋值
获取 recovery 模块加载恢复模块
事务恢复日志的初始化
初始化事务日志存储服务JDBC方式存储建表文件方式存储

创建 TransactionManager 流程

Narayana 会通过 BeanPopulator 反射创建对应的 TransactionManager 实例,并读取用户自定义的 xml 属性反射赋值到 TransactionManager 实例里。

TransactionManager transactionManager = jtaPropertyManager.getJTAEnvironmentBean().getTransactionManager();

调用链路如下:

jta.common.jtaPropertyManager#getJTAEnvironmentBean
加载配置文件,创建 JTAEnvironmentBeancom.arjuna.common.internal.util.propertyservice.BeanPopulator#getDefaultInstancecom.arjuna.common.internal.util.propertyservice.BeanPopulator#getNamedInstancecom.arjuna.common.util.propertyservice.PropertiesFactory#getDefaultProperties获取用户自定义的配置属性com.arjuna.common.util.propertyservice.PropertiesFactory#initPropertiesFactory使用 stax 或 sax 解析 xml 配置com.arjuna.common.util.propertyservice.PropertiesFactory#isStaxAvailablecom.arjuna.common.util.propertyservice.AbstractPropertiesFactory#getDefaultProperties获取xml配置信息com.arjuna.common.util.propertyservice.AbstractPropertiesFactory#initDefaultPropertiescom.arjuna.common.util.ConfigurationInfo#getPropertiesFile获取配置文件com.arjuna.common.util.propertyservice.AbstractPropertiesFactory#getPropertiesFromFilecom.arjuna.common.util.propertyservice.FileLocator#locateFile按照路径优先级,定位配置文件com.arjuna.common.util.propertyservice.FileLocator#locateByPropertycom.arjuna.common.util.propertyservice.FileLocator#locateByResourcecom.arjuna.common.util.propertyservice.AbstractPropertiesFactory#loadFromFile读取配置文件com.arjuna.common.util.propertyservice.PropertiesFactoryStax#loadFromXMLcom.arjuna.common.util.propertyservice.PropertiesFactoryStax$1#resolveEntitycom.arjuna.common.util.propertyservice.StringPropertyReplacer#replacePropertiescom.arjuna.common.util.propertyservice.StringPropertyReplacer#replacePropertiescom.arjuna.common.util.propertyservice.StringPropertyReplacer#replacePropertiescom.arjuna.common.util.propertyservice.StringPropertyReplacer#replacePropertiescom.arjuna.common.util.propertyservice.AbstractPropertiesFactory#applySystemProperties应用系统配置系统属性com.arjuna.common.internal.util.propertyservice.BeanPopulator#configureFromProperties反射给属性赋值com.arjuna.common.internal.util.propertyservice.BeanPopulator#capitalizeFirstLettercom.arjuna.common.internal.util.propertyservice.BeanPopulator#handleSimplePropertycom.arjuna.common.internal.util.propertyservice.BeanPopulator#getValueFromPropertiescom.arjuna.common.internal.util.propertyservice.BeanPopulator#handleGroupPropertycom.arjuna.common.internal.util.propertyservice.BeanPopulator#getValueFromPropertiesjta.common.JTAEnvironmentBean#getXaRecoveryNodesjta.common.JTAEnvironmentBean#setXaRecoveryNodes
jta.common.JTAEnvironmentBean#getTransactionManager
创建TransactionManagerImple,调用无参构造方法com.arjuna.common.internal.util.ClassloadingUtility#loadAndInstantiateClass反射加载并实例化com.arjuna.common.internal.util.ClassloadingUtility#loadClasscom.arjuna.common.internal.util.ClassloadingUtility#loadClassjta.common.jtaPropertyManager#getJTAEnvironmentBeancom.arjuna.common.internal.util.propertyservice.BeanPopulator#getDefaultInstance

这篇关于Narayana 事务管理器初始化流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/461162

相关文章

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo