gpt4 book ai didi

java - 为什么要池化无状态 session bean?

转载 作者:IT老高 更新时间:2023-10-28 21:19:22 29 4
gpt4 key购买 nike

Java 中的无状态 bean 不会在来自客户端的两次调用之间保持其状态。所以简而言之,我们可以将它们视为具有业务方法的对象。每个方法都接受参数并返回结果。当调用该方法时,正在执行堆栈中创建一些局部变量。当方法返回时,局部变量会从堆栈中删除,如果分配了一些临时对象,它们无论如何都会被垃圾回收。

从我的角度来看,这与通过单独的线程调用同一单个实例的方法没有什么不同。那么为什么容器不能使用一个 bean 的实例而不是池化多个实例呢?

最佳答案

池有几件事情。

第一,通过每个实例有一个 bean,您可以保证线程安全(例如,Servlet 不是线程安全的)。

第二,您可以减少 bean 可能具有的任何潜在启动时间。虽然 session Bean 是“无状态的”,但它们只需要对客户端是无状态的。例如,在 EJB 中,您可以将多个服务器资源注入(inject)到一个 session Bean 中。该状态对于 bean 来说是私有(private)的,但是没有理由不能阻止它从调用到调用。因此,通过池化 bean,您可以将这些查找减少到仅在创建 bean 时发生。

三,你可以使用 bean pool 来限制流量。如果池中只有 10 个 Bean,则最多只能同时处理 10 个请求,其余的将排队。

关于java - 为什么要池化无状态 session bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/134791/

29 4 0