J2ee简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J2EE 简介
计算机与信息学院
2010.5
声明

•本课件为计算机与信息学院硕士研究生课程专用;
•本课件为非正式出版物,仅供选课同学参考,不得外传。

如有不当之处,欢迎指正、交流;
•在制作本课件的过程中,参阅了大量的学术论文、论著和教材,有些没有一一列举,对它们的作者表示真诚的感谢。

工程硕士课程J2EE
软件体系结构
J2EE概述
J2EE提供的服务
J2EE技术特征与优势
J2EE的未来发展
1 J2EE概述
J2EE——Java 2 Enterprise Edition
⏹J2EE起源
☟发起者:Sun公司在1997年度Java One大会上发布的。

☟目的:为开发和部署企业级Web应用制定标准。

通过J2EE,Java语言与工具得以延伸到那些
复杂的、多层的电子商务和企业级应用当中。

⏹J2EE含义
☟J2EE是针对Web服务、业务对象、数据访问和消息传送的一组规范。

这组应用编程接口
(API)确定了Web应用与驻留它们的服务器
之间的通信方式。

☟J2EE对于组件模型的开发提供广泛的支持,且对以模块化、可重用、平台独立组件的方
式构建业务逻辑方面提供相应的工具与服务。

建立标准,使Web应用的部署与服务器无关;
使服务器能控制组件的生命周期和其它资
源,以便能够处理扩展、并发、事务处理
管理和安全性等问题。

⏹J2EE构成
☟J2EE平台规范:定义了一个J2EE服务器端平台供应商所必须遵守的规范,与其它规范的协同机制,即APIs和策略。

☟J2EE应用程序编程模型:一个标准的开发多层、瘦客户端应用程序的编程模型。

工程硕士课程
软件体系结构
J2EE体系结构
数据逻辑(数据层)
HTML 客户
WEB 服务器
业务逻辑(业务层)
显示逻辑(表示层)
Java Applet
CORBA 客户
JSP
Servlet Java 应用程序
HTTP
应用服务器
IIOP
RMI-IIOP
RMI-IIOP
EJB Session Bean
连接器connector
EJB Entity Bean
用其它语言编写的程序
CORBA 代理
RMI-IIOP
数据库
现有系统遗留系统ERP 系统
JDBC
J 2E E
对象模型
软件体系结构
工程硕士课程
J2EE —J2EE 概述
☟J2EE 兼容性测试环境:用于验证J2EE 平台产品是否与J2EE 平台标准兼容的一整套兼容性检测组件。

☟J2EE 参考实现:J2EE 规范的完整实现,证明了J2EE 规范的可实现性,并可以直接供应开发人员进行开发。

2 J2EE 提供的服务
⏹显示逻辑
⏹数据连接
⏹事务支持⏹企业级Java 组件(EJB )
⏹Java 接口定义语言(IDL)
⏹通信机制⏹XML ⏹安全
显示逻辑
在J2EE应用中,显示逻辑用来负责将客户端应答交给某一请求的服务器端代码。

例如,客户端的显示逻辑可以是“当请求收到时报告现在时间”一类。

编码服务器端显示逻辑可以采用Java Servlets、JSP、JavaBean以及标记(Tag )库。

HTML页面
在Web应用的交互过程中,每一步的输入或者是一个静态的HTML页面,或者是一个由前面一步产生的动态HTML页面。

这些HTML页面包含一个或多个表单,这些表单将为下一步的交互激活Servelt。

输入的数据可以在浏览器端通过HTML页面中的JavaScript进行验证,或者发给服务器后由Servelt来验证。

Java Servelt
Java Servlets为接受来自于Web浏览器端的HTTP请求并且返回HTTP应答的服务器端技术,Servelt是使用Java Servelt应用程序设计接口及其相关类和方法的Java程序。

Servlets是一项定义显示逻辑开发方面的企业级Java标准,具有跨服务器平台的特性,可以满足平台之间无缝兼容。

Java服务器页面(JSP)
JSP是一种基于Java的脚本技术,它提供与servlets同样的功能,只是其开发接口比servlets更容易使用。

JSP通常是在大多数HTML代码中嵌入少量的Java代码,而servelts全部由Java写成并且生成HTML。

JavaBean
JavaBean是一个开放的标准组件体系结构,它独立于平台,但使用Jav a语言。

一个JavaBean组件(类),在J2EE应用中用它来封装来自于数据库中的数据,或者进行显示或者进行操作。

开发人员创建带有若干个方法的类文件,这些方法典型地用来获得或设置某些值。

⏹数据连接
☟Java数据库连接(JDBC)
JDBC是数据库连接方面的Java标准。

JDBC规范由一系列标准的Java API的集合来提供连接数据库所需要的所有事情。

厂商提供JDBC 驱动器,映射标准Java API集到底层数据库的那些特定的接口。

客户端JDBC驱动程序Java数据库连接
数据库
☞JDBC提供的功能
用来修改数据库的API:此类操作包括SQL更新和管理命令。

通过建立SQL查询语句从数据库中读取数据的API:此类查询返回ResultSet Java对象,返回JDBC数据库查询的结果。

