Java EE架构概述

版权声明:本文为博主原创文章,转载请注明出处。个人博客地址:https://yangyuanlin.club/ 欢迎来踩~~~~ https://blog.csdn.net/w7239/article/details/85011053

主要内容

  • 分布式多层应用
  • Java EE容器
  • Web Service支持
  • 打包应用
  • 开发角色
  • Java EE APIs

引子

  • Java Platform, Enterprise Edition(Java EE)为设计、开发、装配和部署企业应用程序提供了一个基于组件的方法
  • Java EE平台提供了:
    • 一个多层分布式应用模型
    • 可复用组件模型
    • 一个统一的安全模型
    • 灵活的事务控制
    • Web Services
  • 通过Java EE平台,可以
    • 更快地构建创新的商业解决方案
    • 基于Java EE组件的平台独立性,使开发的应用不依赖于特定厂商的产品和API
    • 软件厂商和客户都能自由地选择符合其需求的产品和组件

分布式多层应用

  • 应用逻辑按照功能分成若干组件,组成Java EE应用的各种应用组件按照多层Java EE环境中的层次结构,安装在不同的机器上。
  • 安全
    • 在每个应用中使用平台无关的安全策略
    • 允许在部署时定义安全约束
    • 应用程序能够在多种安全实现上移植
    • 对应用开发者屏蔽实现安全特性的复杂性
    • Java EE平台提供了标准的声明式访问控制规则,可由开发者定义并在应用部署到服务器时解释
    • Java EE提供了标准的登录机制,开发者可以不用重复开发
  • Java EE组件
    • A Java EE component is a self-contained functional software unit that is assembled into a Java EE application with its related classes and files and that communicates with other components.
    • Java EE规范定义了如下组件:
      • 应用客户端(application clients)和Applets是客户端运行的组件
      • Servlet和JSP组件是服务器上运行的web组件
      • Enterprise JavaBeans (EJB)组件是服务器上运行的业务组件
  • Java EE客户端
    • Web客户端 → thin client
      • 动态Web页面:由Web层运行的web组件生成
      • Web浏览器:显示页面
    • Applet
    • 应用客户端 → richer user interface
      • 直接访问企业Beans
      • 打开HTTP连接,与Web层的servlet通信
    • JavaBeans组件
    • 瘦客户端可提升应用的可分布性、可部署性和可管理性,而富客户端可获得良好的用户体验。
  • 服务器通信
  • Web组件
    • Servlet
      • Servlets are Java programming language classes that
        dynamically process requests and construct responses.
    • JSP
      • JSP pages are text-based documents that execute as servlets but allow a more natural approach to creating static content.
    • JavaBeans (optional)
  • 业务组件
    • Session beans
      • A session bean represents a transient conversation with a client. When the client finishes executing, the session bean and its data are gone.
    • Entity beans
      • An entity bean represents persistent data stored in one row of a database table. If the client terminates or if the server shuts down, the underlying services ensure that the entity bean data is saved.
    • Message-driven beans
      • A message-driven bean combines features of a session bean and a Java Message Service (JMS) message listener, allowing a business component to receive JMS messages asynchronously.
  • EIS (Enterprise Information System) 层
    • ERP
    • 数据库系统
    • 遗产系统
    • ……

Java EE容器

  • 为什么需要容器?
    • 瘦客户端多层应用程序开发面临的难题
      • 事务管理
      • 状态管理
      • 多线程
      • 资源池
      • 其它复杂的底层细节
    • Java EE服务器对所有类型的组件,以容器的形式提供了一组底层服务。开发者不需重复开发,而只需关注业务问题
  • 容器服务
    • 容器是一个组件和支持组件的底层平台特定功能之间的界面
    • Web组件、企业Bean、应用客户端组件必须组装成Java EE模块并部署于容器中才能执行
    • 组装过程包括
      • 为Java EE应用中每个组件定义容器方面的设置
      • 为Java EE应用本身定义设置项
  • 容器管理的服务有
    • 可配置的服务
      同一Java EE应用中的应用组件依照部署方式不同而表现出不同的行为
      • 安全服务
      • 事务服务
      • JNDI查找服务
      • Java EE远程连接服务
      • ……
    • 不可配置的服务
      • 企业Bean和Servlet寿命周期
      • 数据库连接资源池
      • 数据持久化
      • 访问其它Java EE平台API
  • Java EE服务器和容器

对Web services的支持

  • Web services是基于Web的企业应用,它使用开放的、基于XML的标准和传输协议与调用它的客户端进行数据交换
  • XML: 跨平台、可扩展、基于文本的描述数据的标准。
    • 自定义标签(tag)
    • 用schema定义其格式
    • 用XSL定义处理和展现数据的方式
  • SOAP: 客户请求和web服务响应描述成SOAP消息
    • 信封: 消息中有什么?如何处理消息?
    • 编码规则: 表示消息中的特定格式的数据实例
    • 消息约定: 描述请求和响应的格式
  • WSDL: 用XML格式描述网络服务
    • 服务名
    • 服务位置
    • 与服务通信的方式
  • UDDI和ebXML: 在Internet上发布web服务信息的标准

打包应用

  • Java EE应用打包成EAR文件(Enterprise Archive),包括
    • Java EE模块
    • 部署描述符: 描述应用、模块或组件的部署设置
      • Java EE部署描述符
      • 运行时部署描述符
        ——应用服务器特定
  • Java EE模块: 一个Java EE模块包括一或多个具有相同容器类型的Java EE组件,以及一个组件部署描述符
    • EJB模块
      • 企业bean (class) + EJB部署描述符 → .jar
    • Web模块
      • Servlet (class) + JSP + 其它Class + HTML + 图片 + Web部署描述符 → .war
    • 应用客户端模块
      • Java class + 应用客户端部署描述符 → .jar
    • 资源适配器模块
      • Java interface, class, native libraries, and other documentation + 资源适配器部署描述符 → .rar

开发角色

  • Java EE规范定义了如下角色
    • Java EE Product Provider
      • 实现Java EE产品,提供容器、实现API及其它Java EE特性
    • Tool Provider
      • 提供组件开发、组装和打包工具
    • Application Component Provider
      • 构建Java EE应用中使用的Web组件、企业Bean、Applets,或应用客户端
    • Application Assembler
      • 将应用模块组装成Java EE应用的EAR文件
    • Application Deployer and Administrator
      • 配置和部署Java EE应用程序、管理计算和网络架构、监控运行环境

Java EE APIs (1)

  • Enterprise JavaBeans
    • 执行业务逻辑
    • 三种企业bean
      • Session beans
      • Entity beans (在Java EE 5中被Java persistence API entities取代)
      • Message-driven beans
  • Java Servlet
  • JavaServer Pages
  • JavaServer Pages Standard Tag Library (JSTL, new in Java EE 5)
    • 封装了对许多JSP应用来说通用的核心功能。
    • JSTL有迭代和条件Tag,可以处理流程控制;有处理XML文档的Tag;有用于国际化的Tag;有使用SQL访问数据库的Tag;及一些经常使用的功能。

Java EE APIs (2)

  • JavaServer Face (JSF, new in Java EE 5)
    • 是一个创建Web应用的用户界面框架
    • 主要组件包括
      • 一个GUI组件框架
      • 用于在不同的HTML或各种标记语言和技术下渲染组件的柔性模型
      • 一个用于生成HTML/4.01标记的标准RenderKit
  • Java Message Service (JMS)
    • Java EE应用组件创建、发送、接收和读取消息的消息通信标准
    • 支持分布式通信,具有松散耦合、可靠、异步的特征
  • Java Transaction API (JTA)
    • JTA提供了划分事务的标准接口,UserTransaction接口是核心
    • 大多数情况下使用容器管理的事务,而不是JTA
  • JavaMail API
    • 发送email通知的API
    • 包括:一个应用级的接口;和一个服务提供者接口

Java EE APIs (3)

  • JavaBeans Activation Framework (JAF)
    • JavaMail使用它,如处理MIME编码的邮件附件;
    • 确定任意数据片断的类型;
    • 封装对其访问;
    • 发现其可用操作;
    • 创建可以执行这些操作的合适的JavaBean组件。
  • Java API for XML Processing (JAXP)
    • 支持使用DOM、SAX和XSLT处理XML文档
    • 支持使用任何XML兼容的解析器和XSL处理器
    • 支持W3C XML Schema
  • Java API for XML-Based RPC (JAX_RPC)
    • 使用SOAP标准和HTTP,可以在Internet上实现基于XML的远程过程调用
    • 支持WSDL,可以输出和输入WSDL文档
    • 可与运行在Java和非Java平台上的web服务客户端和服务器端实现互操作

Java EE APIs (4)

  • Java API for XML Web Services (JAX_WS, new in Java EE 5)
    • 是JAX-RPC的升级
    • 使用JAXB API绑定XML数据到Java对象
    • 引入了面向消息的功能,支持异步编程模型
    • 支持SOAP1.2
    • 可直接使用 XML/HTTP 绑定
  • SOAP with Attachments API for Java (SAAJ)
    • 是一个底层API
    • 允许生成和使用符合SOAP1.1和SOAP附件规范的消息
    • 一般不会直接被使用,而是使用JAX-RPC、JAX-WS

Java EE APIs (5)

  • Java API for XML Registries (JAXR)
    • 支持ebXML注册和存储标准
    • 支持UDDI规范
  • Java EE Connector Architecture (JCA)
    • 用于开发资源适配器
    • 基于Java EE的Web服务与已有EIS间同步或异步集成,这种集成是面向性能的、安全的、可扩展的、基于消息的、和事务的
  • JDBC API
    • 用Java编程语言的方法调用SQL命令
    • 分成两部分
      • 应用级接口 → 应用组件访问数据库
      • 服务提供者接口 → 将JDBC驱动程序绑缚到Java EE平台上

Java EE APIs (6)

  • Java Naming and Directory Interface (JNDI)
    • 提供目录和命名功能
    • 允许Java EE应用程序发现和获得任意类型的对象
    • 与实现无关,可以访问多种已有的命名和目录服务
    • 使用javax.naming.InitialContext对象在java:comp/env名字下查找对象
  • Java Authentication and Authorization Service (JAAS)
    • 鉴别和授权特定用户或用户组运行Java EE应用

Java EE APIs Example

猜你喜欢

转载自blog.csdn.net/w7239/article/details/85011053