4

无状态会话 bean 将提供什么,而不是具有相同方法的常规类?似乎可以开箱即用地分发有状态会话 bean,并且容器将确保状态对于任何地方的客户端来说都是相同的。使用无状态会话 bean 提供了什么是普通类无法获得的?

如果您有一个分布式环境,您的 EJB 层是否可以进行故障转移?在我看来,如果我只为我的应用程序使用一台服务器并且从不使用远程接口,那么您可以获得无状态会话 bean 的本地或远程实例,这有什么好处吗?

4

2 回答 2

8

EJB 为您提供声明式安全、事务和远程处理。当您调用 EJB 的方法之一时,您实际上通过了一组提供上述功能层的拦截器。

一个普通的旧 Java 对象不会做任何事情。当然,如果您不需要任何这些,则不需要 EJB。

于 2009-12-10T21:00:12.590 回答
6

无状态会话 bean 为应用程序容器提供有关它所提供服务的意图的知识。由于它是无状态的,因此应用程序容器可以随时决定销毁 bean 并在下次需要时重新创建它。

如果没有这些语义,应用程序容器就无法优化您的应用程序的速度/内存/其他方面。因此,尽管无状态会话 bean 大多类似于 POJO,但它们为应用程序服务器提供了一些额外的“提示”。

如果您查看应该如何使用 EJB3 规范实现无状态会话 bean,您会发现它与普通 POJO 之间有很多相似之处(除了附加注释)。

于 2009-12-10T21:02:35.863 回答