java - EJB 中的事务传播

标签 java transactions ejb

我正在查看 EJB 3.1 规范,但无法关联以下场景。有人可以用示例进行解释吗

•如果客户端请求未与事务关联,并且实例已与事务 T2 关联,则容器将使用与实例 (T2) 关联的事务来调用实例。对于无状态 session bean、单例 session bean 或消息驱动 bean,这种情况永远不会发生:它只能发生在有状态 session bean 上。

•如果客户端与事务 T1 关联,并且实例已与事务 T2 关联,则容器会挂起客户端的事务关联,并使用与实例 (T2) 关联的事务上下文调用该方法。当该方法(以及任何关联的拦截器方法)完成时,容器恢复客户端的事务关联(T1)。对于无状态 session bean、单例 session bean 或消息驱动 bean,这种情况永远不会发生:它只能发生在有状态 session bean 上。

如果具有事务范围持久性上下文的 EJB 在有状态 session 上调用 使用扩展持久性上下文的 bean 时,会抛出错误。为什么?不应该暂停无状态 session bean 的事务,然后使用与有状态 session bean 关联的事务上下文调用该方法。

最佳答案

有什么问题吗?这是关于有状态 session bean 的。只有这种类型的 bean 才能在方法调用之间保存事务。因此,如果您调用已经具有 Activity 事务的有状态 session bean,则您的方法调用将在有状态 session bean 事务内执行。

关于java - EJB 中的事务传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716290/

相关文章:

mongodb - mongoose 模型无法访问正在进行的事务的连接

java - 使用 DAO 进行事务管理

sql - 使用简单更新的计数器列的原子增量

Java、EJB框架、RBAC

使用自签名客户端证书的 Java oAuth

java - 未创建 Android SQLite 数据库

java - ejb 线程安全 : do we need it?

jakarta-ee - EJB TimerService 行为

java - 从 SQLite 数据库读取数据到一个新的 Activity - Android Studio

java - Lucene 关于否定的嵌套查询求值