J2EE(架构师考试复习资料)

J2EE 是针对 Web Service、业务对象、数据访问和消息报传送的一组规范。这组应用编程接口确定了 Web 应用与驻留它们的服务器之间的通信方式。J2EE 注重两件事,一是建立标准,使 Web 应用的部署与服务器无关;二是使服务器能控制构件的生命周期和其他资源,以便能够处理扩展、并发、事务处理管理和安全性问题。
J2EE 规范定义了以下几种构件:应用客户端构件、EJB构件、Servlets 和 JSP、Applet 构件。J2EE 采用的是多层分布式应用模型,意味着应用逻辑将根据功能分成几个部分, 用户可以在相同或不同的服务器上安装不同应用构件组成的J2EE 应用。这些层次可以参见图 15-2。
在这里插入图片描述
一、表示层
J2EE 客户端可以基于 Web,也可以基于 Java。在 HTML、Javascript、XML 等技术的帮助下,Web 浏览器可以支持强大、快速的用户界面。实际上,如果 HTML 足以捕获和显示应用所需的信息,则 HTML 为首选;如果 HTML 不足以达到此目的,则应该由客户端执行必要的捕获和操作。无论是 Applet 还是独立的 Java 程序,都可提供更丰富的图形用户界面。Applet 还可以与中层通信,从而进一步加强程序控制和系统灵活性。
分布式企业应用可以同时包括多种客户端,并且这些客户端都可以访问相同的业务逻辑。如图 15-3 所示:当客户端是 HTML时,JSP/Servlet 组合将成为能实现业务目标的真正客户端。当客户端是 Java 程序或基于 COM 程序时,它可以直接访问业务逻辑
在这里插入图片描述
二、应用服务层
一般情况下,应用服务层包含表示层请求的表示逻辑和业务逻辑。表示层由显示 HTML 页面的 JSP 页面和 Servlets 实现。业务逻辑通过 RMI 对象和 EJB 实现。EJB 依靠容器来实现事务处理、生命周期和状态管理、资源池、安全等问题,容器是 EJB 运行的环境。
1.Servlet
Java Servlets 是指可以扩展 Web 服务器功能的程序。Servlet 从客户端接受请求,动态生成响应,然后将包含 HTML 或 XML 文档的请求发送给客户端。Servlet 类似于 CGI(公共网关接口),但 Servlet 使用 Java 类和流,更易于编写;由于 Servlet 可编译为 Java 字节码,在运行时,Servlet 例程驻留在内存中,每一个用户请求都生成一条新线程,故而它们的执行速度也更快。
2.JSP
JSP 页面是基于文本的 Servlet开发方式。JSP 页面具有 Servlet 的所有优点,如果与 JavaBeans 类结合在一起,可以容易地将内容和显示逻辑分开。这使得无须了解 Java 代码就能更新页面的外观,更新 Java Beans 类的人也无须深入了解 Web 页面的设计。相对 CGI 而言,由于 CGI 依赖于平台,消耗资源更多,而且程序不能容易地访问参数数据等缺点,故而 JSP 页面和 Servlet 都比 CGI 应用广泛。
用户可以使用带 Java Beans 类的 JSP 页面定义 Web 模板,以便建立由外观相似的页面组成的 Web 站点,而 Java Beans 类负责组织数据。用户还可以借助标记和脚本将内容与应用逻辑捆绑在一起,或是嵌入一些 Java 小应用程序来实现一些简单的 Web 应用。
3.EJB
EJB 构件用于封装业务逻辑,使开发人员无须再担心数据访问、事务处理支持、安全性、高速缓存和迸发等琐碎任务的编程。在 EJB 规范中,它们由 EJB 容器负责。EJB 包含接口和类。客户端通过 EJB 的本地接口和远程接口访问 EJB 方法。本地接口提供的方法可用于生成、删除和查找 EJB,远程接口则提供业务方法。部署时,容器从这些接口生成类,这些类使客户端可以访问、生成、删除、查找和调用 EJB 上的业务方法。EJB 类为业务方法、生成方法和查找方法提供实施,如果 Bean 管理自己的存储,还得提供生成生命周期方法的实施。
EJB 共有三种类型:EntityBean(实体 Bean)、Session Bean(会话 Bean)和 Message Driven Bean(消息驱动 Bean),下面分别说明。
(1)实体 Bean。实体 Bean 表示数据库中的数据及作用于数据的方法。在关系型数据库中,表中的每一行就是一个 Bean 的实例。实体 Bean 是具有持久性的事务处理型 EJB,只要数据存在于数据库中,实体 Bean 就存在。
用容器管理的持久性访问关系数据库的 EJB,不需要为数据库访问使用任何 JDBC API,因为容器可以负责完成这项任务。但是,如果使用 Bean 管理的持久性或想访问关系数
据库以外的企业信息系统,就需要提供相应的程序代码才能完成。但是如果 EJB 使用 Bean 管理的持久性访问数据库,用户必须借助于 JDBC API 实施 Bean 生命周期方法,这样才能加载和保存数据,并保持运行和持久数据库存储之间的一致性。
(2)会话 Bean。会话 Bean 代表与客户间的短暂对话。在执行数据库读写时,会话 Bean 可以请求 JDBC 调用,也可以使用实体 Bean 执行调用,这时会话 Bean 是实体 Bean 的客户端。会话 Bean 的字段中包含对话的状态,如果服务器或客户端出现故障,会话 Bean 将消失。
会话 Bean 可以有状态,也可以无状态。有状态会话 Bean 包含客户端方的对话状态,对话状态是会话 Bean 实例的字段值加上可以从会话 Bean 字段阅读的所有对象。有状态的会话 Bean 不表示持久数据库中的数据,但能够以客户端的名义访问和更新数据。
无状态会话 Bean 没有客户端的任何状态信息。它们一般不提供保留任何状态的服务器行为。无状态会话 Bean 需要的系统资源较少。提供通用服务或表示共享数据视图的业务对象适合作为无状态的会话 Bean。
(3)消息驱动 Bean。EJB2.0 规范中的消息驱动 Bean 能处理从 JMS 消息队列接收到的异步消息。JMS 将消息路由到消息驱动 Bean,由消息驱动 Bean 从池中选择某个实例处理消息。
消息驱动 Bean 在 EJB 容器中管理。由于它们不是由用户的应用直接调用的,因此不能借助 EJB 本地接口从应用进行访问。但是,用户的应用可以将消息发送到 Bean 所监听的 JMS 队列中,以此来实例化消息驱动 Bean。
4.JMS
JMS 是支持 Java 程序之间信息交换的 J2EE 机制。这也是 Java 支持异步通信的方法—— 发送者和接收者无须相互了解,因此可以独立操作。JMS 支持两种消息传播模式:
点到点(point to point)。基于消息队列,消息产生者将消息发送到队列中。消息消费者可以将自身与队列连接,以倾听消息。当消息到达队列时,客户可以从队列中取走,并给出响应。消息只能发送到一个队列,只能由一个消费者使用。消费者可以过滤消息,以便获得希望获得的消息。
出版和订阅(publish/subscribe)。消息生产者将消息发送到一个话题(topic),注册到此话题的消费者都能接收到这些消息。这种情况下,许多消费者都能接收到同样的消息。
5.JNDI
由于 J2EE 应用的构件可以独立运行,而且是在不同的设备上运行,因此客户端和应用服务器层代码必须以某种方式查找和参考其他代码和资源。客户端和应用代码使用 JNDI(Java Naming and Directory Interface,Java 命名和目录接口)查找用户定义对象(如 EJB)和环境实体(Environment Entities)。在 JDBC2.0 中,数据源可以绑定到 JNDI 上,并允许应用程序访问。
6.事务处理
J2EE 事务处理模型可以在部署过程中定义组成一个事务处理的方法之间的联系,以便事务处理中的所有方法可以作为一个整体存在。如果用户希望完成这一任务,因为事务处理是一系列步骤,要么全部执行成功,要么全部回滚。例如,EJB 中可能有一系列方法,其作用是将资金从一个账户转到另一个账户,方法是借记第一个账户和贷记第二个账户。用户可能希望将全部操作作为一个整体,这样,如果借记之后,贷记之前出现故障,借记将滚回。
事务处理的属性在应用构件的集成过程中确定。它可以将各种方法组合成应用构件间的事务处理,即用户可以在 J2EE 应用中方便地重新分配应用构件的事务处理属性,无须修改代码和重新编译。J2EE 事务处理 API(JTA)和 Java 事务处理服务(JTS)形成 J2EE 中事务处理支持的基础,而且更适合 EJB 和 JDBC2.0。JTS 是低级事务处理管理 API,主要作用是将 Java 映射到对象管理组(OMG)的对象事务处理服务。JTA 是高级 API,包括两个部分:
事务处理接口。该接口允许事务处理定界,通过分布式构件由进行全局事务处理登记来完成工作。这种方法可以令多组操作组成一个事务处理。
XA 资源接口。基于能处理分布式事务处理的 X/Open/XA 接口,有时也称为两步提交事务处理,需要多种资源之间的协调,如数据库或序列。分布式事务处理由两步提交协议协调,可跨越用 XA 兼容的 JDBC 驱动程序访问的多个数据库,如针对 Oracle/XA 的 BEA WebLogicDriver 等。
EJB 规范定义了 Bean 管理的事务处理和 Container 管理的事务处理。当 EJB 用 Container 管理的事务处理部署时,应用服务器将自动协调事务处理。如果 EJB 由 Bean 管理事务处理部署,EJB 参数必须提供事务处理代码。
基于 JMS 或 JDBC API 的应用代码可以启动事务处理,或参与先前启动的事务处理。一个事务处理联系与执行应用的应用服务器线程相关,所有事务处理操作都在参与当前事务处理的线程上执行。
多数情况下,用户无须担心用 JTA 编写明确事务处理的问题,因为此项工作由 JDBC 完成,EJB API 由 Container 处理,并由应用部署说明符配置。这样,用户就可以将精力集中在事务处理设计而非实施上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/242814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

