一、EJB概述

分布式应用程序。EJB是java的核心代码,包括三种Bean类型:会话Bean(Session Bean),实体Bean(EntityBean)和消息驱动Bean(MessageDriven Bean)。




      二、EJB在java三层中的角色

      在J2EE经典三层的图中,各个规范的位置关系如下:


     

ee中如何提示 java java ee ejb_ee中如何提示 java


      从上图来看,JSP,Servlet是表示层,EJB是业务逻辑层,负责处理业务逻辑。EJB可以从客户端接收数据,对它进行处理,并将其发送到企业信息系统层以作存储;同时也可以从存储器获取数据,处理后将其发送到客户端应用程序。



      三、EJB中的Bean

会话Bean,实体Bean和消息驱动Bean。


      1、Session Bean:用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个SessionBean来为客户端服务。SessionBean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。


      2、Entity Bean:是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将EntityBean的状态和数据库同步。


      3、MessageDriven Bean:是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态SessionBean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。



      四、何时使用EJB

      1、分布式对象

企业级的JavaBean,分布式对象用于建立企业级别的系统。这意味着你的系统可以部署于不同的物理机器,由此可产生许多彼此独立的进程,以达到性能、可扩展性、可用性的系统目标。


      2、对象持久化

和关系型数据库相互差异太大。和JAVA相比,关系型数据库拥有有限的模型化能力,诸如对象继承和封装。此外,最主要的转换问题是SQL数据类型和Java的数据类型并不完全匹配。所有的这些问题在使用CMP实体Bean时都得到了解决。


      3、事务管理

是令开发者最头痛的问题之一。所有相关需要考虑的问题诸如数据库锁定,数据完整性丢失事件可以导致创建高度复杂的框架以管理数据库级别的共享数据的访问。EJB自动处理这些复杂的线程和并发的共享数据问题。正如前面提到的,EJB容器提供了所有必须的事务服务给企业Bean去管理后台的数据。