EJB概述

2023-05-16

 

    EJB含义为企业Java Beans。EJB是J2EE平台的重要组成部分。开发者可以在J2EE平台使用基于组件的体系结构,该结构目的为企业级应用程序提供多层、分布式和高度事务性等特性。

    EJB提供了一种开发和部署基于组件的企业应用程序的体系结构,考虑到健壮性、高可伸缩性和高性能。EJB应用程序可以部署在任何符合J2EE 1.3标准规范的应用服务器上。

    在本博客系列中,我们将详细讨论EJB3.0。

一、分类

    EJB主要分为三类;下表列出了它们的名称和简要说明–

    EJB 依照特性的不同,目前区分为三种,分别是 Session Bean ,Entity Bean ,以及 Message Driven Bean 。其中 Session Bean 与Entity Bean 算是 EJB 的始祖,这两种 EJB 在 EJB 规格 1.x 的时候就已经存在了,而 Message Driven Bean 则出现在 EJB 2.0 的规格中。

类型描述
Session Bean会话bean为单个会话存储特定用户的数据。它可以是有状态的或无状态的。与实体bean相比,它的资源密集度更低。一旦用户会话终止,会话bean就会被销毁。
Entity Bean实体bean表示持久数据存储。用户数据可以通过实体bean将数据保存到数据库中,也可以通过实体bean对数据库检索。
Message Driven Bea消息驱动bean用于JMS(Java消息传递服务)环境中。消息驱动bean可以使用来自外部实体的JMS消息并依次执行。

   (一)Session Bean 

    Session Bean 主要的目的是让程序开发者将逻辑层抽离,特别是复杂的逻辑可以放在 Session Bean 中。 Session Bean 还可以再细分为Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method 之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体 (Instance 注一 ) ,换言之,当使用者呼叫某个 Stateful Session Bean 的两个 methods 的时候,EJB Container( 注一 ) 会清楚的知道某个 EJB 的实体属于某一个使用者的。因此一般的设计上,不会让两个使用者同时使用某个 Stateful Session Bean ( 这并不是表示两个使用者不能使用同一个 Stateful Session Bean) 。


    Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method ,换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。


    从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。


    (二)Entity Bean

     Entity Bean 主要是资料组件, Entity Bean 主要的目的,在于提供资料,也就是说程序设计师可以将 Entity Bean 当程序资料,至于 Entity Bean 实际上怎么存取实际上的数据库,那个则是另外一件事情。


    Entity Bean 实际上是针对 RDBMS 而设计,也就是说当其它的程序使用 Entity Bean 的时候, Entity Bean 的资料主要是从 RDBMS 而来,当然,如果程序设计师熟悉 Entity Bean 的运作,那么也可以很轻易的把RDBMS 用其它的数据库取代,像是 LDAP 。


    Entity Bean 主要区分为 Bean-Managed Persistence 以及 Container-Managed Persistence ( 简称 BMP 及 CMP) ,这两种 Entity Bean 的型态不同,但是目的相同,都在于提供资料!这两种 Entity Bean 主要的差别在于维护资料的角色, BMP 是由 Bean 自行维护资料的一致性,而 CMP 则是由 EJB Container 来维护。一个 Entity Bean 往往代表一张RDBMS 的表格,这个表格内的一笔一笔的资料,则是透过另外一个叫做 Primary Key( 注三 ) 的 Class 来加以区分。

  (三)Message Driven Bean

     Message Driven Bean 与 Session Bean 或是 Entity Bean 均不相同,一般 Session Bean 或是 Entity Bean 都可以让使用者主动触发(可以在需要的时候,呼叫他们的 method 来触发他们),但是 Message Driven Bean 主要的目的在于反应 Message Queue 中的事件。

 

二、EJB的优点

    以下是EJB的重要优点-

    1 简化了大型企业级应用程序的开发。

    2 Application Server/EJB容器提供了大多数系统级服务,如事务处理、日志记录、负载平衡、持久性机制、异常处理等。开发人员只需关注应用程序的业务逻辑。

    3 EJB容器管理EJB实例的生命周期,因此开发人员不必担心何时创建/删除EJB对象。

