EJB和同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EJB和同步相关的知识,希望对你有一定的参考价值。

会话Bean(无状态会话bean,有状态会话bean)是否已同步?

答案

一次只有一个线程将访问您的bean。由应用程序服务器来管理它。所以你不应该在bean中使用synchronized。这就是像EntityManager这样的非线程安全可以是实例值而没有同步问题的原因。

另一答案

无状态bean:每个线程/请求都将从池中获取不同的EJB实例。 SLB不应该保存任何用户会话数据,任何状态。可以并行执行相同的代码。一个线程一次访问一个实例。

为用户会话同步Statefull bean。每个用户都将获得自己的会话范围实例。第二个线程/请求将等到第一个线程完成。 Statefull EJB可以保存用户特定的数据。一个用户不能并行执行相同的代码。不同的用户可以并行执行相同的代码。

如果访问不允许并行访问的资源,请使用Singleton EJB。顾名思义,只有一个例子。默认情况下,EJB Singleton只能由一个线程(Container Managed Concurrency和@Lock(WRITE))访问。

另一答案

无状态/有状态会话bean是线程安全的。因为每个请求都将获得bean的专用实例,因此不需要同步。

Singleton会话bean是共享的,需要由容器(Container Managed Concurrency - CMC)或用户(Bean Managed Concurrency - BMC)同步。

另一答案

关于EJB bean的非常正确的事情是,一旦你创建了EJB 3.0 bean,那么EJB的方法默认是Synchronized。

EG

@Statelss类EJBclass {

void someMethod(){}

}

现在,如果你将这个someMethod同步它将显示错误,因为它是不能同步在这个级别,因为它是同步的。

EJB 3.0 Beans很聪明,性能也很好。

另一答案

企业java bean未同步。由于会话bean由ejb容器维护,因此您必须在应用程序级别实现同步逻辑。

以上是关于EJB和同步的主要内容,如果未能解决你的问题,请参考以下文章

两种同步模式:帧同步和状态同步

两种同步模式:帧同步和状态同步

同步方法和同步代码块的区别是什么?

异步和同步的区别?

同步请求和异步请求区别

同步和异步的概念