这些对象使得J2EE开发人员可以编程访问(通过标准API)由某一给定的SQL查询返回的那些值。

支持基本的事务:JDBC提供针对简单SQL语句的自动提交。

因此,一个简单的单个方法调用可以直接将一个SQL语句传递给数据库,并且修改自动提交到数据库中。

支持复杂的事务:JEEE应用服务器提供一个称作JTA的服务,通过它来提供开始事务的能力且可以跨越J2EE服务和JEEE应用服务器之间进行传播。

☞JDBC驱动器类型
JDBC-ODBC 桥,与JDK一起配合。

借助它,可以将应用与任何ODBC源连接在一起。

JDBC本地驱动程序桥:驱动程序借助本地库与关系数据库通信,例如在Oracle中是OCI库。

这意味着必须在客户端上提供本地库。

JDBC网络桥:驱动程序是多层的,即驱动程序位于客户端和RDBMS中间。

它建立与RDBMS的连
接,是所有请求和响应的通道。

客户端只需加
载纯Java就能与第三种驱动程序通信。

纯Java驱动:驱动程序与第二种驱动程序相似,但它不使用本地库,而是借助专用协议直接与
RDBMS通信。

事务支持
J2EE事务处理模型可以在部署过程中定义组成一个事务处理的方法之间的关系,以便事务处理中的所有方法可以作为一个整体存在。

用户一定希望完成这一任务,因为事务处理是一系列步骤,要么全部执行成功,要么全部回滚。

Java事务处理API(JTA)
Java事务处理服务(JTS)
分布式事务处理(DTP)
事务服务就是协调跨越多个系统的这些相关联的事务,而且以接近实时的方式同时更新它们。

分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生一致的结果
(全部提交或全部回滚)。

XA与两阶段提交协议
XA就是X/Open DTP定义的事务管理器与数据库之间的接口规范(即接口函数),事务管理器用它来通知数据库事务的开始、结束以及提交、回滚等。

XA接口函数由数据库厂商提供。

通常情况下,事务管理器与数据库通过XA 接口规范、使用两阶段提交来完成一个全局事务。

XA规范的基础是两阶段提交协议。

第一阶段:事务管理器请求所有相关数据库准备提交(预提交)各自的事务分支,以确认是
否所有相关数据库都可以提交各自的事务分支。

对已经预提交的事务,数据库将不能继续在该
事务分支中加入任何操作,但此时数据库并没
有真正提交该事务,数据库对共享资源的操作
还未释放(处于上锁状态)。

第二阶段:事务管理器审查所有数据库返回的预提交结果。

如果所有数据库都可以提交,事务管理器将要求所有数据库做正式提交,这样该全局事务被提交。

而如果有任一数据库预提交返回失败,事务管理器将要求所有其它数据库回滚其操作,这样该全局事务被回滚。

以一个全局事务为例。

Step1:AP通知事务管理器开始一个全局事务。

Step2:事务管理器通过XA接口函数通知数据库开始事务,然后AP可以对数据库管理的
资源进行操作。

Step3:数据库系统记录事务对本地资源的所有操作。

操作完成后事务管理器通过XA接
口函数通知数据库操作完成。

Step4:事务管理器负责记录AP操作过哪些数据库(事务分支)。

Step5:AP根据情况通知事务管理器提交该全局事务。

Step6:事务管理器会通过XA接口函数要求各个数据库做预提交,所有数据库返回成功
后要求各个数据库做正式提交,此时一
笔全局事务结束。

XA规范对应用来说,最大的好处在于事务的完整性由事务管理器和数据库通过XA接口控制,AP只需要关注与数据库的应用逻辑的处理,而无需过多关心事务的完整性,应用设计开发会简化很多。

如果没有事务管理器,应用系统需要在程序内部直接通知数据库开始、结束和提交事务,当出现异常情况时必须由专门的程序对数据库进行反向操作才能完成回滚。

事务处理
协调者
Java事务处理
服务
Java事务处理API
事务处理
管理者
资源管理者
数据持久
存储客户端
JTA和JTS
JTA (Java Transaction API)
JTA是一个高级事务处理接口,应用程序用来控制事务处理。

JTA给予Web应用开发人员访问数据库系统或任何遗留数据存贮中的事务功能。

事务通过协调单个数据库和多数据库操作来确保所有的数据资源保持精确型和一致性,并且那些对数据库的操作是可以重复和持久的。

JTA组件都定义在javax.transaction和javax.transaction.xa包中。

JTA定义了一个对于分布式应用的资源管理器的高级别事务管理规范,包括JTA事务管理、JTA XA资源管理和JTA应用程序接口。

☞事务处理接口:允许事务处理定界。

完成工作的方式是分布式组件由全局事务处理登记。

这种方法可以使多组操作组成一个事务处理。

☞XA 资源接口:基于能处理分布式事务处理的X/Open/XA接口,有时也称为两阶段提交事务处理,需要多种资源之间的协调,如数据库
或序列。

JTS (Java Transaction Service)
JTS是CORBA OTS事务监控的基本实现。

在高层支持JTA规范,在较底层实现OMG OTS specification的java映像。

