EJB 3 中的事务(原子性属性)仅适用于数据库操作 - 我说得对吗?

标签 transactions jakarta-ee ejb-3.0 jta jts

我知道事务可以用来实现原子性。

就像如果 methodOne() methodTwo() methodThree() 被合并到一个事务中一样,如果任何一个方法失败,整个事务操作被回滚。回滚将导致数据库级回滚,因此数据库将进入事务之前的状态。

但是如果这些方法对状态变量或静态变量进行了更改或写入文件系统中的某些文件怎么办?我的理解是,“回滚”不适用于此类非数据库修改,并且这些更改不会撤消。我的理解对吗?

最佳答案

Transactions (Atomicity property) in EJB 3 apply only to Database Operations - Am I right?

不,你不是。事务适用于事务资源,Java EE 规范识别三种类型的事务资源:JDBC 数据库、JMS 目标和“通过 JCA 访问的其他事务服务”。

But what if the methods made changes to state-variables or static-variables or wrote to some files in the filesystem?

这些不是事务性资源(除非您通过 JCA 连接器写入文件系统供以后使用)。

关于EJB 3 中的事务(原子性属性)仅适用于数据库操作 - 我说得对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158861/

相关文章:

javax.transaction.Transactional 与 org.springframework.transaction.annotation.Transactional

java - 如何在 Maven 的本地项目中安装依赖项?

生成 Datomic 事务数据的测试代码

java - 将声明式和编程式事务与 Spring 和 JPA 监听器混合

jakarta-ee - 将 EAR 部署到 WebSphere 时,出现 "duplicate entry"SaveFailureException 的原因是什么?

java - 在哪里可以找到 Java Enterprise Edition 7 的 JSR 的详细说明以及解释和详细信息?

java - EJB3 计时器是否继承到创建它们的 bean?

java - 如何在netbean6.7中开发和运行ejb?

mysql - 在 Myeclipse 的 EJB 项目中使用 Hibernate ORM 以及 glassfish 和 mysql 数据库

php - 如何正确使用MySQL事务