gpt4 book ai didi

java - EJB : understanding how container choose bean

转载 作者:行者123 更新时间:2023-11-30 05:58:04 25 4
gpt4 key购买 nike

我试图了解有状态 bean 的工作原理(我阅读了理论部分,并且知道 statfull 和 statelss beans 之间的区别...),因此我创建了一个有状态 bean 和一个其余 API 来访问它。
我发现容器为每个请求创建/实例化一个新的 bean。
然后我使用 servlet 访问同一个 statfull bean,这次容器箱只有一个 bean 来服务所有请求。
所以我的问题是:

  1. 为什么容器为 REST API 创建许多 bean ?我知道它将每个请求视为一个单独的客户端,但它是如何知道的,因为 Rest API 或 servlet 是使用 http 请求访问的?
  2. 当请求来自 servlet 作为一个客户端时,为什么它会考虑请求? (因此它创建一个 bean)
  3. 就我而言(在本地进行测试),如何在使用 servlet 时强制容器创建更多 bean(如何模拟多个客户端)。

提前谢谢

最佳答案

我检查了规范,但找不到相关内容。但这似乎很合理:

必须有人照顾 SFSB 实例,完成后将其关闭。

将 SFSB 的 EJB 业务方法公开为 REST 服务时,将使用通用 servlet。唯一可用的范围是单个(无状态)HTTP 调用的请求范围,因此调用完成后,通用 servlet 应关闭 SFSB。

Servlet 具有明确的生命周期。注入(inject)的 EJB 是在 Servlet 初始化期间创建的,并且可以在销毁时关闭。

您可以在创建的每个 HTTP session 中查找新的 SFSB 实例,使用该 session 的后续调用的 session 上下文,并在匹配 session 关闭时关闭 SFSB。

关于java - EJB : understanding how container choose bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com