2009-12-10 54 views
4

无状态会话bean会提供什么,而不仅仅是一个具有相同方法的常规类?看起来,一个有状态的会话bean可以直接发布出去,容器可以确保这个状态对于任何地方的客户来说都是一样的。使用无状态会话bean提供了什么,你不会得到一个普通的类?无状态会话bean只提供一个普通类是什么?

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

回答

5

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

没有这些语义,应用程序容器无法优化您的应用程序的速度/内存/无论。因此,虽然无状态会话bean大多与POJO类似,但它们为应用程序服务器提供了一些额外的“提示”。

如果您想了解如何使用EJB3规范实现无状态会话bean,您会发现它和普通POJO(不包括附加注释)之间有很多相似之处。

+0

这给人一种暗示,认为它不会伤害到EJB。有时开发人员比容器更了解如何优化他的工作。 – 2013-11-27 09:52:38

+0

@EyadEbrahim:只有当开发人员完全了解他的代码运行环境时。EJB容器的整体思想是*多个应用程序可以同时共存(不包括提供各种服务,如事务等)。这使得关于代码优化的理由远不那么明显,除非您完全了解环境,比如EJB容器...... – jawi 2013-11-29 09:21:41

8

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

简单的旧Java对象不会做任何。当然,如果你不需要需要,那么EJB就没有必要。