初始EJB

来源:互联网 发布:公司招聘淘宝直播主播 编辑:程序博客网 时间:2024/06/05 18:57

1.    基本概念

EnterpriseJavaBean分解一下这个概念:

Enterprise:企业级,说明EJB是应用大型软件系统的

Java:Java开发语言

Bean:对封装数据的类的称呼,Bean的中文意思是豆子;他就是组成整个EJB的小颗粒。

从结构上来讲:

         EJB是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。所以EJB只是一套标准或者规范,EJB为EJB容器(由应用服务器提供)和EJB组件(由开发者开发)制订了明确的规范,因此只要应用服务器支持标准的EJB规范,那么使用EJB组件开发的应用就可以移植到该服务器上运行。

从作用上来讲:

       EJB实际上是用于编写业务层代码。它让应用开发者可以集中精力去开发解决各种复杂业务逻辑问题,而不用花费精力来处理分布式服务器、远程调用等底层技术。EJB模型可以让开发者避免底层功能的重复开发,从而提高开发效率。

 

2.   EJB体系结构

     包括客户端、服务器端。

     客户端:包含调用EJB组件特定业务所需的EJB接口(包括本地和远程EJB接口);服务器端处理对象的句柄。

     服务器端:包含EJB组件实现的实例;用来在客户端和EJB组件之间进行映射的容器代码。

     EJB客户应用程序使用JNDI来查找对本地接口的实例引用,通过EJB接口来调用和引用EJB组件的全部方法和属性。

 

3.    EJB分类


1.Session Bean

作用:实现业务逻辑的地方。简单地说,每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。

分类:根据EJB容器是否维护会话状态将Session Bean分为有状态bean和无状态bean。

下面通过两张图具体介绍这两个状态的bean的区别

      

       左边是有状态bean即可以维护会话状态。要维护会话状态,意味着 EJB 容器要为每个用户创建一个 bean实例,并通过该实例保存着与用户的会话状态。所以bean实例和用户之间是一种1:1的关系。每个有状态的Bean在Bean实例的生命周期内都只服务一个用户。

       右边是无状态bean即不维护会话状态。要维护会话状态,意味着一个 bean 实例不需要保存与某个用户的会话状态,这时一个 bean 实例可以为多个用户服务。 所以bean实例和用户之间是一种多:多的关系。

简单的说,就是当无状态会话Bean部署到应用服务器时,EJB容器会为它预先创建一些Bean实例放在对象池,提供给众多用户使用。当有用户访问EJB方法时,EJB容器会从对象池中取出一个实例为之服务,服务完成后就回到对象池。当下一个用户再访问EJB方法时,EJB容器有可能再次把该实例取出来为之服务。正因为如此,无状态会话Bean只需要少量的实例就可以为成千上万个用户服务,大大提高了系统性能。 

 2.Entity Bean

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

3.Message-Driven Bean(MDB)

       消息驱动Bean。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。


0 0
原创粉丝点击