0

默认情况下,EJB 容器会序列化所有业务方法调用。我们有几个选择来改变它。

  1. 应用@Lock(LockType.READ)/@Lock(LockType.WRITE)注释。

  2. 或者@ConcurrencyManagement(ConcurrencyManagementType.BEAN)在 bean 类上设置注释并使用我们的自定义同步策略(例如,如果 bean 只读取数据,则使用 syncrnozied 块或根本不使用锁)。在这种情况下,@Lock 注释将被忽略。

我的问题是Spring如何控制它?默认情况下它是如何工作的?Spring bean 可能是无状态 bean,也可能有状态。它可以通过读或写操作访问某些资源。在不同的情况下,我需要一个控制并发的选项。

您能否解释和比较 EJB/Spring 容器的这一方面。

4

1 回答 1

0

EJB 声明式并发管理仅适用于单例会话 bean,请参阅 javax.ejb.ConcurrencyManagement API。常规会话 bean 没有线程安全问题,因为容器确保在任何给定时间只有一个线程访问 bean 实例。至于 Spring bean 的并发不是由容器管理的,程序员自己应该负责。

于 2013-09-03T05:48:57.343 回答