【J2EE浅析】——EJB

        一、EJB概述

      EJB(EnterpriseJava Bean)--java企业Bean,是J2EE十三种规范的一部分,为服务器端组件模型,设计目标与核心应用是部署分布式应用程序。EJB是java的核心代码,包括三种Bean类型:会话Bean(Session Bean),实体Bean(EntityBean)和消息驱动Bean(MessageDriven Bean)。


      通俗的说,EJB就是一个运行在独立的服务器上,封装了业务逻辑的组件。在一个商务软件中,核心部分就是其业务逻辑,它抽象了整个商务过程的流程。J2EE对于这个问题的处理方法是将业务逻辑从客户端抽取出来,封装在EJB组件中。它运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责调用请求和显示处理结果



      二、EJB在java三层中的角色

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


     


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



      三、EJB中的Bean

      EJB作为业务逻辑层,是如何与表示层和数据库进行数据交换和保存呢?主要依靠会话Bean,实体Bean和消息驱动Bean。


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


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


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



      四、何时使用EJB

      1、分布式对象

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


      2、对象持久化

      对象持久化表示其状态可以被保存,大多数情况下,持久化对象保存在关系型数据库中,而对象和关系型数据库相互差异太大。和JAVA相比,关系型数据库拥有有限的模型化能力,诸如对象继承和封装。此外,最主要的转换问题是SQL数据类型和Java的数据类型并不完全匹配。所有的这些问题在使用CMP实体Bean时都得到了解决。


      3、事务管理

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






你可能感兴趣的:(【J2EE浅析】——EJB)