Java中的无状态bean不会在客户端的两次调用之间保持状态.因此,简而言之,我们可能会将它们视为具有业务方法的对象.每个方法都接受参数并返回结果.调用该方法时,会在执行堆栈中创建一些局部变量.当方法返回时,将从堆栈中删除本地,如果分配了一些临时对象,则无论如何都会对它们进行垃圾回收.
从我的观点来看,它与通过单独的线程调用同一单个实例的方法没有区别.那么为什么容器不能使用bean的一个实例而不是汇集其中的一个?
合并做了几件事.
一,通过每个实例有一个bean,你可以保证线程安全(例如,Servlets不是线程安全的).
二,减少bean可能具有的任何潜在启动时间.虽然会话豆是"无国籍的",但它们只需要对客户端无国籍.例如,在EJB中,您可以将多个服务器资源注入会话Bean.该状态对bean是私有的,但是没有理由不能将它从调用保持到调用.因此,通过池化bean,您可以将这些查找减少到仅在创建bean时发生.
三,您可以使用bean池作为节流量的手段.如果池中只有10个Bean,那么您最多只能获得10个同时工作的请求,其余的将排队等候.