EJB

来源:互联网 发布:谷歌地图高程数据 编辑:程序博客网 时间:2024/06/10 07:13
在J2EE里,Enterprise Java Beans(EJB)称为Java企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(EntityBean)和消息驱动Bean(MessageDrivenBean)。

1.SessionBean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个SessionBean来为客户端服务。SessionBean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
2.Entity Bean是域模型对象,用于实现O/R映射(O/R映射层是持久层的一个特例,它的数据模型是对象模型Object,存储模型是关系模型Relational,cmp和Hibernate是对象模型到关系模型之间转换的两种不同实现),负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个EntityBean时,容器会自动将Entity Bean的状态和数据库同步。
3.MessageDrivenBean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态SessionBean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
EJB实际上是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品。

构建应用组件要解决的标准:
可扩展 (Scalable)
分布式 (Distributed)
事务处理(Transactional)
数据存储(Persistent)
安全性 (Secure)

 SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件.EntityBean被用来代表应用系统中用到的数据.对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑;EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体.

  Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless SessionBean .这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful SessionBean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean的实体.Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless SessionBean 的实体来执行这个 method.换言之,很可能数个使用者在执行某个 Stateless Session Bean 的methods 时,会是同一个 Bean 的 Instance 在执行.从内存方面来看, Stateful Session Bean与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态.


SessionBean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean .这两种的Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体.StatelessSession Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless SessionBean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个method.换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个Bean 的 Instance 在执行.从内存方面来看, Stateful Session Bean 与 StatelessSession Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而Stateful Session Bean 的优势却在于他可以维持使用者的状态.

0 0
原创粉丝点击