【转载+整理】EJB(三) EJB分层架构

article/2025/9/12 11:25:49

@李祥0_0  http://blog.csdn.net/happylee6688/article/details/9268431

@夜星云   http://blog.csdn.net/happyqwz/article/details/8237212

EJB的环境构成

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

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

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


EJB规范

       在J2EE规范将企业应用系统划分的各逻辑层中,将封装业务规则的EJB组件部署在业务层中,用于根据客户端的服务请求进行业务数据的处理。EJB组件是基于分布式事务处理的企业级应用程序组件,其中包含处理业务数据的应用逻辑以及客户端调用EJB组件的业务方法获取服务的客户端接口。

       当一个遵循EJB规范开发的第三方EJB组件被集成到一个应用系统中时,不需要更改其实现代码或者重新编译。


EJB的特征

  • 可扩展(Scalable) 可以通过部署多台EJB服务器实现扩容,其实和RPC技术类似,EJB是使用RMI
  • 分布式 (Distributed) EJB可以部署在不同的服务器上,EJB服务器往往还提供了负载均衡
  • 事务处理(Transactional) 跨连接的事务,这里是和Webservice的主要区别
  • 数据存储(Persistent) EJB容器使用JPA标准实现数据持久化
  • 安全性 (Secure) 由 EJB 服务器提供资源的访问权限控制

EJB的分布式

一个业务逻辑可能会调用分布在多台服务器上的 EJB 组件,但是这么多的组件调用必须纳入一个事务范围之中。也就是说如果需要调用三个 EJB 组件,第一个调用成功,第二个调用成功,但第三个调用失败了,因此在第一和第二次调用成功时进行的事务操作(这里的事务操作不单单指数据库的,还有可能包括消息队列服务的事务)都必须进行回滚。
但是,如果是调用三个 WebService 的话,那调用成功的那两个基本上是不可能进行回滚的,调用完了就是完了。
WebService 只是对外提供的调用接口,而 EJB 是个业务组件。一个对外的 WebService 在服务端中也是需要实现业务逻辑的,在 J2EE 中,这些业务逻辑基本上都是由 EJB 组件来实现,对外发布 WebService 接口(当然了,使用符合 JAX-WS 规范的开源框架不用 EJB 也能做到)。

EJB容器

       EJB容器截取客户和组建之间的通信,并根据配置信息添加基础设施代码,EJB容器用于提供EJB组件的开发、部署和运行环境。


EJB组件类型

        在EJB2.0规范中定义了三种类型的组件:会话组件(Session Bean)、实体组件(Entity Bean)和消息驱动组件(Message-Driven Bean)。


        会话组件和实体组件的定义由Home接口、Remote接口和组件类构成。在EJB组件的Home接口中定义了创建、删除和定位EJB组件的方法;EJB组件的Remote接口用于定义组件能够提供的商务方法;EJB组件类则用于实现Home接口中定义的组件生命期方法以及Remote接口中定义的商务方法。

会话组件

       会话组件代表EJB组件与客户程序的一个短暂交互过程,其完成的功能可能是执行数据库读写操作或者是进行简单的数学计算等。

       会话组件可以看成是瞬态的,其生命周期相对短暂,只有在客户程序与会话组件保持联系的过程中会话组件才具有生命力。如果客户程序结束会话过程,EJB容器将会话组件对象实例移出EJB容器中的组件实例池,该会话组件实例将失去生命力。另外,如果在客户程序与会话组件交互过程中EJB容器崩溃,那么用户必须重新创建一个新的会话组件对象实例来继续会话过程。

实体组件

       实体组件用于提供数据库中数据记录在EJB服务器中的对象类型视图。一个实体组件代表数据库表中一行数据记录。客户端应用程序对实体组件的访问等价于对EIS层中数据库的访问过程。

       在多客户应用的情况下,通过EJB容器的事务管理功能能够使多个客户进程以共享的方式访问同一个实体组件,进而保持组件对应数据库记录的一致性和完整性。

       实体组件的状态是持续的,只要数据库中的数据记录存在,实体组件创建后就一直存在于EJB容器中,即使EJB服务器崩溃,实体组件同样具有生命力。

消息驱动组件

       消息驱动组件(Message Driven Bean)是EJB2.0规范中引入的新型组件,用于在EJB容器中提供一种响应外部事件消息的组件类型机制。

       消息驱动组件是服务器端的无状态类型组件。该类型的组件只有组件类定义,没有类似于会话组件和实体组件的Home接口和Remote接口。

【下一篇将详细介绍3种javaBean】





http://chatgpt.dhexx.cn/article/ACKF2RVu.shtml

相关文章

WildFly如何编写一个EJB远程客户端

目录 创建EJB服务器项目 配置服务器依赖项(WildFly 18和更新版本) 部署EJB服务器项目 创建EJB客户端项目 配置客户端依赖项(WildFly 18及更新版本) 在EJB客户端项目中配置安全性 运行EJB客户端项目 使用纯HTTP传输 EJB客户端:如何检索EJB客户机的远程…

Eclipse jboss搭建EJB项目