虚幻学习笔记14—重叠和碰撞事件

一、前言 在开发应用当中两个物体的重叠和碰撞事件会经常用到,在虚幻中哲两个有很大的区别,在官方文档碰撞概述其实已经讲了怎样发生碰撞和重叠,但是还是遗漏不少注意事项合细节,主要文档写的太粗糙了,这也让我在使用的…

BearPi Std 板从入门到放弃 - 先天神魂篇(3)(RT-Thread I2C设备)

简介 使用BearPi IOT Std开发板及其扩展板E53_SC1, SC1上有I2C1 的光照强度传感器BH1750 和 EEPROM AT24C02, 本次主要就是读取光照强度; 主板: 主芯片: STM32L431RCT6LED : PC13 \ 推挽输出\ 高电平点亮串口: Usart1I2C使用 : I2C1E53_SC1扩展板 : LE…

Python轴承故障诊断 (六)基于EMD-Transformer的故障分类

目录 前言 1 经验模态分解EMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 2.3 故障数据的EMD分解可视化 2.4 故障数据的EMD分解预处理 3 基于EMD-Transformer的轴承故障诊断分类 3.1 训练数据、测试数据分组,数据分batch …

YOLOv8训练好的pt文件如何用来预测

1. 使用原版预测 代码如下: from ultralytics import YOLO# Load a model model YOLO(yolov8n.pt) # load an official model# Predict with the model results model(https://ultralytics.com/images/bus.jpg) # predict on an image命令如下: y…

