Java EE规范

1、简介

Java EE的全称是Java Platform, Enterprise Edition。早期Java EE也被称为J2EE,即Java 2 Platform Enterprise Edition的缩写。从J2EE1.5以后,就改名成为Java EE。一般来说,企业级应用具备这些特征:1、数据量特别大;2、用户特别多;3、性能要求高;4、安全性要求高;5、生命周期长。企业级应用就要考虑数据存储和查询的问题、系统訪问快慢即性能问题、怎样使用事务保证安全的问题、怎样使系统可扩展易维护的问题。这就要用到分布式,涉及远程方法调用,服务通信,事务和服务等技术,对应于Java EE里的EJB、RMI、JNDI、JTA等。Java EE提供了一个框架、一套标准接口,用于开发分布式结构的应用,但它并没有提供实现。接口的意义在于让不同的厂商由于遵循共同的接口而全然解除依赖关系。Java EE提供接口之后,第三方厂商或专注于整个Java EE架构中的特定组件,如Apache的Tomcat实现了JSP和Servlet;或对J2EE规范提供了一个较为完整的实现,如JBoss和BEA公司的WebLogic。

2、Java EE架构

Java EE的官方规范对Java EE的描述如下:
在这里插入图片描述J2EE平台由一整套服务(services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的主要技术规范进行简单的描述:

    1. 配置文件(profiles),Java EE 平台针对特定类别应用程序的配置,所有 Java EE 配置文件都有一套共同的功能,如命名和资源注入、打包规则、安全要求等。
    1. 应用组件(Application Components),Java EE 运行时环境定义了四种应用程序组件类型:
      (1)应用程序客户端(Application clients)是 Java 编程语言程序,通常是在桌面计算机上执行的图形用户界面程序。
      (2)小应用程序(Applets)是图形用户界面组件,通常在网络浏览器中执行,但也可在支持小应用程序编程模型的各种其他应用程序或设备中执行。小应用程序可用于为 Java EE 应用程序提供强大的用户界面。
      (3)网络容器(Web container):小服务程序(Servlets)、JSP 页面(Java Server Pages)、JSF 应用程序(JavaServer Faces technology)、过滤器和网络事件监听器通常在网络容器中执行,并可响应网络客户端的 HTTP 请求。Servlets、JSP 页面、JSF 应用程序和过滤器可用于生成作为应用程序用户界面的 HTML 页面。它们还可用于生成 XML 或其他格式的数据,供其他应用程序组件使用。Servlet、JSP 页面或 JSF 应用程序、网络过滤器和网络事件监听器统称为 “网络组件”。网络应用程序由网络组件和 HTML 页面等其他数据组成,网络组件在网络容器中执行。
      Servlet是一种小型的Java程序,它扩展了Web服务器的功能;同时,作为服务器端的Java程序,用于处理HTTP请求和生成动态内容。作为一种服务器端的应用,Servlet和CGI脚本类似,当被请求时开始执行,可以生成动态的页面,在客户端Session中保存客户的数据。Servlet标准定义了动态生成HTML、XML或其他格式文档的Web网页的技术标准。Serlvet八大内置对象如下:
对象类型描述
requestHttpServletRequest与Servlets相同
responseHttpServletResponse与Servlets相同
sessionHttpSession用于跟踪用户状态
configServletConfigJSP初始配置
outJspWriter用于从scriptlets输出动态内容
pageContextPageContext访问一些页面属性
applicationServletContext与Servlet容器通信
pageHttpJspPage表示从JSP产生的Servlet实例

JSP页面由HTML代码和嵌入其中的Java代码所组成,其允许在HTML页面中嵌入Java代码,便于生成动态内容。服务器在页面被客户端所请求后对页面中的Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JSP通常在大量的HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML
(4)EJB(Enterprise Java Beans) 组件在支持事务的托管环境中运行。EJB通常包含 Java EE 应用程序的业务逻辑,即企业业务逻辑。EJB可使用 SOAP/HTTP 协议直接提供网络服务。EJB提供了一个开发和实施分布式商务逻辑的框架,大大地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件如何与EJB容器(container)进行交互。容器负责提供公用服务,如目录服务、事务管理、安全性、资源缓冲池以及容错性等。但EJB并不是实现J2EE的唯一途径。从企业应用多层结构的角度来看,EJB是业务逻辑层的中间件技术。与JavaBeans的关键不同是它提供了事务处理的能力业务逻辑代码即解决、达到特定业务领域的需求,如银行、零售、金融等,又称EJB处理的业务逻辑层。EJB又分为如下几种Bean:

名称作用
Session BeansSession Beans分为Stateless Session Beans,用于表示应用程序的业务逻辑不存储客户端特定的状态;以及Stateful Session Beans,用于表示应用程序的业务逻辑可以存储客户端特定的状态。Session Beans是对业务逻辑的封装,类似于Service层。它可以以local,remote,webservice 服务的方式被client调用
Entity Beans用于表示应用程序的数据模型,通常与数据库表的行对应;也可用于持久性存储和检索数据
Message Driven Beans用于异步处理消息的组件,通常与消息队列集成,处理来自其他组件的消息
    1. 容器(Containers),为 Java EE 应用程序组件提供运行时支持。Java EE 应用程序组件从不与其他 Java EE 应用程序组件直接交互。它们使用容器的协议和方法进行交互并与平台服务交互。在应用组件和 Java EE 服务之间插入容器可让容器透明地注入组件所需的服务,如声明式事务管理、安全检查、资源池和状态管理。
      (1)容器需要满足Java SE(Java Platform, Standard Edition)所述要求。
      (2)Java EE 产品提供商通常使用现有的事务处理基础架构并结合 Java SE来实现 Java EE 服务器端功能。
      Java EE中,容器的具体实现有这几种:Application Client容器、Applet Client容器、Web容器、EJB容器Tomcat实际上是Web容器,包括JSP容器和Servlet容器。JBossWebLogic是Web容器和EJB容器。
    1. 资源适配器(Resource Adapters),通常用于实现与外部资源管理器的网络连接。资源适配器可通过实施 Java EE 标准服务 API(如 JDBC驱动程序)或通过定义资源适配器来扩展 Java EE 平台的功能。资源适配器还可以提供完全本地化的服务,如本地资源交互。资源适配器通过 Java EE SPI(Java EE service provider interfaces)与 Java EE 平台接口交互。
    1. 数据库(Database),Java EE 平台需要一个可通过 JDBC(Java Database Connectivity) API 访问的数据库来存储业务数据。
    1. Java EE标准服务(Java EE Standard Services),Java EE标准服务由以下几部分组成:
      (1)HTTP,HTTP 客户端 API 由 java.net 软件包定义。HTTP 服务器端 API 由 servlet、JSP 和 JSF 接口以及作为 Java EE 平台一部分的网络服务支持定义。
      (2)HTTPS,在 SSL 协议上使用 的HTTP 协议。
      (3)Java 事务 API(Java Transaction API,JTA)。包括:应用级分界接口,由容器和应用组件用来划分事务边界;事务管理器和资源管理器之间的接口,用于 Java EE SPI 层。
      (4)RMI-IIOPRMI(Remote Method Invocation,远程方法调用)是Java的分布式对象标准,允许位于不同主机上的Java类之间进行通信。Java RMI是个应用程序编程接口(API),还是个分布对象模型;使用RMI,Java程序员可以像调用本地操作一样进行网络调用,从而很容易地构造分布式系统。IIOP协议本来是CORBA的一种传输协议,和RMI结合在一起,使得整合非Java对象变得更加简单。
      (5)Java IDL,在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并在CORBAORB中部署,或者创建 Java类作为和其他ORB一起部署的CORBA对象的客户。后者可用于遗留系统的集成。
      (6)JDBC API,用于连接关系型数据库系统的 API。JDBC API为访问不同的数据库提供了一种统一的途径,像ODBC(Open Database Connectivity,开放数据库连接)一样,JDBC对开发者屏蔽了一些细节问题。另外,JDBC对数据库的访问也具有平台无关性。
      (7)Java Persistence API, Java持久性API是管理持久性和对象/关系映射的标准 API。
      (8)JMS(Java Message Service),用于和面向消息的中间件相互通信的API,支持可靠的点对点消息传递以及发布-订阅模式。
      (9)JNDI(Java Naming and Directory Interface),命名和目录访问的标准 API。JNDI API 包括两个部分:应用组件访问命名和目录服务时使用的应用级接口;附加命名和目录服务提供商的服务提供商接口。JNDI API用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,如DNS和LDAP、本地文件系统、应用服务器中的对象。
      (10)JavaMail,JavaMail API 包括两个部分:应用程序组件用于发送邮件的应用程序级接口,以及 Java EE SPI 级的服务提供商接口。
      (11)JAF(JavaBeans Activation Framework),JavaBeans激活框架。
      (12)XML Processing,为解析 XML 文档的行业标准 SAX 和 DOM API 提供支持,并为 XSLT 转换引擎提供支持。XML用来在不同的商务过程中共享数据。
      (13)Java EE Connector Architecture,允许支持访问企业信息系统的资源适配器插入任何 Java EE SPI。
      (14)Security Services,Java Authentication and Authorization Service (JAAS) 使服务能够对用户进行身份验证和实施访问控制。
      (15)Web Services,为网络服务客户端和网络服务端点提供全面支持。
      (16)Concurrency Utilities,为 Java EE 应用程序组件提供异步功能:托管执行器服务、托管计划执行器服务、托管线程工厂和上下文服务。
      (17)Batch,为批处理应用程序提供了一个编程模型,并为调度和执行作业提供了一个运行时。
      (18)Management,定义了使用特殊管理企业 bean 管理 Java EE 服务器的 API。
      (19)Deployment,定义了部署工具与 Java EE 产品之间的规范。
    1. 互操作性(Interoperability),上述许多应用程序接口提供了与不属于 Java EE 平台的组件(如 CORBA 服务),他们需满足一定的互操作性。
    1. 产品要求灵活性(Flexibility of Product Requirements),典型的低端 Java EE 产品将支持使用流行浏览器中 Java 插件的小程序,支持各自 Java 虚拟机中的应用程序客户端,并提供一个同时支持网络组件和企业 bean 的服务器;高端 Java EE 产品可能会将服务器组件分成多个服务器,每个服务器都可以分布在一系列机器上,并实现负载均衡。
    1. Java EE产品打包(Java EE Product Packaging),
    1. Java EE产品扩展(Java EE Product Extensions)
    1. 平台角色(Platform Roles),典型的 Java Platform 企业版角色由以下组成:
      (1)Java EE 产品提供者(Java EE Product Provider),Java EE 产品提供商必须提供应用程序部署和管理工具。部署工具使部署者能够在 Java EE 产品上部署应用程序组件。管理工具允许系统管理员管理 Java EE 产品和部署在 Java EE 产品上的应用程序。
      (2)应用组件提供者(Application Component Provider),例如,HTML 文档设计师、文档程序员和企业 bean
      开发人员。
      (3)应用程序组装器(Application Assembler)
      (4)部署者(Deployer)
      (5)系统管理员(System Administrator)
      (6)工具提供者(Tool Provider)
      (7)系统组件提供者(System Component Provider)
    1. 平台规范(Platform Contracts)
      (1)Java EE APIs
      (2)服务提供接口(Java EE Service Provider Interfaces, SPIs)
      (3)网络协议(Network Protocols)
      (4)部署描述符和注解(Deployment Descriptors and Annotations)

最后,Java EE的简洁描述可以用下面这张图来表示:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

curl支持ssl报错:SSL certificate problem: unable to get local issuer certificate

1. 说明 在使用curl时返回CURLE_OUT_OF_MEMORY,猜想可能是ssl的问题,用curl命令做实验发现访问http没问题,访问https会有问题,根据打印log判断是缺少证书,需要下载证书并声明证书路径。 1.1 curl访问http 访问正常&…

【华为HCIP实战课程十五】OSPF的环路避免及虚链路,网络工程师

一、避免域间路由环路 1、区域内部的防环:区域内同步了LSA,SPF就决定了区域内部没有环路 2、区间的防环机制:非正常的ABR不更新3类LSA 为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则 1)、OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接…

