2

我仍然不清楚 EJB 中无状态和有状态 bean 的区别。我应该在哪种情况下使用无状态和有状态?

4

2 回答 2

3

我会给你一个很好的例子:

说没有。用户(比如客户) 现在有一个 bean,它只将国家名称作为输入并提供该国家的货币。在这种情况下,一个 bean 可以用于 n 号。用户(客户)。为每个客户端请求创建单独的 bean 没有任何意义。所以可能会有这样一个 bean 可以服务于多个客户端,这样的 bean 被称为无状态 bean。无状态 bean 服务一个客户端后,它不会销毁,而是进入 bean 池,因此它可以服务于其他客户端。

现在让我们再举一个例子,

在购物车中,有一个 bean 可以包含项目列表。所以说当你在网上购物时添加项目时,这些项目将被维护在一个专门为你创建的 bean 中。它的生命周期将一直持续到您完成购物。因此,如果我开始在线购物,对我来说将创建另一个 bean。所以之所以说它是有状态的,是因为它的状态在整个会话期间保持活动状态,即从您开始添加第一个项目直到您添加 n 否。物品放入购物车并下最终订单。

无状态 bean: 一个 bean 可以服务于多个客户端(一个客户端的任何更改都会反映到另一个客户端)。一旦无状态 bean 没有用,它就不会销毁,而是进入 bean 池,以便将来它可以服务于其他客户端。

有状态 Bean: 一个 bean 仅用于一个客户端。(一个客户端的任何更改将只针对该客户端,因为其他客户端没有使用此 bean)。因此,一旦它的服务结束,它就会被销毁。

于 2013-09-29T16:29:51.810 回答
1

如果您需要在调用之间维护客户端的状态,您应该使用猜测什么?对,有状态的 bean。如果您不关心状态 - 无状态 bean 是正确的选择。

于 2012-07-04T06:58:01.813 回答