认识EJB

article/2025/9/12 11:17:11

一、定义

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

EJB体系结构中涉及以下 6 类软件构件:

1.Enterprise Java Bean(简称 Enterprise Bean)

        分别是会话Bean(SessionBean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

SessionBean:

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

Entity Bean:

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

MessageDriven Bean:

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

2.Home 接口

        Home 接口(HomeInterface)包含 EJB生命周期管理的相关的方法,客户程序使用 Home接口创建或删除 EJB 的实例。

3.Remote 接口

      Remote接口中包含 EJB 实现的方法的声明,它实际上约定了 EJB 所提供的服务。在 EJB 中,客户程序只能通Remote 接口来间接地访问 EJB实现的商业方法,不能直接进行调用。

4. EJB 容器

      EJB容器为 EJB 构件提供运行环境并管理运行于其中的 EJB,理论上讲,一个 EJB 容器可以包含任何数量的EJB,但是由于实际资源的限制,实际的 J2EE 平台的容器往往有一个能够包含 EJB构件的上限。EJB 容器为 EJB 的执行提供系统级的服务,如自动将 EJB 相关的 Home 接口注册到一个目录服务中,自动注册服务支持客户应用查找定位EJB 的实例。

5. EJB 服务器

      EJB服务器是遵循 EJB 定义的构件模型的 CTM 实现,一个 EJB 服务器可以包含一个或多个 EJB 容器,EJB服务器为 EJB容器的运行提供公共服务框架。公共服务框架支持系统级服务,如 JNDI 服务。从使用服务的角度来看,开发人员可以不区分 EJB 容器与 EJB 服务器,可以认为EJB 容器和 EJB 服务器提供的服务都是由容器提供的。

6. EJB 客户端

     EJB客户端泛指调用 EJB 构件提供的业务操作的软件实体,EJB 构件的客户端可以有多种形式。如 EJB 的客户端可以是独立的Java 程序,也可以是运行在 Web 容器中的 Servlet或 JSP 构件,Servlet 或 JSP 形式的 EJB 客户端响应 Web 客户的请求;EJB的客户端还可以是其它的 EJB,例如 Session Bean 经常作为Entity Bean 的客户端来访问持久数据。 

                                

二、主要技术

分布式对象技术:

         分布式对象技术提供客户端访问分布式对象的基本支持。除了EJB之外,其它的分布式对象技术包括 Java RMI、 CORBA、 DCOM等,所有的分布式对象技术都会使用某个特定的远程方法调用协议, EJB中最常用的远程方法调用协议是RMI/IIOP。不论其采用什么具体的远程方法调用协议,现有分布式对象技术一般均采用Stub/Skeleton结构来支持客户端与分布式对象之间的交互。

服务端构件技术:

        服务端构件技术用于中间层应用服务器,支持分布式商业对象的开发。服务端构件技术以组件方式提供系统的可重用性与可扩展性,随着实际商业系统的变化,可以重新组装、修改、甚至删除商业对象,而不必重新重写整个应用系统。

CTM( Component Transaction Monitor)技术:

       简单地说,CTM 是一个应用服务器,它为分布式商业对象提供公共服务框架,CTM 公共服务框架支持大量的系统级服务,如事务(Transaction)管理等。

综上所述,EJB采用的构件技术为我们刻画了 EJB 构件的基本特征:EJB 构件是由公共服务框架自动管理的分布式的服务端商业构件,其中, CTM技术提供了公共服务框架的支持,分布式对象技术提供了分布式对象的支持,而服务端构件技术提供了服务端构件管理的基本支持。


三、特点

公共服务框架:

        EJB将实现商业对象所使用的服务框架的任务划分给了 EJB 应用服务器,服务框架支持大量的、由应用服务器提供的系统级服务。 EJB应用服务器提供的服务框架使得应用开发者可以关注于应用商业逻辑的实现,从而大大提高了开发效率,缩短了应用的开发周期。

平台独立性:

        平台独立性一方面得益于EJB 沿袭了 Java 技术的平台无关性,另一方面,EJB/J2EE 规范的开放性使得构成 EJB 应用的商业对象可以移植到任何符合 EJB 规范的应用服务器上。

封装特性:

         EJB规范提供对服务的封装特性(Wrap and Embrace),封装特性使得 EJB 应用可以使用现有的基础性服务(如目录服务),EJB 通过定义一系列标准的服务 API 来封装现有的基础性服务,EJB 构件通过这些标准的 API 来使用服务。如JNDI接口支持访问现有的命名目录服务(如 LDAP、COS),通过使用JNDI,EJB 应用服务器厂商可以将 LDAP 服务集成到其产品中,而不需去重新实现LDAP。EJB 的封装特性可以使应用服务器厂商节省IT投资,厂商可以使用现有的基础性服务,而不必去重新实现这些服务。

可定制性:

        EJB构件可以在不修改源代码的基础上进行定制化,EJB 构件的定制是指修改 EJB 构件的运行时配置以满足特定用户的需求。EJB构件的定制主要通过布署描述符完成,如可以利用布署描述符改变EJB 构件的事务管理特性。除了 EJB 模块中标准的布署描述符 ejb-jar.xml 外,J2EE平台提供商通常还会提供特定的辅助布署描述符以支持更强的可定制特性,如Websphere中的ibm-ejb-ext.xmi、Weblogic中的weblogic-ejb-jar.xml 等。

协议无关性:

        该特性指EJB 构件支持客户端通过多种 EJB 访问 EJB 构件 EJB 规范并没有强制约定只能通过 IIOP 协议来访问 EJB构件,客户端可以通过其它通信协议,如Weblogic 中支持的t3 协议(一种基于 HTTP 的协议)来访问远程 EJB 构件。协议无关性使得 EJB支持多种类型的客户端,不同类型的客户端使用不同的通信协议与 EJB 应用通信。

通用性:

       通用性指EJB 规范可方便支持不同规模的应用系统,即可以在任何时间增加客户系统,而不需修改核心的应用系统。通用性通常意味着系统资源的可伸缩性,系统资源在软件构件处理客户请求时要使用到,如处理器(CPU),随着系统规模的增大,构件可能要处理来自大量的客户请求,这里往往需要增加冗余的系统资源,如提供多个处理器(服务器),同时还需要一种合理的负载均衡机制将客户端请求均匀地分发到不同的服务器上。基于EJB容器的基本支持,Java企业版平台(尤其是商用的平台)可以方便的支持不同规模的应用系统,如 Websphere 提供的克隆机制可以支持管理员将某个J2EE 应用复制多份在多个服务器上运行,同时为多份服务提供自动的负载均衡机制。


四、EJB构件与 Java Bean 的比较

EJB 与 JavaBeans 都是基于Java 语言的构件模型,开发应用时,可以选择 EJB 模型,也可以选择 JavaBeans 模型。 EJB 与 Java Bean 的区别主要包括以下几点:

1.在大型的 Java 企业版应用中, EJB 构件通常用于服务端应用开发,而 Java Bean 构件通常用于客户端应用开发或作为服务端EJB 构件的补充。当然也可以用 Java Bean 构件进行服务端应用的开发,但是与 EJB 构件相比, Java Bean 不能使用 Java企业版平台提供的公共服务框架的支持,当应用需要使用关键的公共服务(如事务控制服务)时,使用普通的Java Bean 构件显然不适合。

2. EJB 构件是可布署的,即 EJB 构件可以作为独立的软件单元被布署到 EJB 应用服务器上,是应用构(application components);而 Java Bean 是开发构件,不能被部署为独立的单元。

3.EJB 构件是布署时可定制的,开发人员可以通过布署描述符对 EJB 构件的运行时配置进行定制;而 Java Bean构件的定制通常仅发生在开发阶段,开发人员只能利用开发工具创建并组装 JavaBeans 构件,部署时不能对其进行定制。

4. EJB 构件是分布式对象,可以被客户应用或者其它 EJB 构件进行远程访问;而普通的 Java Bean 构件只能在其构成的应用中使用,不能提供远程访问的能力。

5.EJB 构件是服务端构件,运行在服务端,没有人机交互界面,对终端用户不可见;而部分 JavaBeans 构件对终端用户可见,如 GUI应用中使用的按钮构件等。


综上所述,从对比的角度看,可以认为EJB 是 Java 语言提供的服务端构件模型,而 JavaBean 则是 Java语言提供的客户端构件模型,具体开发时可根据应用的具体需求,结合 EJB和 Java Bean的特点,灵活的选择 EJB 或者 Java Bean。


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

相关文章

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…

HTTP协议详细讲解(完整版)

HTTP协议 1. HTTP协议的定义 HTTP协议(Hypertext Transfer Protocol,超文本传输协议),是一个客户端请求和回应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。用户输入地址和端口号之后就可…

JavaWeb——HTTP详解

文章目录 什么是HTTPHTTP发展阶段HTTP请求1.请求行请求方式 2.消息头 HTTP响应1.响应体2.响应状态码常见状态码HTTP状态码分类HTTP状态码列表: 什么是HTTP 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议&#…

HTTP协议(详解)

HTTP协议(详解) HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)。HTTP协议是用于从(WWW:World Wide Web,简称万维网)服务器传输超文本到本地浏览器的传输…

