EJB容器默认情况下序列化所有业务方法调用。我们有几种方法可以改变它。
应用@Lock(LockType.READ)/@Lock(LockType.WRITE)
注释。
或者在bean类上设置@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
注释并使用我们的自定义同步策略(例如,如果bean只读取数据,则使用syncrnozied块或根本不使用锁)。在这种情况下,忽略@Lock注释。
我的问题是Spring如何控制它?它的工作原理是什么? Spring bean可以是无状态bean或者可以具有状态。它可以通过读或写操作访问某些资源。在不同的情况下,我需要一个控制并发的选项。
请您解释并比较EJB / Spring容器的这个方面。
答案 0 :(得分:0)
EJB声明式可靠性管理仅适用于单例会话bean,请参阅javax.ejb.ConcurrencyManagement API。常规会话bean没有线程安全问题,因为containter确保在任何给定时间只有一个线程访问bean实例。至于Spring bean并发性不是由容器管理的,程序员自己应该照顾它。