Java EE的基本原理及 构件开发技术 哈尔滨工业大学计算机学院 唐好选

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

1 Java 语言程序设计 计算机系 鲍金玲. 2 引子 甲骨文 甲骨文是全球最大的信息管理软件及服务供应商,成立于 1977 年,公司总部 设在美国加利福尼亚州的红木城( Redwood Shores ),全球员工达 名, 包括 名开发人员、 7500 多名技术支持人员和.
程序设计语言基础 软件工程系 秦晓燕. 课程目标 了解面向对象程序设计的思想,以及软件 开发流程。 学习 Java 语言的基本概念和编程方法,基 本掌握 Java 类库的使用。 能够利用所学的方法开发简单的小型应用 程序.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
面向侧面的程序设计 方林博士 本文下载地址:
高级服务器设计和实现 1 —— 基础与进阶 余锋
第16章 代理模式 Website:
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Java程序设计教程 第一讲 Java概述.
基于SSH的web开发 AND 企业级WEB应用开发新技术
《Java程序设计之网络编程》 教学课件 重庆大学计算机学院
北京科技大学天津学院 信息工程系 面 向 对 象 程 序 设 计 第1讲 Java初探 主讲:于静.
第一页是课程的标题 Spring入门示例.
J2EE Struts 和Spring 的区别.
建设数字化的卫生监督体系 深 圳 市 卫 生 监 督 所 2006年4月.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
第1章 java简介及环境搭建 第1章 Java简介及开发环境搭建.
在PHP和MYSQL中实现完美的中文显示
Topics 應用架構 學習路徑 熱門議題 相關認證.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
J2EE 培训课程.
Arena System Technology Architecture 系统技术架构 1、Database V2(Lotus Notes)V3(Oracle8i) 2、Application Server SilverStream2.53 (Java as server side programming.
第五章 信息与系统集成技术 概述 数据流集成技术 信息流集成技术 信息管理集成技术 流程重组与业务流程集成 企业门户集成 企业集成架构
J2EE Course 2018/11/20.
SVN的基本概念 柳峰
第二讲 搭建Java Web开发环境 主讲人:孙娜
面向对象建模技术 软件工程系 林 琳.
R in Enterprise Environment 企业环境中的R
高级Web技术 复 习.
存储系统.
大学计算机基础 典型案例之一 构建FPT服务器.
管理信息结构SMI.
SQL Injection.
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
Visual Studio Team System 简介
Windows网络操作系统管理 ——Windows Server 2008 R2.
Java手机游戏设计实验指导. Java手机游戏设计实验指导 概述 实验的重要性 分析问题 解决问题 动手实践 实验要求 独立完成 开放性.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
PaPaPa项目架构 By:Listen 我在这.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
01.Java语言概述 讲师:复凡.
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
第1章 Java语言概述 学习目标 本章要点 上机练习 习 题.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
98專題報告 行動裝置應用實例 -個人名片管理助手程式
Chapter 18 使用GRASP的对象设计示例.
李青樺 陳筱綺 郭沛翎 黃斐琪 蔡佳娟 指導老師 : 葉佳益老師
OpenStack vs CloudStack
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
WEB程序设计技术 数据库操作.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
1 Web基础知识 1.1 HTTP协议 1.2 Web服务器和浏览器 1.3 C/S模式与B/S模式 1.4 Web的访问原理
Presentation transcript:

Java EE的基本原理及 构件开发技术 哈尔滨工业大学计算机学院 唐好选 Email:tanghx@hit.edu.cn

基本内容 Java EE概述 EJB技术 基于EJB构件的开发过程 三种构件模型的关系

J2EE概述

Java平台的发展 J2SE (Java2 Platform, Standard Edition) 用于桌面程序和Java小程序开发 称为J2SDK,简称JDK J2EE (Java2 Platform, Enterprise Edition) 用于企业级开发 称为J2SDKEE J2ME (Java2 Platform, Micro Edition) 用于手持设备的开发(手机和PDA) JRE (Java Runtime Environment)

Java平台的发展

Java EE的发展 J2EE 1.0 1999年发布 J2EE 1.2 2000年发布 J2EE 1.3 2001 年发布 J2EE 1.5 2005年发布,即Java EE Java EE 1.6 2009年发布 Java EE 1.7-2013年发布,最新版

Java EE 1.7的核心组件

Java EE 应用架构示例(1)

Java EE 应用架构示例(2)

Java EE核心技术 浏览器 Applet 应用程序 客户机 RMI JSP/JSF Servlet 表示层 专业服务层 遗产系统 数据库 Web/HTTP服务器 JSP/JSF Servlet 表示层 应用服务器 EJB Java IDL J N D I M S P A 专业服务层 遗产系统 数据库 分布式 CORBA对象 后端系统

Java EE核心技术(1) EJB(Enterprise Java Bean) 提供了让客户端使用远程的分布式对象的框架 EJB规约规定了EJB构件如何与EJB容器进行交互 EJB容器提供了 目录服务、事务管理、安全、连接池管理和容错服务等 RMI ( Remote Method Invocation)和RMI-IIOP 是EJB构件和客户端的通信API 允许进程间通信并提供其它与通信相关的服务 RMI-IIOP是一个可移植的RMI扩展,利用IIOP作为通信协议

Java EE核心技术(2) JNDI(Java Naming and Directory Interface) 是命名和目录服务的标准 实现对对象的命名,包括Web组件、EJB组件、数据库系统等 对象的名字通过命名和目录服务绑定到具体对象 EJB依赖JNDI通过网络查找分布式构件 在Java EE环境下,任何构件必须在JNDI服务器注册 JPA(Java Persistence API),用于对象持久化的API,JPA本质上就是一种ORM规范,JPA未提供ORM实现,只制订了一些规范,提供了一些编程的API接口,具体实现由服务器厂商提供 支持XML和注解 通过面向对象而非面向数据库的查询语言查询数据,避免程序的 SQL语句紧密耦合。

Java EE核心技术(3) JTA (Java Transaction API) JTA是一个高层次的事务处理接口 JMS( Java Message Services) 是与消息驱动构件通讯的API 同时支持点对点消息队列服务和发布-订阅消息服务 支持可靠消息传递、消息传递事务及持续消息等, 是EJB消息驱动Bean的基础

Java EE核心技术(4) JSP(Java Server Page)和 Servlet 技术 服务器端的程序 用于扩展服务器的功能,响应用户的请求 可将结果转化为标准的HTML代码返回给用户 JSF(Java Server Faces) 用于构建Web应用程序的新标准Java框架 提供一种以组件为中心来开发Java Web用户界面的方法 将Web应用开发者划分为三个角色:网页设计人员;应用程 序设计人员;UI组件开发人员

Java EE核心技术(5) WebSocket API 是下一代客户端-服务器的异步通信方法,取代了单个TCP套 接字,可用于任意的客户端和服务器程序,由W3C进行标准化 WebSocket API可使服务器和客户端可以在给定的时间范围内 的任意时刻,相互推送信息 WebSocket并不限于以Ajax(或XHR)方式通信,服务器和客 户端可以彼此相互推送信息,WebSocket允许跨域通信  Java IDL/CORBA 是CORBA规约的一种Java实现 通过Java IDL可以让Java对象发布到CORBA的ORB上 从而通过ORB与别的CORBA对象进行交互

Java EE核心技术(6) Interceptors(拦截器) 是在访问某个Action或Action的某个方法,字段之前或之后实施 拦截,拦截器是可插拔的,是AOP的一种实现 JAF(Java Activation Framework)/ Java Mail 是一套允许在Java程序中以与平台无关、协议无关的方式发送 电子邮件的API JavaMail可利用JAF处理邮件的编码 XML( 可扩展标记语言) 是一种描述数据的元语言 Java中用JAXP( Java API for XML Parsing)对XML文件进行解析 EJB通常将XML作为元标记语言表达内容

EJB技术

EJB技术 EJB简介 EJB体系结构 EJB编程模型 EJB构件接口 构件规约 构件分类 EJB构件的开发

什么是EJB? EJB不是一种产品,而是为开发和使用“基于事务和分布对象应用的服务器端构件”而定义的一种技术规约,用户可根据该规约开发EJB构件。 EJB构件是一组分布式的对象,可通过EJB容器的控制为分布在因特网上的用户提供远程服务。

什么是EJB? EJB规约定义了EJB构件与EJB容器之间的交互机制,描述了EJB构件和EJB容器在运行时的行为。例如安全访问如何检验、事务如何管理、持久性如何应用等。保证了EJB构件在容器间的可移植性 EJB容器运行在EJB服务器中,EJB规约还定义了EJB容器和EJB服务器的标准模型

EJB的目标 EJB的目标是为服务器端构件系统定义一个技术规范,该规范可实现如下要求: 提供一个标准的、分布的、基于OO的体系结构 屏蔽复杂的系统级功能需求 兼容CORBA标准 具有与非Java应用之间的互操作能力

EJB的现状-EJB3.0 EJB3.0于2006年5月随JAVA EE 5发布 EJB3.0完全抛弃了EJB 2.x实体Bean的设计,仅仅保留原有的 Session Bean和消息驱动Bean;引进了全新的JPA规范作为持久化 解决方案 简化了EJB 2.x中Session Bean的开发,Session Bean不再需要 Home接口,只要求提供远程或本地的业务接口即可 不再推荐使用XML文件作为部署描述文件,而是改为使用 Annotation来设置部署描述信息

EJB的现状-EJB3.1 EJB3.1于2009年随JAVA EE 1.6发布 允许企业Bean只提供一个Bean类,甚至无须提供业务接口 允许通过异步的方式调用Session Bean的业务方法 简化了EJB的类文件必须打包到JAR文件中的限制,允许直接将 EJB类放到WAR文件中

EJB的现状-EJB3.2 EJB3.2于2013年7月随JAVA EE 7发布 支持本地异步会话Bean调用 Java I/O访问权已放宽,用“应谨慎行事”取代了“不允许” 有状态会话bean的生命周期回调拦截方法,可以在一个事务环 境中执行(由生命周期回调方法的事务属性决定) 可以完全禁用特定的有状态会话bean的钝化 TimerService API已被扩展,可以在同一个EJB模块中查询所有 活动计时器 会话bean指定实现接口(作为本地或远程业务接口)的默认规 则已经放宽,可以包含多个接口

Java EE的应用架构-经典JAVA EE架构 以EJB为核心,前端以JSF(Java Server Faces)为MVC框架的 技术架构,这种技术架构以Sun提倡的官方Java EE技术为主

Java EE的应用架构-轻量级Java EE架构 以Spring+Hibernate为核心,前端以Struts 1或Struts 2为MVC框 架的技术架构,这种技术架构以主流的开源框架为主

Spring框架 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者 与其他一个或多个模块联合实现 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的 主要组件是 BeanFactory。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际应用程序代码分开 Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架 提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、 EJB、电子邮件、国际化、校验和调度功能 Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程 序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置 的,MVC 容纳了大量视图技术

Spring框架和EJB Spring框架实际上大量参考了EJB的设计理念,只是Spring摈弃 了EJB开发中的3大烦琐之处: (2)需要大量使用XML配置文件 (3)EJB组件必须打包成JAR包 Spring容器取代了原有的EJB容器,因此以Spring框架为核心的 应用无须EJB容器支持,可以在Web容器中运行 Spring容器管理的不再是复杂的EJB组件,而是POJO(Plain Old Java Object) Bean

EJB的体系结构 … 对象池 EJB容器 EJB服务器 EJB客户机 业务接口 Home接口 Bean代理 EJB部署描述 Bean实现 业务方法 EJB客户机 创建/删除/查找 业务接口 Home接口 Bean代理 … 对象池 EJB部署描述 Bean实现 EJB容器 EJB服务器

EJB的体系结构-EJB客户机 请求EJB构件服务的应用程序,EJB规约为创建EJB构件的客户接口定义了一套标准,主要包括: EJB Home接口:客户使用JNDI来查找对EJB Home接口的引用,为客户机创建、删除、查找EJB Remote接口对象的句柄提供了相应的操作 EJB 业务接口:通过该接口可调用构件的业务方法 RMI/IIOP或RMI/JRMP协议:客户机和容器通信的标准协议,这些底层的分布式通信机制对于EJB客户机和EJB构件开发者都是透明的

EJB的体系结构-EJB服务器 为使用EJB构件的应用程序提供操作环境,并提供所有必要的 服务来支持EJB体系结构 Java白皮书承诺:“EJB规约为每个支持Java程序的应用服务器 定义了一个标准模型,任何厂商都可以使用此模型来实现对EJB 构件的支持” EJB服务器的主要功能包括 管理EJB容器 提供对操作系统服务的访问 提供与Java相关的服务

EJB的体系结构-EJB容器 为EJB构件提供运行环境,EJB容器对EJB应用程序是透明的

EJB的体系结构-EJB容器

EJB的编程模型-关键特征 面向对象 分布式计算:EJB构件在理论上是位置透明的

EJB的边界 EJB实例 容器 EJB Server 客户机 部署描述符/ Annotation 构件合约 客户视图

EJB构件接口 构件接口是构件提供者为便于复用者(客户)复用该构件所提供的必要信息 构件与容器协作实现这些接口

EJB构件规约

EJB构件规约 EJB可使Java编写的服务器组件开发和部署标准化 EJB构件规约定义了以下接口 EJB和容器之间的接口 容器和应用服务器之间的接口 容器和客户端之间的接口 容器和持久管理器之间的接口

EJB构件分类 EJB构件分为三(四)种基本的类型 会话构件(Session Bean) 有态会话构件(Stateless Session Bean) 无态会话构件(Statefull Session Bean) 消息驱动构件(Message-Driven Bean) 实体构件(Entity Bean)

会话构件 特征: 与单个客户相对应 不直接表示数据库中的共享数据 生命周期相对较短 当EJB容器崩溃时,也随着消失 类别:Stateful (有态) Stateless (无态)

有态构件的生命周期 实例抛出系统异常 超时 @PreDestroy @postConstruct 超时 业务方法 @PrePassivate @PostActivate

无态构件的生命周期 @PostConstruct @PreDestroy 业务方法

两种会话构件的选择 Stateful ? Stateless? 过程需要保持状态? 加入过程中断,恢复运行时需要以前的信息吗?

两种会话构件的选择 发生下列情况时应该考虑使用有状态会话Bean 在方法调用时,会话Bean需要维护成员变量的数据 会话Bean正在服务一个交互客户端,EJB容器或应用服务器需要了解该客户端 发生如下情况时应考虑使用无状态会话Bean 不需要维护跨越方法调用的成员变量中的数据 会话Bean提供的服务并不针对某种客户端

消息驱动构件(MDB) MDB是一种JMS消息的使用者,MDB负责从消息队列或者消息主题中读取消息 MDB的输入参数只有一种类型,即消息对象,是那些实现了Message接口的Java对象 生命周期由EJB容器控制 客户端和MDB是完全独立的,客户端无法直接调用MDB方法,而是由消息服务器负责把消息发送给MDB 无状态

消息驱动构件(MDB)

MDB的生命周期 @PostConstruct @PreDestroy

MDB常用开发模式 客户端可直接调用Session Bean,发布消息到主题 MDB接收并处理消息

EJB构件开发与应用

EJB构件的开发(SessionBean) 业务接口(Business interface):定义EJB构件的逻辑方法 Bean类(Bean class):实现主要的业务逻辑 EJB客户机 Business接口 Bean1 EJB容器 Bean2 Business 接口

开发SessionBean 开发一个 SessionBean,需要定义接口和 Beanclass;其中接口 分为远程(remote)和本地(local)接口 远程接口(remote interface)定义业务方法,可以被来自 EJB 容器之外的应用访问到 本地接口(local interface):同样定义了业务方法,可以被同 处于 EJB 容器内的其它应用使用。因为 local 接口允许 bean 之 间直接通过内存交互,没有分布式对象协议的开销,从而改善 了性能 Bean 类包含了业务逻辑,必须具备一个远程或本地接口, Bean类应实现接口的业务方法。在 EJB3中,不要求同时实现 remote 和 local 接口,但实现两者是比较好的做法

开发SessionBean第一步 第一步:定义一个包含业务方法的接口。该接口不需要包含任何注释,是一个普通的 java 接口。调用 EJB的客户端使用这个接口引用从 EJB 容器返回的存根(stub)

开发SessionBean第二步 第二步:编写BeanClass

SessionBean的客户端开发 public static void main(String[] args) { Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "localhost:1099"); try { InitialContext ctx = new InitialContext(props); HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); System.out.println(helloworld.sayHello(“哈工大")); } catch (NamingException e) { System.out.println(e.getMessage()); }

EJB的调用机制 1、客户端调用远程接口方法(实际上调用存根对象的方法) 2、方法调用经过转换成CORBA IIOP消息发往应用服务器 3、应用服务器接收到请求消息后,交由骨架处理。骨架调用bean实例的方法 4、骨架将方法返回值转换成CORBA IIOP应答消息发回客户端 5、存根对象将CORBA IIOP应答消息解析成返回值

三种构件模型的关系

EJB 与CORBA CORBA是目前分布式对象处理事实工业标准,大部分厂商都 支持CORBA标准,同样,EJB规范中也考虑对CORBA的支持 CORBA客户机(用CORBA支持的语言写的程序)可以存 取基于CORBA的EJB服务器上的构件 客户机在一个事务过程中可以同时调用CORBA和EJB对象 事务可以同时利用多个由不同开发商提供的,基于CORBA 的EJB服务器

COM 与 EJB的相同点 基本形态相同, 可以独立封装,并可以动态加载 在运行过程支持接口 都对构件进行生命周期管理 构件的运行环境包括众多的公共服务

COM 与 EJB的区别 支持环境的实现不同 EJB的支持环境运行于操作系统之上,体现了一种大粒度 的模块化思想 COM的支持环境与操作系统密切相关,COM的支持环境 是操作系统的一部分 支持的语言不同 EJB 仅支持Java语言 COM 支持C、C++、Basic等 构件生命周期的实现方式不同 EJB 主要通过容器实现,独立于具体的构件实现 COM 主要通过类厂实现,与具体的构件实现一一对应

The End!