我试图了解statefull bean的工作原理(阅读了理论部分,并且知道statfull和statelss bean之间的区别……),因此,我创建了一个statefull bean和一个REST API来访问它。
我发现容器为每个请求创建/实例化一个新 Bean。
然后我使用servlet来访问相同的statfull bean,这一次容器只包装一个一个豆来满足所有请求。
所以我的问题是:
提前谢谢
答案 0 :(得分:1)
我检查了规格,但找不到任何相关信息。但这似乎是合理的:
某些人必须注意SFSB实例,完成后将其关闭。
当将SFSB的EJB业务方法公开为REST服务时,将使用通用servlet。唯一可用的范围是单个(无状态)HTTP调用的请求范围,因此,在调用完成后,通用Servlet应关闭SFSB。
该Servlet具有明确的生命周期。注入的EJB是在Servlet初始化期间创建的,可以在销毁时关闭。
您可以在创建的每个HTTP会话中查找新的SFSB实例,使用会话上下文对该会话进行后续调用,并在匹配会话关闭时关闭SFSB。