为 EJB 模块定义容器事务

某些容器事务设置并非对所有企业 bean 可用。而且,某些方法对特定事务设置和 bean 不可用。这些规则已在基于 EJB 1.1 和 EJB 2.x 规范的“添加容器事务”向导中实现。

要将容器事务添加至企业 bean:

  1. 在 J2EE 透视图的“项目资源管理器”视图中,右键单击 EJB 项目的部署描述符,并选择打开方式 > 部署描述符编辑器来打开部署描述符编辑器。
  2. 在编辑器的组装页上,单击“容器事务”部分中的添加
  3. 从找到的 bean 的列表中选择一个或多个企业 bean。
  4. 从下列选项中选择容器事务类型:
    • NotSupported - 指导容器在没有事务上下文的情况下调用 bean 方法。如果客户机从事务上下文内调用 bean 方法,则容器将在企业 bean 实例上调用方法之前暂挂事务与当前线程之间的关联。然后,容器在方法调用返回时继续暂挂的关联。暂挂的事务上下文不会被传递给此 bean 方法使用的任何企业 bean 对象或资源。
    • Supports - 指导如果客户机在事务内调用 bean 方法,则容器就在事务上下文内调用 bean 方法。如果客户机在没有事务上下文的情况下调用 bean 方法,则容器就在没有事务上下文的情况下调用 bean 方法。事务上下文被传递给由此 bean 方法使用的任何企业 bean 对象或资源。
    • Required - 指导容器在事务上下文内调用 bean 方法。如果客户机从事务上下文内调用 bean 方法,则容器就在客户机事务上下文内调用该 bean 方法。如果客户机在事务上下文之外调用 bean 方法,则容器将创建新的事务上下文并从该上下文内调用 bean 方法。事务上下文被传递给由此 bean 方法使用的任何企业 bean 对象或资源。
    • RequiresNew - 指导容器始终在新事务上下文内调用 bean 方法,而不论客户机是在事务上下文之内还是之外调用方法。事务上下文被传递给由此 bean 方法使用的任何企业 bean 对象或资源。
    • Mandatory - 指导容器始终在与客户机相关联的事务上下文内调用 bean 方法。如果客户机尝试在没有事务上下文的情况下调用 bean 方法,则容器将向客户机抛出 javax.jts.TransactiononRequiredException 异常。事务上下文被传递给由企业 bean 方法访问的任何 EJB 对象或资源。访问这些实体 bean 的 EJB 客户机必须在现有事务内执行此任务。对于其他企业 bean,企业 bean 或 bean 方法必须实现“Bean 管理的”值或者使用 Required 或 RequiresNew 值。对于非企业 bean EJB 客户机,客户机必须通过使用 javax.transaction.UserTransaction 接口来调用事务。
    • Never - 指导容器在没有事务上下文的情况下调用 bean 方法。如果客户机从事务上下文内调用 bean 方法,则容器将抛出 java.rmi.RemoteException 异常。如果客户机从事务上下文外调用 bean 方法,则容器的行为就好像是设置了 NotSupported 事务属性的行为那样。客户机必须在没有事务上下文的情况下调用方法
  5. 从列表中选择一个或多个方法元素。
  6. 单击完成
将添加容器事务并将其显示在“容器事务”部分中,其中容器事务按容器事务类型列示。
定义容器事务之后,可以使用部署描述符编辑器来使用这些事务。
相关概念
EJB 部署描述符编辑器

反馈