首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javax.ejb.SessionSynchronization与javax.transaction.Synchronization的区别

javax.ejb.SessionSynchronization与javax.transaction.Synchronization的区别
EN

Stack Overflow用户
提问于 2011-08-03 03:48:31
回答 2查看 2.3K关注 0票数 3

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

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

使用一个比使用另一个有什么缺点/优点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-03 22:22:13

同一事务中可以包含多个相同类型的SLSB。一旦方法退出,SLSB就会返回到池中供下一次调用使用,因此SLSB实例“知道”事务是不安全的:当它收到通知时,该bean可能正在另一个事务中使用。

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

票数 4
EN

Stack Overflow用户

发布于 2014-05-15 21:40:14

我只是尝试将javax.ejb.SessionSynchronization接口与一个无状态会话bean一起使用,并且不知道如何调用这三个已实现的方法。然后我在javax.ejb.SessionSynchronization JavaDoc中看到了这条评论

只有具有容器管理的事务分界的有状态会话bean才能接收会话同步通知。其他bean类型不得实现SessionSynchronization接口或使用会话同步注释。

有关更多背景信息,请参阅this线程。因此,我的结论是,使用CMT使无状态会话bean具有事务感知功能是不能通过javax.ejb.SessionSynchronization实现的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6917717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档