14

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

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

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

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

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

4

2 回答 2

9

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

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

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

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

但我不知道何时使用 SFSB。我只看到它的问题,因为我们应该了解它,我们应该编写由注释组成的代码,而不是完全,我们应该使用烦人的查找......而且我们没有得到任何好的回报。

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

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

对,它们是互补的。您将 SFSB 用于需要 - 等待 - 在调用之间保持状态的用例。

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

servlet 是从哪里来的?

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

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

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

你的期望是什么?有人会发布工作 SFSB?我不会那样做,主要是因为我不是 EJB 的忠实粉丝。(我用 Spring 做了你所暗示的一切以及更多。)

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

于 2009-11-06T11:12:15.073 回答
0

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

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

虽然一开始更容易理解,但构建无状态应用程序会导致一系列问题(大量无状态 Web 服务、spring 单例等),从长远来看会使应用程序更难管理。

我更喜欢尽可能设计有状态的应用程序。

有状态会话 bean 是一种方法。spring 原型或 web-scoped bean 另一个。

还可以查看 jboss seam 框架。

于 2009-11-09T10:38:00.743 回答