【问题标题】:Concurrency control with method invocation in EJB bean vs. Spring beanEJB bean 与 Spring bean 中方法调用的并发控制
【发布时间】:2013-09-06 04:38:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java spring ejb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多