为什么使用有状态会话 Bean?

2022-09-04 22:26:33

我正在学习EJB3,我只是好奇什么时候使用SFSB很方便?当SFSB真正轻松解决一些复杂的问题时,我找不到任何好的例子。

实际上,我看到SLSB可以用作Web服务,这很方便。但我不知道什么时候使用SFSB。我只看到它的问题,因为我们应该学习一些关于它的东西,我们应该编写由注释组成的代码,而不是完全,我们应该使用烦人的查找......我们没有得到任何好的回报。

例如,我们不能使用 SLSB 中的 SFSB,因为有状态对象只能从有状态上下文中使用。我们不能在 servlet 中使用 DI,相反,我们应该使用 JNDI 查找手动创建 SFSB 实例,然后将其放入 HttpSession 对象中。它不能是 Web 服务。

我在SFSB中看到的唯一好处是事务管理。但我认为,当我们真正需要交易而我们不需要数据库时,这种情况很少见。我可以想象,当我们将数据存储在XML文件中并使用SFSB中的事务管理来管理非关系数据库时,它会非常有用。

我几乎可以肯定我完全错了,所以给我一些非常好的SFSB用法的例子。


答案 1

我正在学习ejb3,我只是好奇何时方便使用SFSB?当SFSB真正轻松解决一些复杂的问题时,我找不到任何好的例子。

你的意思是像购物车?这是我能想到的显而易见的答案。

实际上,我看到SLSB可以用作Web服务,这很方便。

您可以将 EJB 视为部署分布式服务的一种方法,但要小心。术语“Web服务”使大多数人想到“使用HTTP协议的基于SOAP的Web服务”,而这不是您在SFSB中所拥有的。

但我不知道什么时候使用SFSB。我只看到它的问题,因为我们应该学习一些关于它的东西,我们应该编写由注释组成的代码,而不是完全,我们应该使用烦人的查找。我们没有得到任何好的回报。

这一段令人困惑,但我认为你是说你不太喜欢EJB。

例如,我们不能使用 SLSB 中的 SFSB,因为有状态对象只能从有状态上下文中使用。

是的,它们是互补的。您可以将 SFSB 用于需要在调用之间维护状态的用例。请等待它。

我们不能在 servlet 中使用 DI,相反,我们应该使用查找手动创建 SFSB 实例,然后将其放入 HttpSession 对象。它不能是 Web 服务。

servlets从哪里来?

我在SFSB中唯一能看到的利润是交易管理。但我认为,当我们真正需要交易而我们不需要数据库时,这种情况很少见。我可以假设,当我们将数据存储在xml文件中并使用SFSB中的事务管理来模拟非关系数据库时,它可能会非常有用。

我认为你完全偏离了基地。会话 bean 是了解工作单元和管理事务的 bean。当用例完成时,他们可能必须与实体bean一起工作,以保留某些状态,因此事务并不像您想象的那么罕见。

我几乎可以肯定我完全错了,所以给我一些SFSB用法的很好的例子。

您的期望是什么?有人会发布工作SFSB吗?我不打算这样做,主要是因为我不是EJB的忠实粉丝。(我做了你所提到的一切,还有更多关于春天的事情。

但请放心,SFSB有时很有用。购物车就是一个明显的例子。您需要一个地方来维护购物车中的商品,直到客户决定购买。SFSB是实现这一目标的一种方式。


答案 2

在有状态和无状态架构之间进行选择只是一个设计问题。

大多数时候,无状态设计是首选,因为它更容易。

虽然在开始时更容易理解,但构建无状态应用程序会导致一系列问题(大量的无状态Web服务,spring singleton等),从长远来看,使应用程序的可管理性降低。

如果可能的话,我更喜欢设计有状态的应用程序。

有状态会话 bean 是执行此操作的一种方法。弹簧原型或web范围的豆子另一个。

还可以查看jboss接缝框架。


推荐