天天看点

EJB的几种类型

会话(Session)Bean ,实体(Entity)Bean, 消息驱动的(Message Driven)Bean。

实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种。EntityBean被用来代表应用系统中用到的数据。

SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。

(1)SessionBean:

无状态Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。

有状态Bean:当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。

(2)EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。

EJB通过以下技术管理实务:Java Transaction Service(JTS)、Java Transaction API(JTA)。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yakihappy/archive/2009/03/10/3977125.aspx