图解EJB的体系结构

标签: ejb 体系结构 | 发表时间:2014-10-25 21:31 | 作者:strongant
出处:http://www.iteye.com

本文对EJB的体系结构作一个全面介绍:

  • EJB在J2EE体系结构中的位置
  • EJB的环境构成
  • EJB的资源配置
  • EJB的种类
  • EJB组件的构造
  • EJB的调用过程
  • EJB组件的生命周期

EJB是Enterprise JavaBeans的简称。本文对EJB技术的体系结构作一个全面深入地介绍。

EJB在J2EE体系结构中的位置

视图层或表现层:提供用户界面;接收用户输入;数据输出。WEB应用的情况,JSP以及SERVLET属于视图层组件。

业务逻辑层:实际的业务逻辑处理。根据视图层传送过来的数据,进行实际的业务逻辑处理(包括数据库的查询,更新等),再把处理后的结果返回给视图层。EJB,以及不使用EJB的情况下担当业务逻辑处理部分的JavaBean等归属于业务逻辑层组件。

数据库层或数据持久化层:多指用于保存业务数据的数据库,也可以是文件等等。

EJB属于J2EE体系结构中的业务逻辑层部分。

EJB的环境构成

1,EJB组件运行在EJB容器之中,EJB容器是一个EJB引擎,它提供了EJB组件运行的环境,并对EJB组件进行管理。EJB容器一般包含在EJB服务器(或应用服务器)中,EJB服务器可以拥有一到多个EJB容器。比较有名的支持EJB的服务器有Sun One,Interstage,Websphere,Weblogic,JBoss,JRun等。

2,调用EJB组件的一方被称为EJB客户端。EJB客户端可以为运行在WEB容器中的JSP,SERVLET;或者一般的Java Application,Applet;或者Web Service;也可以是别的EJB组件。

3,EJB客户端与EJB服务器可处于同一JVM环境中,也可处于不同计算机的不同JVM环境。

EJB的资源配置

当一个EJB组件被开发完成之后,它需要以JAR文件的形式配置到EJB容器中以备其他客户程序 使用;反过来,一个客户程序需要使用某EJB组件,该客户程序需要引用该EJB组件的接口,也就是说,EJB的jar文件需要同时配置到EJB容器和使用 该EJB组件的客户端环境中。

如图:

EJB-JAR文件的构成

sample-ejb.jar

EJB-JAR文件是一个后缀名为.jar的zip格式文件。它至少需要包含META-INF目录以及其下的ejb-jar.xml文件以及MANIFEST.MF文件。对于不同类型的EJB组件,还需包含它们的Home接口,组件接口,以及组件的实现类。

EJB组件的种类

EJB组件有SessionBean(会话Bean),EntityBean(实体Bean),MDB(消息驱动Bean)三种。

SessionBean

主要负责业务逻辑的处理。根据处理时的状态保持与否,SessionBean又被分为:

Stateful SessionBean(有状态SessionBean)

Stateless Bean(无状态SessionBean)

对象的“状态”是指对象的属性值,也就是对象所携带的数据。Stateful SessionBean能维持会话的状态,就是说能为同一客户端保持上一回被调用时的状态,类似于HttpSession;而Stateless SessionBean则不能维持会话状态,也就是说,对Stateless SessionBean来说,每个方法都是独立的,因为对特定客户端不保持会话状态,所以一般也不在Stateless SessionBean里定义成员变量。

EntityBean

负责数据库的访问。通常由SessionBean调用。EntityBean的一个实例所表示的数据通常代表了关系数据库中特定表的特定的一行数据。EJB3开始,EntityBean部分的功能可以通过JPA来实现。

EntityBean的作用:

1,对数据库的操作:查询,数据的更新,删除等

2,数据库表数据的携带

根据对数据库操作(持久化)的不同,EntityBean分为以下2种类型:

1,BMP (Bean-managed persistence:bean管理持久化):持久化操作(数据库的访问,数据的创建,更新,删除等)由EntityBean的实现(javax.ejb.EntityBean的实现类)自身完成。

2,CMP (Container-managed persistence:容器管理持久化):持久化操作由容器根据deploy时的配置信息(ejb-jar.xml)自动完成。

MDB (message-driven bean:消息驱动bean)

MDB主要用来处理异步消息。客户端调用SessionBean,EntityBean的方法时,会一直处于等待状态,直到被调用的方法处理完毕。但使用 MDB,客户端向容器发送一个JMS消息之后,不必等待MDB处理完毕便可直接返回。JMS被发送给由容器管理的JMS消息队列,容器在适当的时候通知 MDB的callback方法onMessage加以处理。一个MDB需要实现javax.jms.MessageListener接口与 javax.ejb.MessageDrivenBean接口。

EJB组件的构造

构造图:

SessionBean的UML-CLASS图

EntityBean的UML-CLASS图

MDB的UML-CLASS图

EJB的调用过程

①客户端程序使用lookup方法查找JNDI

②EJB服务器的JDNI服务根据事先登录的信息匹配lookup查询内容,生成Home实例

③客户端得到对Home实例的引用

④客户端调用Home.create方法

⑤创建相对应的Bean实例,调用Bean的ejbCreate方法

