




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JavaEE概念与体系结构概念与体系结构2013-07-16基础平台产品部基础平台产品部:李冲李冲通过学习通过学习: : 参加培训人员在完成培训以后,能够了解利用参加培训人员在完成培训以后,能够了解利用Java EEJava EE进行大型应用系统开发的优势;进行大型应用系统开发的优势; 参加培训人员在完成培训以后,能够熟悉参加培训人员在完成培训以后,能够熟悉Java Java EEEE的基础概念和体系架构,对于一个的基础概念和体系架构,对于一个Java EEJava EE工程能够清晰的表述其组织构成;工程能够清晰的表述其组织构成;Java EE概述概述Java EE产生的背景和概念产生的背景和
2、概念企业级应用程序体系结构企业级应用程序体系结构Java EE体系结构体系结构Java EE基础技术标准基础技术标准 JavaBEAN, JDBC, JNDI, RMIJava EE进阶技术标准进阶技术标准Servlet / JSPJAFJavaMail进一步说明进一步说明Java EE事务处理分析事务处理分析JNDI的扩展使用的扩展使用内容提要内容提要EJBJTAJMSJAASWebService其他技术标准其他技术标准RMI与与CORBA123Java EEJava EE产生的背景产生的背景 1995年 ,Sun公司推出Java技术。 十多年来,已发展成为全球第一大软件开发平台,是长时间以
3、来最卓越的程序设计语言。 特点:跨平台、面向对象、多线程、半编译半解释等 1999年,Java从一种语言发展成为一种开发平台 ,出现Sun ONE体系结构,以Java语言为核心,包括以下三个版本:J2SE StandardJ2ME MicroJ2EE Enterprise 2005年8月, Java升级到1.5版,SUN公司将Java EE 1.5改名为java EE 5,以前J2EE版本还是称为J2EE。java语言的发展语言的发展 Java EE不是编程语言! Java EE是一个标准中间件体系结构 Java EE是企业级分布式应用开发标准 Java EE定义定义在传统的开发模式(单层应用
4、结构)下,应用普遍存在以下致命缺点:- 数据、页面和业务逻辑在一个逻辑层次中,功能紧密耦合;- 代码重用性极低,可维护性差;- 应用耦合度高,完全没有可扩展性;- 任何一个细小功能的更新,需要对整个应用进行重新部署;- 后台数据结构的改动,将导致所有相关代码的改动;- 数据库连接管理是个很大的瓶颈;因此,在很长一段时间内,导致企业级应用开发过程一直存在着以下瓶颈:- 应用与功能的分布式;- 功能模块的可移值性与可重用性;- 快速的WEB页面的开发;- 应用逻辑层次的分离,避免耦合;- 功能的安全性与事务性;- 可扩展与可维护性;Java EE的意义的意义 分布式 高速反应性 安全性 事务性 可
5、扩展性、可移植性、易维护 集成化Java EE的意义的意义-企业应用程序的特点企业应用程序的特点企业应用的特点(分布式、面向web、开发的、集成的、可移植、易于扩展和维护,企业计算具有一致性、事务性、安全性等)决定了企业应用的体系结构:- 分布式的、可移植组件的框架与结构;- 简化服务端中间件的设计(包括事务处理,安全性等等);- 为组件、应用、以及服务端提供标准、开放的API,开放的、基于标准的平台; - 开发、部署与管理N层结构、面向WEB、以服务器为中心的企业级应用体系;JavaEE集上述特性为一身!Java EE的意义的意义-企业应用程序的特点企业应用程序的特点客户层客户层(人机交互(
6、人机交互/ /应用逻辑应用逻辑/ /数据访问)数据访问)服务层服务层(数据服务)(数据服务)客户端应用程序客户端应用程序数据库服务器数据库服务器企业级应用程序体系结构企业级应用程序体系结构C/S单层结构单层结构客户层客户层(表示逻辑)(表示逻辑)数据层数据层(数据服务)(数据服务)数据库服务器数据库服务器浏览器浏览器 应用服务层应用服务层(业务逻辑)(业务逻辑)应用服务器应用服务器数据库服务器数据库服务器企业级应用程序体系结构企业级应用程序体系结构B/S两层结构两层结构中间服务器又按应用逻辑划分成若干子层 应用服务器应用服务器Web表示层表示层客户层客户层数据层数据层(数据服务)(数据服务)数
7、据库服务器数据库服务器浏览器浏览器业务逻辑层业务逻辑层.企业级应用程序体系结构企业级应用程序体系结构多层结构多层结构Java EE架构图:Java EE体系结构体系结构整体架构整体架构Java EE体系结构体系结构 J2SE结构结构一个典型Java EE应用结构图:Java EE体系结构体系结构应用结构应用结构 Web 服务器服务器客户客户客户层客户层业务逻辑层业务逻辑层企业信息系统层企业信息系统层数据层数据层数据库服务器邮件服务器浏览器浏览器HtmlApplet Web 服务器服务器表示层表示层(web层层)客户端应用程序客户端应用程序EJB 容器JSPServlet会话Bean实体Bean
8、消息Bean应用服务器应用服务器数据库服务器数据库服务器ServletJava EE体系结构体系结构 Java EE的多层架构的多层架构JavaEE规范被众多中间件厂商所实现,不同厂家有不同的实现,但都遵循同一JavaEE规范,可以互相部署开放性。 支持JavaEE的厂商和应用服务器Sun 公司: Sun One 服务器 Netbeans自带的GlassfishV2 服务器内置Applicaition ServerBEA的weblogicIBM的WebSpereJBoss 开发环境NetBeans(内置应用服务器GlassFishV2)+MySQLEclipse+MyEclipse+Tomca
9、t+MySQLEclipse+MyEclipse+Jboss+MySQL 支持EJBJava EE体系结构体系结构 Java EE容器厂商容器厂商组件:JavaEE基本的软件单元面包容器:分布式组件的运行环境 烤箱 容器为组件提供必需的底层基础功能服务 javaEE的容器由厂商实现,javaEE服务器中均包含Web容器和EJB容器的实现 如JDNI服务、JDBC、JMS、持久化、事务支持、并发、安全性、资源和生命周期管理 程序员根据特定应用需求编写组件,专注于业务逻辑 而不必困扰在复杂的企业应用环境这些由容器实现了面包师:面包是什么配比,什么馅的,什么形状的,口味如何,多高温度,多久不用管烤箱
10、的安全防护机制、容量,电、温度的转换、定时器的控制 都是烤箱的事,而烤箱的控制是厂家实现的Java EE体系结构体系结构 Java EE组件和容器组件和容器Java EE体系结构体系结构容器及类型容器及类型容器容器是Java EE的运行环境,这种环境是为应用组件服务的例如web容器四类容器 EJB容器 Application Client容器 Web容器 Applet容器Java EE容器事务状态管理多线程资源池复杂的底层细节容器服务安全事务管理JNDI远程连接可配置的服务:如安全性不可配置的服务 EJB和Servlet的生命周期、数据库连接池 数据持久性、Java EE平台APIJava E
11、E体系结构体系结构JavaEE容器服务与接口容器服务与接口Java EE基础技术标准基础技术标准JavaBEANJDBCJNDIRMI严格的说,JavaBEAN与JDBC,是J2SE的规范与标准,在Java EE中得到了更好的扩展;先来了解一下JavaBEAN: - JavaBEAN是在编程环境中能够被可视化处理的可重用组件;这里所指编程环境包括:IDE(如Eclipse)等;一个JavaBEAN简单来说就是一个Java类,只有遵守了JavaBEAN的技术规范,才能被称之为JavaBEAN,规范如下: - 该类必须为公共类,并且可序列化,即实现java.io.Serializable接口; -
12、 若有构造函数,必须是无参的,类中不能出现main函数; - 所有属性必须通过set,get方式来操作(如setName,getName,若是布尔型 则使用isName),所有属性都必须是私有的(private),这种方式称为setters 与getters方法对; - 包含必要的事件处理方法;(若不需要事件机制,可忽略)Java EE基础技术标准基础技术标准 JavaBEAN结合JavaBEAN规范,可以将JavaBEAN的元素归纳为:属性、方法、事件;JavaBEAN属性有4种类型: - Simple属性:表示具有setter与getter方法对的属性(field); - Indexed属
13、性:表示数据值,同样具有setter与getter,可设置或获取数组中的 某个值,也可以一次设置或获取整个数组; - Bound属性:属性值发生变化时,会触发其他相关的JavaBEAN,至于被触发 的JavaBEAN应做什么动作,由其自己定义; - Constrained属性:属性值将要发生变化时,与该属性建立关系的其他Java对 象可以否决该属性值的改变;Java EE基础技术标准基础技术标准 JavaBEANJavaBEAN事件;通过事件机制,JavaBEAN既是事件发起者,也是接收者,不同的组件就可以组合在一起,组件之间通过事件传递进行通信,这样就可构成了最简单的应用;在事件模型中,包括
14、以下构成部分: - 事件状态对象、事件监听者接口、事件监听者; - 适配类:核心部分,用于选择并指派事件的响应者(JavaBEAN); Java EE基础技术标准基础技术标准 JavaBEAN结合JavaBEAN的元素与规范,可以将JavaBEAN的特征归纳为: - 定制:对属性、方法、事件的设计定制; - 持久性:可以保存与恢复JavaBEAN的属性值,通过可序列化来支持持久性; - 通信:以事件方式与外部进行通信; - 自检:开发工具通过该机制来分析JavaBEAN的结构,确定可支持的元素;其他: - JavaBEAN完成后,会被打包成jar文件,把所需求资源都打包在同一个文件中; - 在
15、jar的MANIFEST文件中指定所有的JavaBEAN文件; - jar文件在网络传输过程中将会极大减少数据流量;Java EE基础技术标准基础技术标准 JavaBEAN一个简单JavaBEAN例子:public class TestBean private String name;private boolean man;public String getName() return name;public void setName(String name) = name;public boolean isMan() return man;public void setMa
16、n(boolean man) this.man = man/. .Java EE基础技术标准基础技术标准 JavaBEANJDBC的定义: - Java Database Connectivity Standard,是用于执行SQL的Java API,为Java提 供了通用的访问不同关系型数据库(DBMS)的方法与接口,几乎所有的DBMS 厂商都提供了JDBC的服务或驱动;Java EE基础技术标准基础技术标准 JDBC在最新的J2SDK6中,JDBC API目录已有4.0: - 核心API定义在java.sql包中; - 扩展API定义在javax.sql包中;主要的JDBC对象与接口如下:
17、 - java.sql.DriverManager:用于管理JDBC驱动的服务类,当JDBC驱动加载至内存后,DriverManager 会自动注册JDBC驱动,然后通过getConnection方法建立Java应用至 DBMS的连接; - java.sql.Connection:数据库连接对象,通过createStatement创建SQL申明; - java.sql.Statement:SQL语句接口,通过executeQuery或executeUpdate执行一个静态的SQL语句; - java.sql.ResultSet:SQL语句执行结果对象,包含了若干维护表记录的操作方法; - ja
18、va.sql.SQLException:SQL操作期间的异常处理,所以异常均通过该类抛出;Java EE基础技术标准基础技术标准 JDBCJDBC连接生命周期如下:Java EE基础技术标准基础技术标准 JDBCJDBC驱动共有4种类型: - 类型 1:将JDBC映射到其他类型的数据访问接口上,最为典型的是JDBC-ODBC Bridge,利用ODBC提供JDBC的访问(如访问MS Access),但必须在 每台客户机上都配置ODBC驱动(所以这种方式不适用于单独的Java 应用),适用于服务端应用程序,只需配置一次ODBC即可;Java EE基础技术标准基础技术标准 JDBC - 类型 2:
19、基于本地API与厂商的驱动程序实现,不同DBMS厂商提供了不同的驱 动实现(遵照JDBC标准实现),JDBC驱动会将本地API的操作转换成 具体厂商的JDBC操作; 如,Oracle提供的JDBC JAR为:classes12.jar, ojdbc14.jarJava EE基础技术标准基础技术标准 JDBC - 类型 3:完全由Java实现,将JDBC转换为与DBMS无关的网络协议,然后该协 议被中间件服务器转换为不同的DBMS协议(由中间件服务提供与数 据库之间的操作映射); 比如,银行项目中常用的SOP协议,由中间件服务提供SOP协议规范 ,然后再将该协议转换成不同的DBMS通讯协议;Ja
20、va EE基础技术标准基础技术标准 JDBC - 类型 4:与第3种类型相似,唯一不同的是,在本地实现与不同DBMS通讯的协 议,因此缺点显然易见,需要在本地API中实现不同的DBMS协义,所 以,使用场合较少;Java EE基础技术标准基础技术标准 JDBCJDBC连接池: - 简单来说,是管理JDBC连接生命周期的容器,确保连接使用的安全性; - 一般通过mons.dbcp包实现; - 可以为同一个或不同DB创建多个连接池;Java EE基础技术标准基础技术标准 JDBCJDBC的事务支持 - 所有的JDBC驱动都支持事务; - 事务操作:提交,回滚;JDBC、JAVA、SQL三者之间对于
21、相同数据类型具有不同定义,下表罗列了一些:Java EE基础技术标准基础技术标准 JDBCJDBC类型类型SQL类型类型Java类型类型ARRAYARRAYjava.sql.ArrayTIMETIMEjava.sql.TimestampBIGINTBIGINTLongVARCHARVARCHARStringCLOBCLOBjava.sql.ClobNULLNULLNULLJNDI的定义: - Java Naming and Directory Interface(Java命名目录服务接口),是命名目录 服务的抽象接口集合,为企业级应用提供了统一的标准化连接,使Java能够无 缝的获取任何可目录
22、化的企业信息; - 是数据的最基本服务之一,常见的目录服务有LDAP Server、RMI等; - 通过names与objects的绑定,形成唯一的描述字符串,以此获得目录条目,类 似于DNS通过主机名来获得IP; - JNDI包含API与SPI(服务提供接口),JNDI SPI用于命名目录服务的设计与实 现,使各类数据服务标准化;因此Java能够通过JNDI API快速方便的访问任何 目录服务;Java EE基础技术标准基础技术标准 JNDIJava应用与JNID API、JNDI SPI,以及各类目录服务的关系结构图如下:Java EE基础技术标准基础技术标准 JNDIJNDI由3个包组成
23、: - javax.naming:定义了命名服务的类型,以及所有存取标准接口; - javax.naming.directory:是javax.naming的扩展,提供了所有对于目录服务的 访问标准操作与接口; - javax.naming.spi:定义了命名目录的服务接口,遵循这些标准接口,开发者 能够为不同数据服务编写出统一的命名目录服务;目录较为成熟的JNDI实现包厂商有:SUN、IBM、Netscpe;Java EE基础技术标准基础技术标准 JNDI首先来说明一下“分布式”这个概念: - 大多数传统方式的Java应用,所有的对象、程序都在同一台服务器上,并且在 同一个JVM或进程中;
24、- 而在“分布式”计算中,对象和程序可以在同一台服务器上的不同进程中,也可 存在于不同的机器上;Java EE基础技术标准基础技术标准 RMI分布式的结构与优势: - 客户端层:UI与后台的业务处理完全分开,使客户端运行更“瘦”,更高效; - 业务逻辑层:又称“对象有服务层”,负责处理各类逻辑对象,如线程,连接 池,具体的业务对象等; - 数据及服务层:只负责具体的数据及服务运算; - 分布式计算能够充分利用多个系统组合的计算能力,能够解决在单机环境中无 法实现的计算功能;Java EE基础技术标准基础技术标准 RMI为什么“分布式”能够在Java平台上得到很好的实现,最主要的3点如下; -
25、跨平台性:Java为所有的系统平台都实现了统一的基本类型; - 可序列化:Java对象支持可序列化,符合远程调用的要求; - 性能优势:综上2点,使得Java的远程交互极为简单高效;所以,便产生了RMI(Java Remote Method Invocation),Java EE基础技术标准基础技术标准 RMIRMI的定义: - 基于TCP/IP套接字方式的分布式调用,是Java开发分布式应用的基础;其实RMI本身并没有添加任何新的概念和技术,其核心还是“接口(Interface)”,简单来说,就是把“接口”与“实现(对象)”从本地移到了远端的服务器上而,实现了“接口”与“实现”的分布式调用;
26、Java EE基础技术标准基础技术标准 RMI举个简单的例子说明: - 假设,我们在服务端定义了一个Interface,并且为该Interface编写了实现(对 象),然后在客户端编写了调用该Interface的Class,这样就构成了一个简单的 “客户/服务模型”,所以对于客户端而言,重要的不是Interface的实现,而是 Interface;Java EE基础技术标准基础技术标准 RMI从上页的图中,我们可以了解到RMI的部署与运行过程: - 首先定义RMI服务端能够提供的服务,也就是Interface; - 这些Interface需要生成调用入口,让客户端知道有哪些服务可以调用; -
27、然后,在服务端编写Interface的实现类; - 注意,还需要编写RMI注册机制,以便在RMI服务启时,能够正确加载服务; - 启动初始化RMI服务,注册机制会自动加载所以接口(服务); - 最后,客户端就可以方便的进行服务的调用;当然,由于是依靠网络运行,所以也需要必要的安全校验机制,这里就不进行描述了,可以根据实际的运行环境定制,比如,在客户端/服务端交互时,加入必要的身份验证部分,或进行IP地址限制等;Java EE基础技术标准基础技术标准 RMI现在再来了解一下RMI的开发过程: 1- 定义服务接口,扩展java.rmi.Remote接口; public interface RMIS
28、ample extends Remote 2- 编写接口的实现类,除了实现Interface外,必须扩展UnicastRemoteObject, 说明该服务不可复制,并且只在服务运行时有效; public class RMISampleImpl extends UnicastRemoteObject implements RMISample 3- 创建RMISampleImpl的stub,通过J2SDK的命令,rmic RMISampleImpl; stub就是刚才所提到的服务调用入口,名称为RMISampleImpl_Stub; 在JDK1.2以前,还需要生成skeleton,负责服务的定位
29、,及参数的解析交互;Java EE基础技术标准基础技术标准 RMI 4- 编写RMI注册机制,若名称为RMISampleServ以下是在main函数中的代码: /创建与安装安全管理程序 System.setSecurityManager(new RMISecurityManager(); /实例化远程对象 RMISampleImpl o=new RMISampleImpl(); /远程对象注册到RMI注册表 Naming.rebind(rmi:/localhost/rmiSample,o); 5- 编写客户端,若名称为RMISampleClient; RMISample server=(RMI
30、Sample)Naming.lookup(rmi:/localhost/rmiSample); server.方法(); 或者也可以直接实例化RMISampleImpl_stub进行服务连接与调用; 6- RMI注册:rmiregistry port RMI服务启动:java RMISampleServ RMI客户端运行:java RMISampleClientJava EE基础技术标准基础技术标准 RMIRMI典型的运行结构图如下:Java EE基础技术标准基础技术标准 RMIJava EE进阶技术标准进阶技术标准EJBJTAJMSJAASWebService其他技术标准其他技术标准Serv
31、let / JSPJAFJavaMailServlet的定义: - 是部署在Java的Web服务器上的组件,整个Java服务端程序都构建在Servlet 之上,以多线程方式提供服务,具有效率高,可扩展,可移植的特点;JSP的定义: - Java Server Page,所有JSP页面在执行时都会被编译成Servlet,由JSP页面 生成的Serlvet叫作“JSP页面实现类”,甚至可以把JSP认为是嵌入了Java语 句的HTML页面文件;Servlet / JSP的关系: - 在页面展现上,Servlet通过输出HTML语句来实现动态页面,如果SUN不推 出JSP标准,那么Java的Web页面
32、开发(动态页面的交互过程)将会十分痛苦;Java EE进阶技术标准进阶技术标准 Servlet / JSPServlet / JSP 的生命周期:Java EE进阶技术标准进阶技术标准 Servlet / JSPJSP页面第一次运行时,可能较慢,原因就在于需要进行装载和编译,以后将不不会再重新编译,即使是应用重启;Servlet请求处理过程涉及到3个概念:HTTP请求对象,HTTP响应对象,HTTP会话;关系图如下:Java EE进阶技术标准进阶技术标准 Servlet / JSPServlet请求处理过程:Java EE进阶技术标准进阶技术标准 Servlet / JSP当请求并发时,Ser
33、vlet以多线程方式提供服务:JAF的定义: - JavaBEAN Activation Framework,提供了统一处理不同的数据格式的方法( 如,文字,图片,声音,视频等等); 经常会使用JAF的场景:Web应用,JavaMail; - 数据与编码是最普遍也是最头痛的问题,在以上2个场景中,数据的自动处理显 得尤为重要,否则Web页面或邮件内容将会是乱码;这里要引入一个概念:“自动发现机制”,JAF就是基于此概念开发的;“自动发现”是指:能够动态找到正确的组件(JavaBEAN)来处理相应的请求;Java EE进阶技术标准进阶技术标准 JAFJAF“自动发现”机制的实现: - JAF能够
34、不同数据类型,找到相应的组件(JavaBEAN)来处理任意类型的数据; - JAF中存在“注册”机制,简单来说,就是把每一种文件类型与相应的处理组件 进行映射,这样JAF就实现了所谓的“自动发现”机制;Java EE进阶技术标准进阶技术标准 JAFJAF的组成: 1)- java.activation.DataHandler,是JAF的核心部分,共有3个构造函数: Public DataHandler(Object obj, String mimeType) Public DataHandler(DataSource ds) Public DataHandler(URL u) 使用第1个构造函
35、数时,会根据mimeType动态发现相应的数据处理组件; 使用第2,3个构造函数时,则会使用当前的数据类型处理组件; 2)- java.activation.DataContentHandler:此接口用于实现数据流的处理,负责 Java对象流与数据流的互转,唯一的限制是,对象类型与数据流的转换关系 是一对一的; 3)- java.activation.DataSource:包含了数据处理的所有逻辑,与DataContentHandler 不同的是,DataSource只处理数据流(InputStream),具有很大的通用性, JAF定义了2个标准的DataSource对象,FileDataS
36、ource与URLDataSource Java EE进阶技术标准进阶技术标准 JAF在JAF的JAR包中,包含mimetype.default文件,定义了所有适用的数据类型;JAF的处理逻辑如下:Java EE进阶技术标准进阶技术标准 JAFJavaMail的定义: - 是一个电子邮件操作的标准Java API,用于建立标准的邮件客户端,包括了各 种标准的Internet协议(如SMTP,POP,IMAP,MIME等); - 与JAF有着紧密的联系,JavaMail运行依赖于JAF,比如,JavaMail依赖于JAF 处理MIME编码的附件等;JavaMail包含4个主要的部分: 1)- 会
37、话管理: java.mail.session:用于定义并建立与远程邮件服务器的邮件通讯会话; javax.mail.Authenticator:用于处理在建立Session时的相关身份验证;Java EE进阶技术标准进阶技术标准 JavaMail 2)- 消息管理: 邮件消息有“头”与“内容”2部分组成; 邮件头中包括了MessageID,From,To,Subject等内容; javax.mail.Message:用于封装一条抽象邮件消息类,其中包括了一个实现 类MimeMessage; javax.mail.Part:是实现Message的元子组件,相互之间可嵌套,因此最终 可以一个递归结
38、构; 3)- 存储与检索,以文件夹的形式进行邮件的存储与检查,主要的组件如下: javax.mail.Store:为文件夹形式的提供的操作方法; javax.mail.Folder:为Message的提供了管理所必须的方法,包括检索,复 制,移动,删除等等; Java EE进阶技术标准进阶技术标准 JavaMail 4)- 传递(发送): javax.mail.Transport:提供邮件发送功能;JavaMail的逻辑结构图:Java EE进阶技术标准进阶技术标准 JavaMailEJB(Enterprise JavaBean)是Java EE核心组件,其定义如下: - 是Java服务端软件
39、框架规范,提供了让客户端使用远程分布式对象的框架,简 化了大型企业级应用的开发;EJB规范的定义: - 规定了EJB组件与EJB容器进行交互的方式;EJB容器的定义: - 是管理EJB实例的抽象组件,遵循EJB规范来调用业务逻辑所需要的EJB实例;EJB服务: - 管理EJB容器的应用程序,并提供对其他系统服务的访问,如JDBC,JNDI等,Java EE进阶技术标准进阶技术标准 EJB综上所述,EJB并不是一个“现成的服务或产品”,而是为开发基于事务和分布式对象应用服务而定义的技术标准: - EJB实例其实就是一组分布式对象,受EJB容器管理,为远端用户提供服务; - EJB标准定义了EJB
40、实例与容器间的交互方式,定义了运行机制,充分考虑了 EJB实例在不同容器间的可移植性; - EJB标准详细定义了EJB容器与服务器之间的标准模型,这样,开发人员,就可 以不用考虑实现框架,而可以专心于实际的业务逻辑,实现了系统的低耦合;Java EE进阶技术标准进阶技术标准 EJB先来了解一下EJB的整体结构:Java EE进阶技术标准进阶技术标准 EJB从上图中可以看到,JavaBEAN,RMI与JNDI,在EJB中是基础起到关键作用; - EJB被成功发布后,客户端通过JNDI获得对HOME接口的引用; - 然后通过HOME对象得到EJB对象; - 最后,客户端就可以通过EJB对象来调用E
41、JB实例的业务方法;再从应用服务器的角度来了解EJB:Java EE进阶技术标准进阶技术标准 EJB从之前的图中明显看到,EJB容器容器,是EJB服务的核心部分,它负责全程管理EJB实例,EJB容器的作用如下: - 持久性:决定何时加载何种类型的持久性组件,有2种类型的持久性组件,CMP (容器管理持久性组件)与BMP(组件管理持久性组件); - 生命周期管理:全程管理EJB实例的生命周期,包括EJB实例的初始化,实例池 管理,实例调用等; - 事务管理:负责管理分布式事务处理的逻辑,管理并开发人员屏蔽了复杂的底 层通讯实现,极大简化了开发过程; - 其他:还包括EJB实例的状态管理、安全认证
42、管理等等;Java EE进阶技术标准进阶技术标准 EJBEJB的作用示意图如下:Java EE进阶技术标准进阶技术标准 EJBEJB包括3种类型的Bean: - 会话Bean(Session):用于描述业务处理过程,可以作为其他Bean的客户端 ,用来调用其他Bean; - 实体Bean(Entity):用于描述数据,提供了持久数据的操作与表示,可同时 与多个客户机进行交互,运行结束后,其状态仍能保留;刚才已提到过,有2 种类型的实体Bean,CMP与BMP; - 消息驱动Bean(Message-Driven):集成了JMS和EJB的功能,不向客户端开 放,只用于系统内部的交互;Java E
43、E进阶技术标准进阶技术标准 EJB通过一个实际的业务例子来描述3种Bean的关系,比如通过网上银行查询余额:Java EE进阶技术标准进阶技术标准 EJB会话Bean与实体Bean的区别:Java EE进阶技术标准进阶技术标准 EJB会话Bean实体Bean表示一个业务过程表示数据过程一个环境对应一个实例多个环境中实例可以共享与环境生命周期同上与数据库生命周期同步暂时状态,会销毁持久性若服务器宕机,会丢失若服务器宕机,可快速重构不一定是事务性的必须是事务性的会话Bean有2种管理类型: - 有状态会话Bean:成员变量的状态决定了Bean的状态,描述了客户端与会话 Bean的连接状态,所以会在
44、一段时间内保持会话,在此期间 不允许再与其他客户端进行会话; - 无状态会话Bean:不为客户端保持会话,当客户端调用Bean时,成员变量会 记录调用状态,但当完成调用后,立即释放,状态的记录 可以由客户端实现;此外,在非调用时间内,Bean可以与 任何客户端再次建立会话;Java EE进阶技术标准进阶技术标准 EJB实体Bean也有2种类型(BMP与CMP): - 组件管理持久性(BMP),又称自管理持久性,优缺点如下: 优点:可完全自主研发,无须应用服务器(如WAS)支持; 缺点:可移植性差,组件的管理完全需要自己实现,若组件发生改变,则需 要重新部署; - 容器管理持久性(CMP),优缺
45、点如下; 优点:管理功能由应用服务器提供(如WAS),保证性能与安全性; 若发生变更,只需要在“部署文件”中进行改变即可; 可移值性好; 缺点:对应用服务器(如WAS)过于依赖; 不易对复杂的数据逻辑进行开发,因为需要考虑到数据的兼容性;Java EE进阶技术标准进阶技术标准 EJB消息驱动Bean与另2种Bean的区别在于:由于只会在系统内部调用,所以就不需要接口的定义,换句话说,只需要一个Bean实例Class即可;消息驱动Bean的特点在于 - 不保持任何客户端或数据的状态; - 与JMS结合使用,对于消息的处理是异步的,提高了服务的性能;其实会话Bean与实例Bean也可以通过JMS收
46、发消息,但缺点在于,这2种Bean对于消息的处理是步,这很有可能给服务端带来很大性能消耗;Java EE进阶技术标准进阶技术标准 EJB接下来从开发的角度,来了解一下如何开发一个Bean;需要知道以下3项内容: - EJBHome接口:定义了创建与查询EJB的方法; - EJBObject接口:定义了在Bean中实现业务逻辑的方法; - Bean的实现类:实现一个会话Bean或者一个实体Bean;Java EE进阶技术标准进阶技术标准 EJB 1- 首先来创建一个主接口,如命名为PersonalBankHome并实现; public interface PersonalBankHome ext
47、ends javax.ejb.EJBHome public Hello create() throws java.rmi.RemoteException, javax.ejb.CreateException; 2- 然后定义一个远程调用Bean接口,如命名为PersonalBankObject并实现; public interface SearchMoneyBean extends javax.ejb.EJBObject public String getSearchMoneyBean() throws java.rmi.RemoteException; 3- 最后实现一个会话Bean或实体B
48、ean,如命名为SearchMoneyBean; public class SearchMoneyBean implements SessionBean public void ejbCreate() /. public void ejbRemove() /. public void ejbActivate() /. public void ejbPassivate() /. public void setSessionContext(SessionContext ctx) /. public String searchMoney() /. Java EE进阶技术标准进阶技术标准 EJB在完成
49、了主要的Bean开发后,接下来需要考虑EJB的事务处理方式;具有2种事务处理方式: - 在“部署描述”文件中声明“已实现并公布的事务”,由EJB服务提供商负责提供; - 另一种为,通过JTA(Java事务API)来自行开发事务处理;EJB标准要求事务处理效果需要达到:当所有对象的操作都执行成功后,才能进行提供,否则只要有一个对象操作发生异常,所有操作立即回滚;Java EE进阶技术标准进阶技术标准 EJB以上对EJB的基本结构与概念进行说明,关于EJB开发的详细说明,可以参考“EJB_Training.ppt”;Java EE进阶技术标准进阶技术标准 EJBJTA(Java Transacti
50、on API),Java事务API,其定义为: - 是一组事务接口定义,描述了对于不同资源(包括数据库,EJB,服务通讯 等)的事务处理规范;需要注意的是: - JTA只提供了接口,并没有提供实现类,完全需要自行实现; - JTA可以实现同一事务对应不同的资源,但是不能实际事务的嵌套;Java EE进阶技术标准进阶技术标准 JTAJTA的主要组成如下: - javax.transaction.UserTransactoin定义了事务的操作范围,包括启动、提交以 及回滚; - javax.transaction.xa.XAResource是面对各类资源的事务接口,JTA采用XA接口 规范作为自身
51、的资源标准,所以,只要是符合XA的资源,JTA都能够处理;那么什么是XA接口标准: - X/Open DTP模型中的一个标准; - 是事务监控与数据库之间的接口; - 在该标准中定义了事务监控与数据库之间的详细方法接口;X/Open是一个推进和制定信息技术领域开放标准的组织;DTP是该组织专门为事务处理技术所制定的一系统标准集合的名称;Java EE进阶技术标准进阶技术标准 JTA由于JTA是遵循X/Open DTP的XA标准,所以也就支持“事务的两阶段”提交功能;“事务两阶段”是事务处理的核心,什么是“事务两阶段”提交功能,简单概括如下: - 应用程序调用事务的提交方法; - 这时事务管理器
52、通知所有相关资源,准备进行事务的提交(第1阶段开始); - 所有资源响应事务管理器的命令,回复准备的结果; - 事务管理器收所有资源的准备结果,只要有一个资源回答失败,则立即停止; - 第2阶段开始,事务管理器命令所有资源进行事务处理,只要有一个资源的事 务处理失败,则通知所有事务都进行回滚; - 如果所有资源的事务都提交成功,则事务管理器会确认结果,作最后提交;需要注意的是,如果在WAS中配置数据库访问时,若需要“两阶段”功能,则必须要使用实现了JTA的数据库事务驱动;Java EE进阶技术标准进阶技术标准 JTA必须使用JTA的场景: - 只要是事务中调用了多个数据库连接,就需要JTA,这
53、些连接可以是访问相同 或不同的数据库服务器;比如,以EJB举例: - “会话Bean1”准备调用同一事务内的“实例Bean1”与“实例Bean2”,3者部署在同 一个服务器上,若2个实例Bean使用了不同的数据库连接,不管是否是访问同 一个数据库,2个实例Bean访问的数据源都必须使用JTA,否则可能带数据安 全性与完整性的隐患; - 若3个Bean部署在不同的服务器上,则情况同上;Java EE进阶技术标准进阶技术标准 JTAJMS(Java Message Service)的定义: - 提供了一系统创建、发送、接收、和读取企业消息的通用方法; - JMS中的消息通讯都是异步方式的; - J
54、MS可以处理由其他类型客户端所发消息;具体JMS应用的组成: - 客户端:用来处理消息的应用,分为JMS客户与非JSM客户端,区别在于实现的 技术有所不同; - 消息(Message):在不同应用或组件中进行异常通讯的请求、事件或报告; - JMS Provider:实现了JMS标准的应用服务; - 被管理对象:事先配置的JMS对象,由管理员为使用JMS的客户端所创建;Java EE进阶技术标准进阶技术标准 JMSMessage是JMS的核心组成部分,它的模型如下: - 消息头:包括了客户端信息,以及用来消息路由所必须的信息(包括 JMSDestination、JMSDeliveryMode、
55、JMSMessageID.等); - 消息属性:包括3部分 - 应用自定义的属性; - JMS标准所规定必须带的属性; - Provider(JMS应用)的属性,同样是由JMS标准所规定; - 消息体:JMS已定义了5种格式的消息体,足够满足开发的需求,包括 - StreamMessage:流消息,只以被顺序的读取与填充; - MapMessage:映射类消息,包含了Key与Value对应; - TextMessage:类型为String的消息,使用最为广泛; - ObjectMessage:是可序列化的Java对象,包括java.util.Collectoin类型; - BytesMessa
56、ge:是一个不间断的字段流消息,使用也较为广泛;Java EE进阶技术标准进阶技术标准 JMS开发典型JMS消息客户端的步骤: - 通过JNDI定位一个ConnectionFactory对象; - 使用JNDI查询一个或多个Destination(目标)对象; - 使用ConnectionFactory创建一个JMS连接; - 然后初始化一个或多个JMS的Session; - 利用Sessoin与Destination创建MessageProducers(消息生产者对象),与 MessageConsumers(消息接收者)对象; - 通过Connection进行消息传送(通过MessagePr
57、oducers与 MessageConsumers);常见的JMS服务应用包括:IBM MQ、SUN MQ等等;Java EE进阶技术标准进阶技术标准 JMSJMS的多线程讨论: - JMS毫无疑问肯定是要求支持并发的,所以针地每一个JMS对象都需要进行并发 处理,以下是相关对象对于并发的支持情况:Java EE进阶技术标准进阶技术标准 JMSJMS对象是否支持并发Destination是ConnectionFactory是Connection是Session否MessageProducers否MessageConsumers否JMS对象的逻辑结构图如下:Java EE进阶技术标准进阶技术标准
58、 JMSJMS的消息传递方式有2种: - PTP:点对点方式,以队列的方式进行消息的处理; - Pub/Sub:发布/订阅方式,包含了“消息调适器(Topic)”,通过这个调用器来 处理消息; - 2种方式也可以同时存在一个应用中;Java EE进阶技术标准进阶技术标准 JMSJAAS定义: - Java Authentication Authorization Service,Java验证授权API; - 是JCE安全框架的补充标准,通过验证代码运行者的身份及其权限来保护应用 系统免受攻击; - JAAS采用PlugIn方式运行,支持可插拔方式,只要对JAAS配置就可以实现JAAS 的部署与
59、卸载; - JAAS提供一组身份验证,以及权限校验的接口;Java EE进阶技术标准进阶技术标准 JAASJAAS的结构特点: - JAAS在应用和底层的验证授权机制之间加入了一个抽象层,该抽象层相对独 立,并且与平台特性无关; - 与Java Security API类似,JAAS也是通过一个可扩展的框架,SPI来保证程序的 独立运行机制; - SPI(服务提供者接口)中包括2个核心部件: LoginContext:负责与应用程序的代码进行连接; LoginModules:是一组动态配置验证模块,包括了一系列验证机制;Java EE进阶技术标准进阶技术标准 JAAS - JAAS的结构逻辑如
60、下;Java EE进阶技术标准进阶技术标准 JAAS - 刚才提到,JAAS的运行方式是PlugIn方式,所在所有的LoginModules都可以进 行“热插拔”; - LoginModules之间存在层级关系,相互之间按照顺序运行,只要有一个模块是 校验失败的,那整个LoginModule将会返回失败; - JAAS本身也带事务行为,其实现机制也类似于刚才所提到的“两步提交”; Java EE进阶技术标准进阶技术标准 JAASJAAS的核心部件: - LoginModule :确认用户的合法性(使用CallbackHandler或者其他类方法), 并分配访问权限principal给subje
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 获取高分2025年软考试题及答案
- 法学概论的课程改革与试题及答案的适应
- 2025年软件设计师考试回顾与总结试题及答案
- 企业变革中的风险应对考题及答案
- VB考试技能训练试题及答案
- 2025【项目工程管理合作协议】合同范本
- 2025年软件设计师考试前瞻试题及答案
- 生产工作汇报
- 了解金融市场动态助力个人投资计划
- 品牌传播的情感营销方式分析计划
- 物流管理专业 苏果超市南京地区配送路径优化研究
- GB∕T 12719-2021 矿区水文地质工程地质勘查规范
- 法商小课堂传承保险法商课婚姻保险法商课32张幻灯片
- 《品牌策划与管理(第4版)》知识点与关键词解释
- 《刘姥姥进大观园》课本剧剧本3篇
- 房屋买卖合同解除协议书
- 司法局PPT模板
- 干部选拔任用工作全部系列表格12张
- 五年级奥数《盈亏问题》(课堂PPT)
- 建设工程质量安全管理奖罚制度汇编
- 小学语文四年级上册作业设计《21.古诗三首》(附答案)部编版
评论
0/150
提交评论