之前使用Idea搭建了EJBDemo项目,使用的JBoss7版本,但对于低版本的Jboss支持并不太好,经常会有莫名其妙的错误和不兼容信息。下面使用Eclipse搭建一个Demo。 目录 一、工具版本 二、搭建Demo 1.Eclipse 配置jboss (1&#xff…

WildFly:如何从位于另一个应用程序中的 EJB 调用 EJB

目录 创建 EJB 服务器项目 配置服务器依赖项(WildFly 18 及更高版本) 配置服务器依赖项(WildFly 11、12、13、14、15、16、17) 部署 EJB 服务器项目 创建 EJB 客户端项目 配置客户端依赖项(WildFly 18 及更高版本…

使用Eclipse+GlassFish构建简单EJB

EJB,即企业级JavaBean。它是一个标准,而不是一个产品。其存在的目的是为后台开发人员提供一个标准的开发标准。它主要分成SessionBean,EntityBean和MessageDrivenBean。简而言之就是**服务器端**的一个标准。 在开发中我们需要先创建一个EJB项目,并在此…

ejb中sessionbean的见解

EJB学习笔记五(SessionBean的生命周期) 1.前言 前几篇主要介绍了有状态和无状态、远程和本地调用的SessionBean,这篇介绍一下有关SessionBean的生命周期。SessionBean处于EJB容器管理之下,对于客户端来说是完全透明的。但对于开…

理解EJB

转载: EJB到底是什么,真的那么神秘吗 1. 我们不禁要问,什么是”服务集群”?什么是”企业级开发”? 既然说了EJB 是为了”服务集群”和”企业级开发”,那么,总得说说什么是所谓的”服务 集群”和”企业…

EJB的理解

百科定义EJB: 被称为Java企业bean,服务器端组件,核心应用是部署分布式应用程序。用它部署的系统不限定平台。实际上ejb是一种产品,描述了应用组件要解决的标准 标准: 可扩展 (Scalable)分布式 (Distributed)事务处理(T…

认识EJB

一、定义 将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE中,这…

EJB到底是什么,真的那么神秘吗??

前言:网上看到的一篇博客,感觉还不错,转载过来和大家分享一下: 1. 什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发"&#xf…

EJB框架 详细介绍和注解的使用

一、EJB是什么? EJB是sun的JavaEE服务器端组件模型,是一种规范,设计目标与核心应用是部署分布式应用程序。EJB2.0过于复杂,EJB3.0的推出减轻了开发人员进行底层开发的工作量,它取消或最小化了很多(以前这些是必须实现)…

EJB到底是什么?(通俗易懂白话文)

1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务 集群"和"企业级开发…

Http协议的组成

1、Http是什么 http是超文本传输协议,是互联网上应用最为广泛的一种网络协议。 2、Http协议的组成 Http协议是由Http请求和响应组成。当在浏览器中输入网址访问某个网站时,浏览器会将你的请求封装乘一个Http请求发送给服务器点,服务器接收到…

Http 协议, 前后端交互理解

目录 HTTP协议引入 HTTP的特征 http协议,以及从前后端交互角度去理解 无状态 无连接 客户端请求消息 服务器响应消息 HTTP 请求方法(常用款) HTTP 响应头信息 (常用款) HTTP 状态码 (常用款) 简单的写一个minihttp HTTP协议引入 http超文本传输协议, 是基…

HTTP协议版本检测

HTTP/2.0在2015年就已经正式发布了,但是现在大部分网站还在使用HTTP/1.1协议。具体怎么查看网站采用的是HTTP/1.1,还是HTTP/2.0呢,本篇就介绍几种检测HTTP协议版本的方法。 所有的操作都是基于Chrome浏览器,以本站 tiven.cn 为例。…

C++中的HTTP协议

1、HTTP Hyper Text Transfer Protocol(超文本传输协议)。是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外…

HTTP协议简单概述

学习目标 HTTP 协议概述 HTTP 请求响应 HTTP 请求方法 HTTP 响应方法 HTTP 消息报文之请求报文 HTTP 消息报文之响应报文 HTTP 消息报文之通用报文 URL ​ 我们更熟悉 URL(Uniform Resource Locator,统一资源定位符)。URL 正是使用 …

HTTP协议笔记

1、HTTP协议简介 1.1、什么是通信协议 官方理解:通信协议是指通信双方完成通信所必须遵守的规则和约定 通俗理解:通信双方采用约定好的格式来发送和接收消息,这种实现约定好的通信格式,就叫通信协议 例子:张三与李…

HTTP协议解析

文章目录 一、HTTP协议基础1、定义2、工作原理3、特点4、与Https的区别🐵HTTPS简介:两者区别: 二、HTTP请求协议1、HTTP请求结构:2、请求方法3、举例4、Post和Get的区别🌈 三、HTTP响应协议1、组成2、响应头3、状态码常…

http协议格式

文章目录 HTTP协议格式请求行首行:请求方法: 空行 \r\n:响应行首行头部: http协议介绍: HTTP 协议一般指 HTTP(超文本传输协议)。超文本传输协议(英语:HyperText Transfer Protocol&…

HTTP协议简单解释

简单的HTTP协议主要特点HTTP之URLURI和URL的区别HTTP之请求消息Request请求方法GET和POST的区别 HTTP之响应消息ResponseHTTP之状态码COOKIE和SESSION有什么区别CookieSession HTTP1.1HTTPS浏览器中输入一个URL发生什么?参考 简单的HTTP协议 HTTP协议是Hyper Text Transfer P…