主要内容
- 分布式多层应用
- 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客户端 → thin client
-
服务器通信
- Web组件
- Servlet
- Servlets are Java programming language classes that
dynamically process requests and construct responses.
- Servlets are Java programming language classes that
- JSP
- JSP pages are text-based documents that execute as servlets but allow a more natural approach to creating static content.
- JavaBeans (optional)
- Servlet
- 业务组件
- 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.
-
- Session beans
- 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
-
- EJB模块
开发角色
- 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 Product Provider
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应用
网友评论