`
yuanlanxiaup
  • 浏览: 859140 次
文章分类
社区版块
存档分类
最新评论

J2EE核心技术--EJB分类

阅读更多

EJB是Enterprise JavaBean的缩写,在J2EE中位于业务层,实现应用系统的业务逻辑,是J2EE的核心内容。EJB有两种分类方法,按照实现的功能,分为三类:会话Bean、实体Bean和消息驱动Bean;按照调用的方式分为两类:远程EJB和本地EJB。

之所以有这么多种分类,是为了满足各种不同的需求。下面一一罗列他们各自的用途。

依据实现的功能

会话Bean:非持久性对象,实现业务逻辑。它代表与客户程序一次短暂的会话,而且可能执行数据库的读写操作,也可以通过实体Bean来完成;Session Bean的客户程序实际上是直接调用ejb类的实例,甚至是这个实例的方法,同一个类的不同实例对于Session Bean来说是不同的用户。Session分类两种:有状态会话Bean无状态会话Bean

有状态会话Bean:每个用户有自己特有的一个实例,在用户的生存期内,Bean保持了用户的信息,既“有状态”;一旦用户灭亡(调用结束或实例结束),Bean的生命期也结束。既每个用户最初都会得到一个初始的Bean。实际用途:网上购物车的功能。

无状态会话Bean:Bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,Bean的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态Bean。但无状态会话Bean并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它大的用户影响。实际用途:登录验证、完成单一的算法等。

实体Bean:持久性对象,实现底层数据的对象化。用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步,此模型适用于关系型数据库。因为和数据库保持同步状态,所以它是长寿命的,并且是事务的。实体Bean一般就用的就比较多了,比如储存客户的一些基本信息,商品信息等等。

消息驱动Bean(缩写MDB):是EJB2.0中引入的新企业Bean,它基于JMS消息,只能接受客户端发送的JMS消息然后处理。MDB实际是一个一步的无状态Session Bean,客户端调用MDB后无需等待,立即返回,MDB将异步处理客户的请求。比如订单处理,客户端只需填写完订单后提交,不需要等待返回结果。

依据调用的方式

远程EJB:运行在不同的JVM中,甚至不同的机器上,可以通过RMI机制进行调用。

本地EJB:运行在同一个JVM中,不能使用RMI机制进行调用,可以直接调用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics