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 访问正常&…

计算机网络基础进阶

三次握手四次挥手 三次握手 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…

鸿蒙_基础

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

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

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

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

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

CANoe与C#联合仿真方案

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

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

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

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

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

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

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

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

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

NGINX 保护 Web 应用安全之基于 IP 地址的访问

根据客户端的 IP 地址控制访问 使用 HTTP 或 stream 访问模块控制对受保护资源的访问: location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20; allow 2001:0db8::/32; deny all; } } 给定的 location 代码块允许来自 10.0.0.0/20 中的任何 IPv4 地址访问&#xf…

如何保证测试用例的充分性?

需求理解与分析: 深入理解软件需求规格说明书(SRS),确保所有需求都被正确理解。 将需求分解为更小的、可测试的功能点或特性。 等价类划分: 将输入数据划分为若干等价类,从每个等价类中选取一个或少数几个…

【AIGC】优化长提示词Prompt:提升ChatGPT输出内容的准确性与实用性

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯长提示词的挑战💯谷歌的优化长提示词技术关键因素分析 💯长提示词的设计原则💯优化长提示词的新框架方法💯实验结果分析不…

“网络协议入门:HTTP通信的四大组成部分“

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词: 春水满四泽,夏云多奇峰🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注💬卑微…

Android 13 SystemUI 隐藏下拉快捷面板部分模块(wifi,bt,nfc等)入口

frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java createTileInternal(tileSpec)方法注释想隐藏的模块即可。

【leetcode|哈希表、动态规划】最长连续序列、最大子数组和

目录 最长连续序列 解法一:暴力枚举 复杂度 解法二:优化解法一省去二层循环中不必要的遍历 复杂度 最大子数组和 解法一:暴力枚举 复杂度 解法二:贪心 复杂度 解法三:动态规划 复杂度 最长连续序列 输入输…

Mac 远程 Windows 等桌面操作系统工具 Microsoft Remote Desktop for Mac 下载安装详细使用教程

最近需要在 Mac 上远程连接控制我的 windows 电脑系统,经过一番尝试对于 win 来说还是微软自家推出的 Microsoft Remote Desktop for Mac 最最好用,没有之一 简介 Microsoft Remote Desktop是一款由微软公司开发的远程桌面连接工具,可以让用…

Linux基础——信号

目录 1. 什么是信号? 2. 信号的产生 ①键盘的组合键 ②kill命令 ④产生异常 ⑤软件条件 ⑥进程等待中的core dump 3. 信号的保存 ①信号的发送与接收 ②为什么需要保存信号? ③信号是如何保存的 4. 信号的捕捉处理 ①信号的处理与处理时机…

Redis Time Series介绍和命令大全

Redis Time Series介绍和命令大全 Redis Time Series1 时序序列是什么2 Redis Time Series的特性3 內存模型4 命令详解命名链接表命名详解表TS.CREATETS.ADDTS.ALTERTS.CREATERULETS.DECRBYTS.DELTS.DELETERULETS.GETTS.INCRBYTS.INFOTS.MADDTS.MGETTS.MRANGETS.MREVRANGETS.QU…