如果已启用,通常会在 Bean 完成了任意事务之后(即使该事务回滚)执行检查点操作。要指定非事务性业务方法(导致对 Bean 状态的重要修改)结束时 SFSB 的其他可选检查点操作,请使用 sun-ejb-jar.xml 部署描述符文件的 ejb 元素中的 checkpoint-at-end-of-method 元素。
checkpoint-at-end-of-method 元素中的非事务性方法可以是:
在 SFSB 的主接口中定义的 create() 方法(如果要在创建后立即对 SFSB 的初始状态进行检查点操作)
对于仅使用容器管理的事务的 SFSB,Bean 的远程接口中使用事务属性 TX_NOT_SUPPORTED 或 TX_NEVER 进行标记的方法
对于仅使用 Bean 管理的事务的 SFSB,既不启动也不提交 Bean 管理的事务的方法
此列表中提到的所有其他方法均忽略。当调用这些方法结束时,EJB 容器会将 SFSB 的状态保存到持久性存储中。
如果 SFSB 没有参与任何事务,并且没有在 checkpoint-at-end-of-method 元素中明确指定其任何方法,则根本不会对 Bean 的状态进行检查点操作(即使对于此 Bean,已设置 availability-enabled="true")。
请指定方法的较小子集以获得更好的性能。方法应完成大量工作或导致对 Bean 状态的重要修改。
<sun-ejb-jar> ... <enterprise-Beans> ... <ejb availability-enabled="true"> <ejb-name>ShoppingCartEJB</ejb-name> <checkpoint-at-end-of-method> <method> <method-name>addToCart</method-name> </method> </checkpoint-at-end-of-method> </ejb> ... </enterprise-beans> </sun-ejb-jar>