HTTP协议的详细介绍

目录 一、何为HTTP协议 1.HTTP协议详细信息 2.HTTPS协议: 3.HTTP协议的特点 二、HTTP协议 请求方式 HTTP1. 0定义了三种请求方法: 1.GET 2.POST 3.HEAD HTTP1. 1 新增了五种请求方法: 1.OPTIONS 2.PUT 3.DELETE 4.TRACE 5.CONN…

看完这篇HTTP,跟面试官扯皮就没问题了

我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电…

Python挑战游戏( PythonChallenge)闯关之路Level- 5

时隔两个月, 又重新回来写博客了 今天重新来做这个挑战题目 首先入口地址:http://www.pythonchallenge.com/pc/def/peak.html 打开来看, 没错,你没有看错,只有一副画 然后画的下面 有一句话 "pronounce it&quo…

pythonchallenge第0关

pythonchallenge第0关 点击打开链接 仔细观察第0关的图片:数字以英语提示(Hint:try to change the URL address 尝试改变 统一资源定位符的地址) 这就很简单了。 >>> 2 ** 38 274877906944L >>> 也即:http…

Python挑战游戏( PythonChallenge)闯关之路Level- 6

来来来,难得今天有点时间,闯关继续 照旧,先进入闯关入口,看一看这一关是怎么回事:http://www.pythonchallenge.com/pc/def/channel.html 单纯的从网页页面上来看, 一个有拉锁的图片, 下面一个写…