【问题标题】:EJB Container Manage transaction executionEJB 容器管理事务执行
【发布时间】:2015-04-25 05:58:58
【问题描述】:

在 J2EE 文档中它说,

尽管带有容器管理事务的 bean 需要的更少 编码,它们有一个限制:当一个方法正在执行时,它可以 与单个交易或无交易相关联 全部。

问题 1. 但我的理解是,除非我们用 NotSupported 或 Never 声明事务属性,否则当方法执行时(假设使用默认的 Required 属性),它保证方法在交易对吗?

我还需要知道假设容器管理器事务在伪代码下面发生默认必需属性,

class bean1{
 public void m1(){
    bean2.m2();
 }
}

class bean2{
 public void m2(){
 }
}

**问题 2.**在这种情况下,bean2 中的 m2() 是在新事务中运行还是在 bean1 中的 m1() 的同一事务下运行?

【问题讨论】:

标签: java jakarta-ee transactions


【解决方案1】:

问题 1. 但我的理解是,除非我们声明交易 方法执行时具有 NotSupported 或 Never 的属性 (假设具有默认的必需属性)它保证方法 可以在事务中运行吗?

是的,容器管理事务的默认值是必需的,如果一个事务不存在,它将启动一个事务。您引用的段落有些不寻常(显然交易存在或不存在),因此我缺少上下文以提供更完整的解释。

问题 2。在这种情况下,bean2 中的 m2() 是否在新的 交易还是在 bean1 中的 m1() 的同一交易下运行?

假设它们都是 EJB 并且没有应用其他事务属性(即,两个 EJB 方法都使用默认的必需属性),那么这两个方法将使用相同的事务。所有事务属性的语义在 TransactionAttributeType 的 javadoc 中有简洁的描述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2015-11-26
    • 2013-10-07
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多