EJB3.2规范如下:
默认情况下,客户端可以对有状态会话对象进行并发调用,并且需要容器来序列化此类并发请求。请注意,容器从不允许多线程访问实际有状态会话bean实例。
对我来说,并发访问和多线程访问似乎是等同的。那么,在禁止多线程的情况下,如何能够对有状态EJB进行并发调用?
发布于 2014-04-25 07:56:05
您说得对:并发调用只能使用多个线程进行。因此,当谈到并发性时,涉及到多个线程。
规范明确指出,不允许容器并发访问一个有状态会话bean实例。如果存在并发调用(来自多个线程),则容器必须序列化它们。
请注意,当然有几个有状态会话bean的实例,当然可以由多个客户端访问。
此外--这似乎让您感到困惑--规范说允许客户端(而不是容器)进行并发调用,但是容器必须序列化它们。
发布于 2014-04-25 07:57:21
有状态会话bean可以处理并发请求。但是,这些调用实际上并不访问您并发编写的bean类。应用服务器序列化这些请求。因此,在给定的时间,只有一个线程执行bean类方法。
所以问题是,并发调用并不等于对有状态会话bean的并发访问。
此级别的并发只处理同一会话的请求。来自不同会话的请求使用不同的对象进行处理。
https://stackoverflow.com/questions/23287054
复制相似问题