参考:https://www.iteye.com/blog/jessicacao-257289

           https://www.tutorialspoint.com/ejb/ejb_overview.htm

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EJB概述 的相关文章

  • 如何在 Spring Boot 中使用 WebSphere Runtime 库作为独立应用程序

    我正在尝试构建一个 Spring Boot 控制台应用程序 首先 我使用 spring 初始化程序 v 1 3 1 这是简单的 hello world 没有 Web 没有 JPA 什么都没有 现在我编辑了 pom xml 并添加了对名为的
  • 在 Java EE 中与 EJB 交互的最佳方式

    我有一个中等规模的 Java EE 6 项目 它使用多个 EJB 其中一个唯一目的是通过 JPA 管理数据库调用 我的问题是添加执行一些随机功能的新类 然后调用数据库访问 EJB 来保存此类中的数据的最佳方法是什么 如果这个新类需要访问注释
  • Jboss Java EE 容器和 ExecutorService

    我有一个独立的 java 应用程序 它使用 ExecutorService 并行处理多个作业 ExecutorService es Executors newFixedThreadPool 10 我现在想在 EJB bean 中重复使用相同
  • 不支持的类版本错误

    当尝试从使用 Eclipse IDE 使用 jdk1 6 制作的客户端调用使用 NETbeans 使用 jdk1 7 制作的 EJB 时 我收到以下错误 Exception in thread main java lang Unsuppor
  • 如何在ejb 3.0中实现缓存?

    我有一位客户陷入 EJB 3 0 环境中 没有 Singleton 没有bean管理的并发 考虑到ejb规范禁止线程管理和同步 如何实现缓存 本质上 我想要一个非同步对象缓存来执行一些昂贵的操作 EJB 3 0 规范第 21 1 2 章中规
  • EJB 应该是实例变量并在 JSF Managed Beans 中标记为瞬态吗?

    我们有几个具有请求 视图和会话范围的 JSF 托管 bean 并且正在运行 WebLogic 11g 10 3 2 Weblogic 不支持 JSF Managed Bean 中的 EJB 注释 因此我们使用了这些过程http techno
  • 是否使用JTA事务?

    我正在开发一个部署在 JBoss 应用程序服务器上的 J2EE 应用程序 该应用程序由 EJB 2 x 组件和 Web 组件组成 运行在本地计算机或远程服务器上 数据库是 Oracle 或 SQL Server 并且不处于分布式环境中 我使
  • Spring RMI 的替代方案是什么? (因为它已被弃用)

    Spring 似乎正在弃用它的 RMI 从 Spring Framework 5 3 开始 出于安全原因和更广泛的行业支持 现已弃用对多种远程技术的支持 支持基础设施将从 Spring Framework 的下一个主要版本中删除 但我找不到
  • 遗留应用程序的迁移:EJB3或Spring

    我有旧应用程序使用struts ejb2 0 hibernate v3 0在 JBoss v4 0 上运行 现在我们已经将该应用程序迁移到新技术堆栈 我们正在探索pros and cons不同的技术堆栈 现在我们有两种选择 EJB3 0 J
  • CDI 将 EJB 注入 Glassfish v3 上的 POJO

    是否可以在 Glassfish v3 上使用 CDI 将 EJB 3 1 bean 注入 POJO 中 我的类 在 EJB 模块中 Singleton LocalBean Startup Named public class NewSing
  • Java EE、EJB 文件处理

    我正在开发一个网络应用程序 允许用户上传图片 然后系统将为他们生成拇指 我的问题依赖于这样一个事实 EJB 可以分布在多个服务器上 因此不允许直接处理文件 我可以将图像存储在数据库中 但我希望将它们作为文件存储在其中一台服务器中 我怎样才能
  • JBoss Seam:组件注入 POJO,但不注入会话 Bean

    我有一个处理登录的 Seam 组件 名称为 authenticator Name authenticator public class AuthenticatorAction implements Authenticator Persist
  • EJB注入时出现空指针异常

    我用一个无状态 Ejb 编写了非常简单的 Web 应用程序 当我实现接口时 有趣的时刻到来了 ejb 依赖注入不起作用 web xml
  • EJB3 Glassfish JNDI 查找

    我正在使用 Glassfish 捆绑的 Eclipse IDE 我编写了一个简单的 EJB 应用程序 但它不起作用 Stateless Remote CalculatorRemote class Local CalculatorLocal
  • 无法在我的 Maven 项目中使用依赖项 jboss-javaee-6.0

    我已经使用 JBoss 7 1 1 设置了一个 Maven 项目 我想使用 JavaEE 库 在根 pom xml 中我设置了
  • 具有多个数据源的 Tomcat 6/7 JNDI

    当有多个时
  • 在 Java EE 中手动启动新线程安全吗?

    对于在会话范围内的 JSF 托管 bean 中生成线程是否安全 我找不到明确的答案 线程需要调用无状态 EJB 实例 依赖注入到托管 bean 上的方法 背景是我们有一份需要很长时间才能生成的报告 由于我们无法更改服务器设置 这导致 HTT
  • ejb 查找因 NamingException 失败

    我在 web xml 中添加了以下内容
  • JPA。如何对现有实体进行子类化并保留其 ID?

    假设我有两个经典的非抽象 JPA 类 Person 和 Student Entity Inheritance strategy InheritanceType JOINED public class Person Id GeneratedV
  • 异步方法的默认 EJB 事务模式?

    当我有一个 AsynchronousEJB 中的方法 并且我没有指定 TransactionAttribute 那么容器到底是如何处理事务边界的呢 显然 它不能使用调用线程的事务 那么它是做什么的呢 同样的问题 但涉及由 TimerServ