Go EASY游戏框架 之 RPC Guide 03

1 Overview easy解决服务端通信问题,同样使用了RPC技术。easy使用的ETCDGRPC,直接将它们打包组合在了一起。随着服务发现的成熟,稳定,简单,若是不用,甚至你也并不需要RPC来分解你的架构。 GRPC 有默认res…

产品入门第二讲:Axure产品元件库的使用

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​​​ 🌟在这里,我要推荐给大家我的专栏《Axure》。🎯🎯 🚀无论你是编程小白,还是…

西南科技大学数字电子技术实验六(智力竞赛抢答器的设计及FPGA实现)预习报告

一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结…

【Azure 架构师学习笔记】- Azure Databricks (3) - 再次认识DataBricks

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (2) -集群 前言 在对Databricks有了初步了解之后,如果要深入使用则需要对其进行更深层次的了解。 Databricks ADB 是一个统一的…

jdk+zookeeper+kafka 搭建kafka集群

环境资源包: jdk-8u341-linux-x64.tar.gz kafka_2.12-2.2.0.tgz zookeeper-3.4.14.tar.gz 一、安装jdk 因为kafka需要Java环境,所以优先配置jdk环境,若已经配置了java环境,此步骤可以忽略 [rootVM-120-2-centos ~]# tar -xvf j…