⑥生成相对应的Remote Ojbect实例

⑦客户端得到对Remote Ojbect实例的引用

⑧客户端掉用业务逻辑方法

客户端与服务器端的通信使用RMI-IIOP通信协议。

客户端在调用EJB组件时,需要知道EJB组件的位置(包括IP,端口,名称),才能得到对EJB组件对象的引用。JNDI是J2EE提供的一套Java API,是Java Naming and Directory Interface的略称,提供根据名称查找对象的服务。EJB利用JNDI来解决名称问题。JNDI有Service Provider的概念,Provider可以选择LDAP或者RMI。

要使用JNDI,需要先进行登录,然后使用lookup进行查找。

EJB的JNDI的使用,也需要通过配置文件进行登录,不同的EJB服务器有不同的设置方法。具体可参考相关EJB服务器的操作手册。

EJB组件的生命周期(Lifecycle)

Stateful SessionBean的生命周期

顺序图(sequence图)

Stateless SessionBean的生命周期

顺序图(sequence图)



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [ejb 体系结构] 推荐:

图解EJB的体系结构

- - 企业架构 - ITeye博客
本文对EJB的体系结构作一个全面介绍:. EJB在J2EE体系结构中的位置. EJB是Enterprise JavaBeans的简称. 本文对EJB技术的体系结构作一个全面深入地介绍. EJB在J2EE体系结构中的位置. 视图层或表现层:提供用户界面;接收用户输入;数据输出. WEB应用的情况,JSP以及SERVLET属于视图层组件.

为啥要用EJB

- - 企业架构 - ITeye博客
首先,我们必须明确,为什么要使用J2EE. 使用J2EE的主要原因是多层结构,传统的两层C/S结构难于维护,稳定性极差,界面代码和数据库代码混淆在一起,牵一动百,多层结构使得界面和数据库完全分离,并且诞生了中间件这样的技术,如下图:. Web+EJB能组成真正的多层结构.   为什么使用EJB我原先认为这不是一个讨论的话题,因为EJB是J2EE重要的组成部分,可以说没有EJB的J2EE只是一种Web系统,这样的系统非常容易丧失了多层结构的大部分优点(仔细想想那些混合多种层次功能JavaBeans和传统两层结构有什么区别.

为什么要使用EJB

- - CSDN博客架构设计推荐文章
多层结构是J2EE的优势所在. 开始进行J2EE学习,感触最深的莫过于分层了,ssh在分层,ejb还是在分层. 使用J2EE的主要原因就是多层结构,传统的两层C/S结构难于维护,稳定性极差,界面代码和数据库代码混淆在一起,牵一动百,多层结构使得界面和数据库完全分离,并且诞生了中间件这样的技术,如下图.

JVM学习 - 体系结构

- - CSDN博客推荐文章
一:Java技术体系模块图. 二:JVM运行时内存区域模型. 也称"永久代” 、“非堆”,  它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域. 可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中.

java之classloader体系结构

- - 非技术 - ITeye博客
原文出处: http://www.iteye.com/topic/136427. a, Bootstrap ClassLoader/启动类加载器. 主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.. b, Extension ClassLoader/扩展类加载器.

【Oracle】物理体系结构

- - CSDN博客推荐文章
一、ORACLE 物理体系结构. PGA: 私有内存区,仅供当前发起用户使用. 用户登录后的session信息会保存在PGA. 执行排序,如果内存不够,oracle会在临时表空间中完成. SGA: 包含共享池,数据缓冲区,日志缓冲区以及一些相关的进程. DATABASE: 数据最终存放的地方,其中一块区域是日志存放区.

Jetty8.0.4的ClassLoader的体系结构

- - 龙浩的blog
    1:JDK的ClassLoader基础. Bootstrap ClassLoader/启动类加载器 . 主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作. Extension ClassLoader/扩展类加载器 . 主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作.

计算机网络体系结构

- - CSDN博客推荐文章
OSI/RM 开放系统互连参考模型. OSI/RM 与TCP/IP参考模型的比较. 开放式系统互连基本参考模型是由国际标准化组织(ISO)指定的. OSI包括了体系结构,服务定义和协议规范三级抽象. 注意OSI参考模型并非具体实现的描述,它只是一个为制定标准而提供的概念性框架. 在OSI中,只有各种协议是可以实现的,网络中的设备只有与OSI的有关协议相一致时才能互连.

oracle 数据库体系结构

- - Oracle - 数据库 - ITeye博客
       任何硬件平台或操作系统下的ORACLE体系结构都是相同的,包括如下四个方面:.         数据文件,日志文件,控制文件,参数文件.         表空间、段、区间、数据块.         共享池,数据缓冲区,日志缓冲区,PGA.         用户进程、服务器进程、后台进程.

Oracle的体系结构概览

- - CSDN博客数据库推荐文章
声明:版本11gR2,CentOS5.8. (从11g开始password项里变为空了,以免被破解). 实例=内存(sga)+后台进程(background). 查看内存,可以通过以下视图.  后台进程,可以通过下面视图查看.   我们只关心paddr不等于0的就可以了,等于0的都是没启用. 参数文件spfilesid.ora,initsid.ora.