加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

Web应用程序 – Web应用程序中的状态EJB?

发布时间:2020-12-14 21:25:41 所属栏目:资源 来源:网络整理
导读:我从来没有使用有状态的EJB。 我明白一个有状态的EJB可以对java客户端有用。 但是我想知道在哪种情况下在Web应用程序中使用它们?如何? 我们应该将这些有状态的bean放在Session中(因为无状态http)吗? 这是一个很好的做法吗? (没有辩论太多关于状态与无国
我从来没有使用有状态的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的钝化和激活有明确的回调。特别是(1)异常处理和(2)并发以及(2)SFSB的删除和超时,这对于正确使用SFSB的复杂性越来越高。有关详细信息,请参阅我的答案

> Java: Tracking a user login session – Session EJBs vs HTTPSession
> Correct usage of Stateful Beans with Servlets

如果要使用它们,您需要首先查找SFSB以获取对一个新的远程实例的引用。那么你将需要将这个引用存储在某个地方,以便跨请求重用它。这个地方通常是HttpSession,这意味着即使你使用SFSB,也不能完全摆脱它。

使用EJB2,远程引用(称为句柄)可以被序列化以便稍后重用。这样就可以存储,例如在数据库中,即使我从来没有看到过。我不知道EJB3是否还可以。

Is it a good practice?

正如我已经说过的,人们通常会反对它,除非你知道为什么要使用它们而不是HttpSession,只有你有一个很好的EJB模型的命令。 (例如,如果通过Web前端和桌面客户端访问业务服务,SFSB可能是正当的)许多其他框架与SFSB没有类似的东西,人们仍然可以通过它们创建优秀的应用程序。

PS:我在网络应用程序中使用了SFSB,与HttpSession相比,它的使用效果确实比较棘手,但是它最终起作用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读