当前位置: 首页 > 面试题库 >

如何在Java EE环境中管理数据库和文件系统的事务?

程墨竹
2023-03-14
问题内容

我将文件的属性(大小,更新时间…)存储在数据库中。因此,问题在于如何管理数据库和文件的事务。

在Java
EE环境中,JTA只能管理数据库事务。万一数据库更新成功但文件操作失败,是否应该为此编写文件回滚方法?此外,EJB容器中的文件操作违反了EJB规范。

你怎么看?


问题答案:

理想情况下,对外部资源(例如文件系统)的访问应通过 JCA连接器进行
。尽管围绕此讨论的文章很多,但我从未找到可用于事务性访问文件系统的现成的JCA连接器,因此我开始编写一个:

  • 看一下:JCA连接器:文件系统适配器。这是相当基本的,但是可以管理文件的提交/回滚。

关于其他项目:

  • 我不知道commons-transactions的确切状态,对我来说似乎已经死了。
  • 看一下JBoss事务性文件I / O,看起来很有希望。
  • 也来看看Filera:文件资源适配器,但我认为它不是事务性的

请注意,一旦您有多个交易参与者,该应用程序就会出现。服务器确实需要使用分布式事务,事情变得更加复杂。您一定不能低估这种复杂性(例如,数据库具有用于分布式事务的另一种超时机制)。

要考虑的另一种轻量级方法是使用在文件系统上写入的 SFSB
。如果实现SessionSynchronization接口,则会获取beforeCompletionafterCompletion回调。后者指示事务是已提交还是已回滚,并在必要时进行清理。然后,您可以实现事务行为。



 类似资料:
  • 事务的概念 事务的概念来自于两个独立的需求:并发数据库访问,系统错误恢复。 一个事务是可以被看作一个单元的一系列SQL语句的集合。 事务的特性(ACID) A, atomacity 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处

  • 本文向大家介绍基于文件的数据管理系统,包括了基于文件的数据管理系统的使用技巧和注意事项,需要的朋友参考一下 用于组织和维护数据文件的系统称为基于文件的数据系统。这些文件系统用于处理单个或多个文件,效率不高。  功能性 基于文件的数据管理系统的功能如下- 基于文件的系统有助于任何用户的基本数据管理。 基于文件的系统中存储的数据应保持一致。在基于文件的系统中完成的任何事务都不应更改一致性属性。  基于

  • 本文向大家介绍数据库管理系统的优势,包括了数据库管理系统的优势的使用技巧和注意事项,需要的朋友参考一下 数据库管理系统(DBMS)定义为允许用户定义,创建,维护和控制对数据库访问的软件系统。DBMS使最终用户可以创建,读取,更新和删除数据库中的数据。它是程序和数据之间的一层。 与基于文件的数据管理系统相比,数据库管理系统具有许多优势。这些优点中的一些在下面给出- 减少数据冗余 基于文件的数据管理系

  • 主要内容:什么是数据库,数据库管理系统,DBMS的特征,DBMS的优点,DBMS的缺点,学习前提条件,面向读者,问题反馈DBMS教程提供了数据库的基本和高级概念。 我们的DBMS教程专为初学者和专业人士设计。数据库管理系统是用于管理数据库的软件。 DBMS教程包括DBMS的所有主题,如介绍,ER模型,键,关系模型,连接操作,SQL,函数依赖,事务,并发控制等。 什么是数据库 数据库是相互关联数据的集合,用于有效地检索,插入和删除数据。 它还用于以表格,模式,视图和报告等形式组织数据。 例如: 学

  • 我有一个API运行在AWS Lambda和AWS Gateway使用Up。我的API在启动时创建一个数据库连接,因此Lambda在第一次触发该函数时会这样做。我的API是用node写的,使用Express和pg-promise来连接和查询数据库。 问题是Lambda在它认为合适的情况下创建函数的新实例,有时看起来好像一次有多个实例。 由于我的 Lambda 函数占用了太多数据库句柄,我的数据库连接

  • 事务的特性 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。 Atomicity(原子性) 原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。 Consistency(一致性) 一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。 Isolati