程序员人生 网站导航

【J2EE浅析】――EJB

栏目:php教程时间:2015-05-13 08:34:02

        1、EJB概述

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


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



      2、EJB在java3层中的角色

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


     


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



      3、EJB中的Bean

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


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


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


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



      4、什么时候使用EJB

      1、散布式对象

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


      2、对象持久化

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


      3、事务管理

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





------分隔线----------------------------
------分隔线----------------------------

最新技术推荐