Gio*_*nJh 5 java ejb pool server
我知道:
对于无状态会话Bean,服务器可以在池中维护可变数量的实例。每次客户端请求这样的无状态Bean(例如通过方法)时,都会选择一个随机实例来满足该请求。
我的问题是:为什么需要一个游泳池?EJB无状态bean的一个实例是否足以满足所有请求?
同样,如果给定的无状态Bean的服务器使用的是10个实例的池,那么它可以在这种Bean上处理的最大请求数是10吗?
你能帮我解决我的疑问吗?
编辑:
ejb 3.1规范的第4.3.14节给出了答案。
4.3.14序列化会话Bean方法以下要求适用于无状态和有状态会话Bean。有关Singleton会话Bean并发性要求,请参见第4.8.5节。
容器将对每个有状态和无状态会话Bean实例的调用序列化。大多数容器将支持许多并发执行的会话bean实例。但是,每个实例只能看到序列化的方法调用序列。因此,有状态或无状态会话bean不必编码为可重入。
容器必须序列化所有容器调用的回调(即,业务方法拦截器方法,生命周期回调拦截器方法,超时回调方法,beforeCompletion等),并且必须使用客户端调用的业务方法调用来序列化这些回调。 。
在网上稍作搜索,我的疑问是,对于要求EJB无状态方法是线程安全的规范来说,线程池是必需的。因此,如果说池中有10个bean,则只能同时处理10个请求,另一个将排队并分配给第一个空闲bean。如果我错了,请纠正我。
理论上,单个无状态 EJB 实例可以处理所有请求,但速度太慢。性能是维护无状态 EJB 池的主要成就。池可以节省创建 EJB 和获取任何预定义资源来处理传入请求的时间。容器保证了线程安全的行为,因此池中的多个就绪实例确实可以提高性能。
另外,如果 ginen 无状态 bean 的服务器使用 10 个实例的池,那么 10 是它可以在此类 bean 上处理的最大请求数吗?
使用 10 个实例池可以同时处理 10 个并发请求。
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |