gpt4 book ai didi

web-applications - Web 应用程序中的有状态 EJB?

转载 作者:行者123 更新时间:2023-12-03 19:55:27 26 4
gpt4 key购买 nike

我从未使用过有状态的 EJB。
我知道有状态的 EJB 对 java 客户端很有用。

但我想知道:在哪种情况下在 Web 应用程序上使用它们?如何?
我们是否应该将这些有状态的 bean 放在 Session 中(因为无状态的 http)?

这是一个好习惯吗?
(无需过多讨论有状态与无状态)

最佳答案

有趣的是,这是当天关于 SFSB 和网络应用程序的第二个问题,而这个话题通常并不常见。

in which case to use them on a web application?



SFSB 和 Web 应用程序的传统示例是购物车。但同时,您可以对 HttpSession 执行相同操作。 .

理想情况下, 如果状态与业务逻辑有关而不是表示逻辑,它应该放在 SFSB 中。但在实践中,人们通常反对 SFSB(因为它引入了复杂性),除非他们提供了您无法通过 HttpSession 轻松完成的功能。 .大多数时候,您可以调整设计以将信息存储在 HttpSession 中。或数据库并传递它,而无需 SFSB。但它最终是 设计纯度问题 .

And how? Should we put these stateful beans in Session (because of stateless http)?



EJB 模型比 HttpSession 更丰富。 ,因为 EJB 是事务性组件,对于 SFSB 的钝化和激活有显式回调。这带有 增加复杂性关于如何正确使用 SFSB,特别是(1)异常处理和(2)并发和(2)SFSB 的删除和超时。有关更多详细信息,请参阅我的答案:
  • Java: Tracking a user login session - Session EJBs vs HTTPSession
  • Correct usage of Stateful Beans with Servlets

  • 如果您想使用它们,您首先需要查找 SFSB 以获取对一个新远程实例的引用。然后,您需要将此引用存储在某处,以便跨请求重用它。这通常是 HttpSession ,这意味着即使使用 SFSB,也无法完全摆脱它。

    使用 EJB2,远程引用(称为句柄)可以被序列化以供以后重用。然后可以将 if 存储在数据库中,即使我从未见过。我不知道 EJB3 是否仍然可行。

    Is it a good practice?



    正如我已经说过的, 人们通常反对它除非您确切知道为什么要使用它们而不是 HttpSession并且仅当您对 EJB 模型有很好的掌握时。 (例如,如果可以通过 Web 前端和桌面客户端访问业务服务,SFSB 可能是合理的)许多其他框架没有类似于 SFSB 的东西,人们仍然设法使用它们创建出色的应用程序。

    PS:我在一个网络应用程序中使用过 SFSB,它确实比 HttpSession 更难使用。 ,但它最终奏效了。

    关于web-applications - Web 应用程序中的有状态 EJB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2811312/

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