计算机网络基础进阶

三次握手四次挥手 三次握手 1------建立连接----------------------2 ACK1,seq0 2------传输数据,建立连接---------1 1------传输数据,建立连接---------2 三次握手用于建立TCP连接,确保通信双方都准备好进行数据传输。整个…

Gin 协程mysql客户端

一、Gin框架 mysql配置 这里选择yaml文件配置 二、配置读取 viper 读取yaml文件中对应配置 三、mysql 的协程客户端 文件位置 package databaseimport ("database/sql""fmt""github.com/spf13/viper""log""net/http"&quo…

c++贴瓷砖

题目描述 有一块大小是 2 * n 的墙面&#xff0c;现在需要用2种规格的瓷砖铺满&#xff0c;瓷砖规格分别是 2 * 1 和 2 * 2&#xff0c;请计算一共有多少种铺设的方法。 输入 输入的第一行包含一个正整数T&#xff08;T<20&#xff09;&#xff0c;表示一共有T组数据&…

【VUE】Vue中 computed计算属性和watch侦听器的区别

核心功能不同 computed 是一个计算属性&#xff0c;其核心功能是基于已有的数据属性计算得出新的属性值。当某个依赖的数据发生变化时&#xff0c;computed 会自动重新计算并更新自己的值。因此&#xff0c;可以将 computed 看做是一种“派生状态”。 watch 是一个观察者函数&…

【JS】JavaScript闭包(私有变量,局部变量)

1. 代码展示 var add (function () {var counter 0;return function () {return counter 1;} })();add(); add(); add();// 计数器为 3//等效C语言代码 int add() {static int counter 0;return counter; }2. 作用 闭包使得函数拥有私有变量称为可能。var counter 0;只执…

鸿蒙_基础

HarmonyOS基础 页面跳转 import { router } from kit.ArkUIButton(去首页).onClick(()>{router.pushUrl({ // 普通跳转&#xff0c;可以返回url:pages/Index}) }) Button(登录).onClick(()>{router.replaceUrl({ // 替换跳转&#xff0c;无法返回&#xff0…

Zabbix进阶实战!将告警推送到Syslog服务器详细教程

需求场景&#xff1a; 用户需要将zabbix产生的告警事件推送给rsyslog服务器&#xff0c;syslog服务器再对事件日志进行分析处理. 环境配置信息 服务器 IP地址 ZabbixServer 192.168.200.195 Rsyslog服务器 192.168.200.128 *Rsyslog服务器防火墙需要放通 UDP/514端口 推送脚本…

C#描述-计算机视觉OpenCV(7):MSER特征检测

C#描述-计算机视觉OpenCV&#xff08;7&#xff09;&#xff1a;MSER特征检测 基本概念操作实例效果优化 基本概念 前文C#描述-计算机视觉OpenCV&#xff08;6&#xff09;&#xff1a;形态学描述了如何对图像的前后景特征形态进行检测与运算&#xff0c;本篇将分析基于形态的…

CANoe与C#联合仿真方案

引言 CANoe作为一款强大的网络仿真工具,能够模拟各种通信协议,尤其是在汽车领域的CAN、LIN、Ethernet等协议。而C#作为一种广泛使用的编程语言,能够为CANoe提供灵活的用户界面和逻辑控制。本文将探讨如何将CANoe与C#结合,实现高效的联合仿真方案。 1. 系统架构 联合仿真…

maven jar包二进制文件 invalid stream header: EFBFBDEF 的错误

背景&#xff1a; 将jasper模板文件导入jar包后&#xff0c;生成文件报错 org.springframework.core.io.Resource resource new ClassPathResource("/template/XXXX.jasper");jasperPrint JasperFillManager.fillReport(resource.getInputStream(), paramentMap, …

手机在网状态查询接口-在线手机在网状态查询-手机在网状态查询API

接口简介&#xff1a;查询手机号在网状态&#xff0c;返回正常使用、停机、未启用/在网但不可用、不在网&#xff08;销号/未启用/异常&#xff09;、预销户等多种状态 直连三大运营商&#xff0c;实时更新&#xff0c;可查询实时在网状态 高准确率-实时更新&#xff0c;准确率…

UCX 插桩汇编语言替换的原理解释

UCX 中有这么一段注释&#xff1a; /* * Since we cant assume the new code will be within 32-bit * range of the global variable argument, we need to translate * the code from: * cmpl $imm32, $disp32(%rip) * to: * push %rax * movq $addr64, %rax ; $addr…

Require:业界优秀的HTTP管理方案。

1&#xff0c;HTTP出口 方案异步JDK额外依赖特点HttpURLConnection 【优点】Java内置&#xff0c;简单易用。对于简单的HTTP请求和响应处理非常合适。 【缺点】功能相对较少&#xff0c;不支持现代特性&#xff08;如异步请求、连接池等&#xff09;。API相对繁琐&#xff0c;…

【flutter】哪些APP使用了flutter框架开发

文章目录 背景安卓平台上使用flutter的程序 背景 Flutter是一款跨端开发框架&#xff0c;一套代码打包为下列平台&#xff1a; 安卓&#xff1a;需要安装安卓SDK套件ios&#xff1a;需要xcode以及macos环境linux desktop&#xff1a;需要linux桌面版&#xff08;大概是libgtk…

秋招突击——8/6——万得数据面试总结

文章目录 引言正文面经整理一1、讲一下java的多态&#xff0c;重载&#xff0c;重写的概念&#xff0c;区别2、说一下Java的数组&#xff0c;链表的结构&#xff0c;优缺点3、创建java线程的方式有哪些&#xff0c;具体说说4、创建线程池呢、每个参数的意义5、通过那几种方式保…

软件测试工程师:如何写出好的测试用例?

软件测试用例(Test Case)是软件测试过程中的一种详细文档或描述&#xff0c;用于描述在特定条件下&#xff0c;对软件系统或组件进行测试的步骤、输入数据、预期输出和预期行为。编写高质量的测试用例是确保软件质量的关键步骤之一。以下是一些编写优秀测试用例的建议&#xff…

如何快速解决谷歌网站页面收录难题?

在外贸网站的运营中&#xff0c;页面无法被谷歌收录是一个常见的困扰。即便你的内容再优秀&#xff0c;如果搜索引擎的爬虫无法抓取到你的页面&#xff0c;那一切努力都将白费。而GPC爬虫池服务可以帮助你快速解决网站页面的收录问题。它通过千万级的爬虫池资源&#xff0c;强力…

数据结构与算法:贪心算法与应用场景

目录 11.1 贪心算法的原理 11.2 经典贪心问题 11.3 贪心算法在图中的应用 11.4 贪心算法的优化与扩展 总结 数据结构与算法&#xff1a;贪心算法与应用场景 贪心算法是一种通过选择当前最佳解来构造整体最优解的算法策略。贪心算法在很多实际问题中都取得了良好的效果&am…