随机推荐

  • 想招到合适的程序员,为什么我建议你一定要笔试

    寒窗苦读十数载 xff0c 毕业之后 xff0c 你还愿意考试吗 xff1f 相信绝大多数人都是不愿意的 但有一种考试 xff0c 却是在招聘过程中不可避免的 xff0c 那就是笔试 笔试 xff0c 说白了就是出一套题 xff0c 打印出
  • 资深 iOS 开发工程师教你5 道题全面考察候选人

    伯乐相 码 专栏三 xff1a 资深 iOS 开发工程师教你5 道题全面考察候选人 hello 大家好 xff0c 本期是我们伯乐相 码 专栏第三期节目 xff0c 今天给大家分享的是一位7年资深的IOS开发工程师如何简单通过5道题来全面考
  • ShowMeBug 荣膺「2021年中国人力资源科技创新产品奖」

    9月10日 xff0c 由中国领先的人力资源科技平台 HRTech China 发起的 2021年中国人力资源科技年度峰会 暨表彰大会在深圳隆重举办 HRTech China 盛大揭晓了2021年度中国人力资源科技大奖 xff0c 从公开征
  • 全球软件案例研究峰会,今日13:30线上开幕,ShowMeBug B站联合直播,赶紧扫码关注占坑位吧

    往期案例分享 案例 加快技术招聘步伐 xff0c 小鹏汽车选择使用ShowMeBug 案例 省去繁琐简历筛选 xff0c 微伴助手 选择 ShowMeBug 在线笔试提高人才精准度 案例丨秋招之下 xff0c 乐言科技如何通过 ShowMe
  • 瞄准程序员招聘痛点,ShowMeBug让面试代码操作可“回放”

    程序员虽然是建设互联网的职业之一 xff0c 但他们的招聘工作的线上化却有不少难题 疫情加速了市场对远程办公 远程面试 远程教学等模式的接受程度 xff0c 但程序员招聘涉及到代码能力测试 xff0c 甚至不同企业有不同的产品代码基础 xf
  • 这些IT行业趋势,将改变2023

    上一周 xff0c 你被 34 AI 34 刷屏了吗 xff1f 打开任何一家科技媒体 xff0c 人工智能都是不变的热门话题 周初大家还在用ChatGPT写论文 查资料 写代码 xff0c 到周末的时候大家已经开始用GPT 4图像识别来做
  • 基于惯性导航的(IMU,MEMS)的室内定位

    大家都知道惯导随着时间误差会不断积累 xff0c 所以这个方法往往不会单独使用 xff0c 而是和其他技术一起进行融合 由其他的绝对定位技术提供校正信息 xff0c 而惯导的信息提供连续的定位和起到对其他位置的平滑作用 针对行人而言 xff
  • 服务器初次跑YOLO数据集总结

    服务器跑模型时候遇见的部分问题 一 Pycharm 1 torch版本号相比于YOLO版本号过高 现象 xff1a Runtime xff1a result type float can t be cast to the desired o
  • 技术招聘漫谈 | Java工程师招聘难?你可能需要这份独家指南

    两周前 xff0c 我们发布了一篇关于怎样招聘前端工程师的文章 xff08 点击此处顾 xff09 在文章中 xff0c 我们分析了前端岗位有哪些必不可少的考察要点 xff0c 以及如何在面试中考核对方是否能写出高质量的代码 xff0c 这
  • 技术招聘演化论:怎样从纸上答题升级到实战编程?

    创新赛道的出现 一些企业或许已经对招聘管理系统 xff08 Applicant Tracking System xff0c 简称 ATS xff09 有一定了解 xff0c ATS 可以帮助企业管理招聘流程 xff0c 其中包括发布招聘信息
  • 一次查找分子级Bug的经历,过程太酸爽了

    Debugging is like trying to find a needle in a haystack except the needle is also made of hay Debug调试就像是在大片的干草堆中找针一样 xff
  • k8s 内部实现服务注册和服务调用

    k8s内部的服务注册主要是依靠几个组件 coreDns service和pod的标签选择器 服务注册的流程 pod创建完以后 xff0c 一般我们都会打算一组标签 xff0c 标签是key value形式的 如下 apiVersion v1
  • 使用Jetson Nano向PX4提供T265位置信息,实现室内定点飞行

    使用的Jetson Nano镜像版本 xff1a 4 6 xff08 2021 08 04发布 xff09 NVIDIA官方镜像下载链接 1 安装 ROS Melodic 参考官网安装教程 设置sources list sudo sh c
  • 结束,也是开始。

    三年时光转眼即逝 xff0c 临到毕业才幡然醒悟 xff0c 自己掌握的专业技能太少 xff0c 最后几个月才养成了几个好习惯 在上班利用空闲时间多学学其他的技术 xff0c 希望自己可以不停的努力 xff0c 充实自己的每一天
  • win10 和ubuntu双系统设置启动顺序和时间

    安装了ubuntu18 04后 xff0c 默认启动项是ubuntu xff0c 如果希望默认启动项是windows xff0c 修改方法如下 xff1a 1 进入Ubuntu系统 xff0c 打开终端 xff0c 输入 sudo gedi
  • 论 "张筱雨"

    当今网络谁最红 xff1f 当今网络谁最裸 xff1f 当今网络谁征服了大多数男人们的眼球 xff1f 当今网络谁最具创新 xff0c 引领时尚潮流 xff0c 当今网络谁敢和日本AV女优叫板 那么她就是 张筱雨 张筱雨 xff01 xff
  • PostgreSQL 性能优化--参数的配置

    nbsp nbsp nbsp PostgreSQL的配置参数作为性能调优的一部分 起着重要的位置 有时候一个简单的配置参数就会觉得应用的性能 因此有必要简单了解下其相关的配置参数 查询Linux服务器配置 在进行性能调优之前 需要清楚知道服
  • EJB指导教程前言

    前言 xff1a 本人将通过EJB tutorialspoint 网站学习EJB相关知识 xff0c 并将一部分知识翻译整理写为博客 xff0c 加入自己的见解 xff0c 供分享和交流 一 EJB指导 企业级Java Beans EJB
  • RTOS概念介绍

    事件标志组 事件标志组是实现多任务同步的有效机制之一 也许有不理解的初学者会问采用事件标志组多麻烦 xff0c 搞个全局变量不是更简单 xff0c 其实不然 在裸机编程时 xff0c 使用全局变量的确比较方便 xff0c 但是在加上 RTO
  • EJB概述

    EJB含义为企业Java Beans EJB是J2EE平台的重要组成部分 开发者可以在J2EE平台使用基于组件的体系结构 xff0c 该结构目的为企业级应用程序提供多层 分布式和高度事务性等特性 EJB提供了一种开发和部署基于组件的企业应用