gpt4 book ai didi

java - javax.ejb.SessionSynchronization 和 javax.transaction.Synchronization 之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:33:18 27 4
gpt4 key购买 nike

我正在开发一个主要使用无状态 session bean (SLSB) 的 EJB3 应用程序。他们使用容器管理事务 (CMT)。

我希望 bean 知道事务(用于日志记录等)。我可以实现 javax.ejb.SessionSynchronization 来执行此操作。我发现我可以在默认拦截器中注册 javax.transaction.Synchronization 以获得类似的回调。

使用一种优于另一种有什么缺点/优点吗?

最佳答案

同一个事务可以涉及多个同类型的SLSB。一旦方法退出,SLSB 就会返回到池中供下一次调用使用,因此 SLSB 实例“意识到”事务是不安全的:在它被通知时,bean 可能是在另一笔交易中使用。

至于 SFSB,我想说这两种方法在理论上没有优势。但是,EJB 容器可能正在为各种内部任务使用同步,因此使用 SessionSynchronization 将允许 EJB 容器更好地控制与其自身操作相关的回调时间。

关于java - javax.ejb.SessionSynchronization 和 javax.transaction.Synchronization 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com