主要作用是为
应用服务器、资源管理器、独立的应用以及通信资源管理器提供服务。

通信机制
使应用程序可以分布式通信,是建立企业信息系统的基本要求,以分布式服务器模式提供服务或连接分布式服务器的服务作为一个分布式客户程序。

J2EE中提供了三种机制:
JNDI、RMI、JMS
Java命名和目录接口(JNDI)
由于J2EE应用的组件可以独立运行,而且通常是在不同设备上运行,因此客户端和应用服务器层代码必须以某种方式查找和参考其它代码和资源。

JNDI就是一项用来中心注册命名和目录服务的Java标准。

JNDI可以用于当前各种类型的命名系统。

JNDI也可以用于命名和引用位于一个特定的命名系统之外的对象。

软件体系结构
工程硕士课程JNDI SPI(Service Provider Interface)
CosNaming Service File
System LDAP Service RMI Service Other Service
CORBA Naming SPI File
System SPI
LDAP SPI RMI SPI Other SPI JNDI Naming and Directory Managers
JNDI API
JNDI Application JNDI 体系结构
命名对象:在一个命名服务可以被利用之前,客户需要获取初始JNDI上下文的句柄。

名字现在可以绑定到对象,对象可以利用标准的
JNDI接口相对于这个上下文进行查找。

名字有一个语法,可以通过使用常规的Java字符串对象或者使用JNDI操作,也可以使用JNDI执行。

可引用对象:可引用对象是指该对象的一个引用可以存储在JNDI服务之中,其中要告诉JNDI
如何将对象自身与该对象的查找关联在一起的
信息。

当一个并不属于任何特定的命名系统中的对象为了方便查找起见而绑定到一个命名系统中时,或者当一个命名系统中的对象需要绑定到一个
完全不同的命名系统中时,应采用可引用对象。

在JNDI中,目录结构中的每一个结点称为context,每一个JNDI名字都是相对于context 。

这里没有绝对名字的概念存在。

对于一个应用来讲,它可以通过使用InitialContext类来得到其第一个context:
Context ctx=new InitialContext();
☞JNDI类库
javax.naming:包含需要访问多种命名服务的Java应用程序使用的所有核心JNDI API。

javax.naming.directory:包含执行更加复杂的目录服务功能的JNDI API类,这些目录服务扩展了基本的命名服务功能。

javax.naming.event:包含为命名和目录系统提供事件通知的JNDI API类和接口。

javax.naming.ldap:包含了JNDI API类和接口以特别地支持LDAP v3中更高级的管理
特性。

javax.naming.spi:包含了实现SPI的JNDI SPI类和接口,SPI将标准的JNDI API 调用
映射为特定的命名服务或目录服务。

☞JNDI功能
满足了一种基本的分布式企业通信需求,它可以在上下文中的名字和对象引用之间映射。

可用来对那些命名的应用与数据对象进行中心注册。

JNDI服务帮助确保应用组件名字的
唯一性,并且帮助预防、诊断和处理可能引
起的命名冲突。

目录服务
录服务是一种在不同的命名上下文中查找对象的方法(给定了一组属性),提供了执行更加复杂的搜索对象的能力。

目录服务搜索基于对象属性同时利用搜索过滤器标准和搜索控制。

如果说命名服务提供了一种电话白皮书的方法把名字和对象关联在一起,那么目录服务就提供了一种电话黄页的方法关联对象感兴趣的属性。

目录服务的实现方法:目录服务一般有一种分层结构,其中一个目录对象在某个目录结构中
有一个上下文。

所以每个上下文将包含零个或
多个子上下文和零个或多个已命名的目录对象。

为了搜索一个特定用户,目录服务首先要利用
特定的用户名和地理位置形成一个查询。

该查
询返回的结果可能包含一个或多个匹配这个标
准的目录对象,其中每一个对象都有一组属性。

目录服务的作用:目录服务可以用在许多分布式企业应用程序中,其中对于其它分布式对象
有用的一组分布式对象或者信息可以被注册、
解除注册和基于描述性的属性进行查询。

例如,安全证书、DNS打印和网络服务和NIS系统信息
等LDAP目录都是使用目录服务的例子。

远程方法调用(Remote Method Invocation )
RMI是Java应用用来调用远程对象的方法,是Java内置的分布式对象计算模型,也是一项Java标准。

用Java RMI开发的应用系统可以部署在任何支持Java运行环境的平台上,使得远程对象虚拟成就好象它们对应用来说在本地一样。

RMI为分布式应用提供与远程客户端通过远程方法和服务进行操作的框架,允许RMI调用的远程主机公布远程对象的那些方法。

对象可以定位在跨越网络或可能跨越J2EE应用服务器(如WebLogic)群集中的另一应用服务器的实现之上。

RMI 体系结构Remote Reference Layer
RMI Transport Layer (TCP 协议)Internet Protocol (IP)
RMI
Interface
RMI Stub RMI Skeleton RMI
Client
RMI Server 解析RMI 服务器位置、初始
化连接和激活
远程服务。

负责连接管理并且提供点到点之间可靠的
数据传输。

相关文档
最新文档