ActivitySession 与组合的事务容器策略
本主题提供有关部署描述符属性之间关系的详细信息,这些部署描述符属性用于确定容器如何管理 ActivitySession 边界。
如果企业 Bean 使用 ActivitySession,EJB 容器在授权方法调用时如何管理 ActivitySession 边界,这取决于为企业 Bean 配置的 ActivitySession 类型和容器事务类型部署描述符属性。下表列出这两个属性之间的关系。
每一行中,最后一列描述 EJB 容器关于全局事务和 ActivitySession 上下文所采取的行为,并基于下列缩写:
- Sn
- ActivitySession,其中 n 表明 ActivitySession 实例。
- Tn
- 事务,其中 n 表明事务实例。
在容器未启动,或保留与线程相关联的全局事务上下文的每个情况下,它启动(或从 Bean 实例获取)局部事务包含范围,并将此与线程相关联。局部事务包含范围的持续时间由局部事务边界描述符(配置为应用程序部署描述符的一部分,并且在下表中未显示)和 ActivitySession 上下文的在线或不在线通知所确定,如ActivitySession 和事务上下文中所描述。
以粗体突出显示的行是不允许的。
Bean ActivitySession 策略(ActivitySession 类型) | Bean 事务策略(容器事务类型) | 收到的上下文 | 容器行为 |
---|---|---|---|
必需 | 必需 | 无 | 启动 S1,启动 T1 |
S1 | 启动 T1 | ||
T1 | 暂挂 T1,启动 S1,启动 T2 | ||
S1,T1 | 无操作 | ||
需要新建 | 无 | 启动 S1,启动 T1 | |
S1 | 启动 T1 | ||
T1 | 暂挂 T1,启动 S1,启动 T2 | ||
S1,T1 | 暂挂 T1,启动 T2 | ||
支持 | 无 | 启动 S1 | |
S1 | 无操作 | ||
T1 | 暂挂 T1,启动 S1 | ||
S1,T1 | 无操作 | ||
不受支持 | 无 | 启动 S1 | |
S1 | 无操作 | ||
T1 | 暂挂 T1,启动 S1 | ||
S1,T1 | 暂挂 T1 | ||
必需 | 无 | 异常 | |
S1 | 异常 | ||
T1 | 异常 | ||
S1,T1 | 无操作 | ||
从不 | 无 | 启动 S1 | |
S1 | 无操作 | ||
T1 | 暂挂 T1,启动 S1 | ||
S1,T1 | 异常 | ||
需要新建 | 必需 | 无 | 启动 S1 + T1 |
S1 | 暂挂 S1,启动 S2 + T1 | ||
T1 | 暂挂 T1,启动 S1 + T2 | ||
S1 + T1 | 暂挂 S1 + T1,启动 S2 + T2 | ||
需要新建 | 无 | 启动 S1 + T1 | |
S1 | 暂挂 S1,启动 S2 + T1 | ||
T1 | 暂挂 T1,启动 S1 + T2 | ||
S1 + T1 | 暂挂 S1 + T1,启动 S2 + T2 | ||
支持 | 无 | 启动 S1 | |
S1 | 暂挂 S1,启动 S2 | ||
T1 | 暂挂 T1,启动 S1 | ||
S1,T1 | 暂挂 S1 + T1,启动 S2 | ||
不受支持 | 无 | 启动 S1 | |
S1 | 暂挂 S1,启动 S2 | ||
T1 | 暂挂 T1,启动 S1 | ||
S1,T1 | 暂挂 S1 + T1,启动 S2 | ||
必需 | 无 | 异常 | |
S1 | 异常 | ||
T1 | 异常 | ||
S1,T1 | 异常 | ||
从不 | 无 | 启动 S1 | |
S1 | 暂挂 S1,启动 S2 | ||
T1 | 暂挂 T1,启动 S1 | ||
S1,T1 | 暂挂 S1 + T1,启动 S2 | ||
支持 | 必需 | 无 | 启动 T1 |
S1 | 启动 T1 | ||
T1 | 无操作 | ||
S1,T1 | 无操作 | ||
需要新建 | 无 | 启动 T1 | |
S1 | 启动 T1 | ||
T1 | 暂挂 T1,启动 T2 | ||
S1,T1 | 暂挂 T1,启动 T2 | ||
支持 | 无 | 无操作 | |
S1 | 无操作 | ||
T1 | 无操作 | ||
S1,T1 | 无操作 | ||
不受支持 | 无 | 无操作 | |
S1 | 无操作 | ||
T1 | 暂挂 T1 | ||
S1,T1 | 暂挂 T1 | ||
必需 | 无 | 异常 | |
S1 | 异常 | ||
T1 | 无操作 | ||
S1,T1 | 无操作 | ||
从不 | 无 | 无操作 | |
S1 | 无操作 | ||
T1 | 异常 | ||
S1,T1 | 异常 | ||
不受支持 | 必需 | 无 | 启动 T1 |
S1 | 暂挂 S1,启动 T1 | ||
T1 | 无操作 | ||
S1,T1 | 暂挂 S1 + T1,启动 T2 | ||
需要新建 | 无 | 启动 T1 | |
S1 | 暂挂 S1,启动 T1 | ||
T1 | 暂挂 T1,启动 T2 | ||
S1,T1 | 暂挂 S1 + T1,启动 T2 | ||
支持 | 无 | 无操作 | |
S1 | 暂挂 S1 | ||
T1 | 无操作 | ||
S1,T1 | 暂挂 S1 + T1 | ||
不受支持 | 无 | 无操作 | |
S1 | 暂挂 S1 | ||
T1 | 暂挂 T1 | ||
S1,T1 | 暂挂 S1 + T1 | ||
必需 | 无 | 异常 | |
S1 | 异常 | ||
T1 | 无操作 | ||
S1,T1 | 异常 | ||
从不 | 无 | 无操作 | |
S1 | 暂挂 S1 | ||
T1 | 异常 | ||
S1,T1 | 暂挂 S1 + T1 | ||
必需 | 必需 | 无 | 异常 |
S1 | 启动 T1 | ||
T1 | 异常 | ||
S1,T1 | 无操作 | ||
需要新建 | 无 | 异常 | |
S1 | 启动 T1 | ||
T1 | 异常 | ||
S1,T1 | 暂挂 T1,启动 T2 | ||
支持 | 无 | 异常 | |
S1 | 无操作 | ||
T1 | 异常 | ||
S1,T1 | 无操作 | ||
不受支持 | 无 | 异常 | |
S1 | 无操作 | ||
T1 | 异常 | ||
S1,T1 | 暂挂 T1 | ||
必需 | 无 | 异常 | |
S1 | 异常 | ||
T1 | 异常 | ||
S1,T1 | 无操作 | ||
从不 | 无 | 异常 | |
S1 | 无操作 | ||
T1 | 异常 | ||
S1,T1 | 异常 | ||
从不 | 必需 | 无 | 启动 T1 |
S1 | 异常 | ||
T1 | 无操作 | ||
S1,T1 | 异常 | ||
需要新建 | 无 | 启动 T1 | |
S1 | 异常 | ||
T1 | 暂挂 T1,启动 T2 | ||
S1,T1 | 异常 | ||
支持 | 无 | 无操作 | |
S1 | 异常 | ||
T1 | 无操作 | ||
S1,T1 | 异常 | ||
不受支持 | 无 | 无操作 | |
S1 | 异常 | ||
T1 | 暂挂 T1 | ||
S1,T1 | 异常 | ||
必需 | 无 | 异常 | |
S1 | 异常 | ||
T1 | 无操作 | ||
S1,T1 | 异常 | ||
从不 | 无 | 无操作 | |
S1 | 异常 | ||
T1 | 异常 | ||
S1,T1 | 异常 | ||
Bean 管理 | Bean 管理 | 无 | 无操作 |
S1 | 暂挂 S1 | ||
T1 | 暂挂 T1 | ||
S1,T1 | 暂挂 S1 + T1 |