在Node.js中使用MongoDB连接数据库、创建集合

本文主要介绍在Node.js中使用MongoDB连接数据库、创建集合的方法。 目录 连接数据库使用原生驱动程序连接MongoDB数据库使用Mongoose连接MongoDB数据库 创建集合使用mongodb驱动程序 连接数据库 在Node.js中使用MongoDB连接数据库有两种方式:使用原生驱动程序和使用…

Redis持久化AOF详解

基础面试题 什么是AOF AOF(Append-Only File)用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。 它的工作过程大抵分为以下几步: 收到客户端的写入命令(例如SET、DE…

Hadoop学习总结(Hive的安装)

Hive的安装模式分为3种,分别是嵌入模式、本地模式、远程模式。 (1)嵌入模式:使用内嵌的 Derby 数据库存储元数据,这种方式是 Hive 的默认安装方式,配置简单,但是一次只能连接一个客户端&#xf…

2023.12.14 hive sql的聚合增强函数 grouping set

目录 1.建库建表 2.需求 3.使用union all来完成需求 4.聚合函数增强 grouping set 5.聚合增强函数cube ,rollup 6.rollup翻滚 7.聚合函数增强 -- grouping判断 1.建库建表 -- 建库 create database if not exists test; use test; -- 建表 create table test.t_cookie(month …

目标检测检测精度

在一个数据集检测中,会产生四类检测结果:TP、TN 、FP 、FN: T ——true 表示正确 F——false 表示错误 P—— positive 表示积极的,看成正例 N——negative 表示消极的,看成负例 我的理解:后面为预测结…

智能优化算法应用:基于象群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于象群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于象群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.象群算法4.实验参数设定5.算法结果6.参考文献7.MA…

C_10练习题答案

一、单项选择题(本大题共 20小题,每小题 2分,共 40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1,结构化程序由三种基本结构组成,三种基本结构组成的算法是(A) A.可以完成任何复杂的任务 B.只能完成部分复杂的任务…

【数据结构和算法】压缩字符串

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:双指针 三、代码 3.1 方法一:双指针 四、复杂度分析 前言 这是力扣…

计网Lesson9 - 链路协议和网络概述

文章目录 数据链路层协议Ethernet V2标准Ethernet V2帧格式Ethernet V2帧长度标准以太网帧 MAC 帧协议 PPP 协议PPP 概述PPP 帧 网络层网络层的设计选择 数据链路层协议 Ethernet V2标准 Ethernet V2帧格式 以太网帧格式说明: 6 6 6 字节目标地址 6 6 6 字节源地…

docker核心原理——unionfs、namespace、cgroup

docker 核心原理 docker的核心原理其实就是cgroupnamespaceunionfs 组合实现的隔离机制,资源控制等。 隔离机制 在容器进程启动之前重新挂载它的整个根⽬录“/”,⽤来为容器提供隔离后的执⾏环境⽂件系统通过Linux Namespace 创建隔离,决…

论文阅读:MonetDB/X100: Hyper-Pipelining Query Execution

目录 Abstract 1 Introduction 1.1 Outline 2 How CPU Work Abstract 在决策支持、OLAP和多媒体检索等计算密集型应用领域,数据库系统往往只能在现代cpu上实现较低的IPC(每周期指令)效率。本文首先以TPC-H基准为重点,深入研究了这种情况发生的原因。…