第08讲:JavaEE构件技术_第1页
第08讲:JavaEE构件技术_第2页
第08讲:JavaEE构件技术_第3页
第08讲:JavaEE构件技术_第4页
第08讲:JavaEE构件技术_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、哈尔滨工业大学计算机学院唐好选Email:基本内容基本内容pJava EE概述pEJB技术p基于EJB构件的开发过程p三种构件模型的关系J2EE概述p J2SE (Java2 Platform, Standard Edition)p 用于桌面程序和Java小程序开发p 称为J2SDK,简称JDKp J2EE (Java2 Platform, Enterprise Edition)p 用于企业级开发p 称为J2SDKEEp J2ME (Java2 Platform, Micro Edition)p 用于手持设备的开发(手机和PDA)p JRE (Java Runtime Environment)

2、Java平台的发展平台的发展Java平台的发展平台的发展Java EE的发展的发展p J2EE 1.0 1999年发布p J2EE 1.2 2000年发布p J2EE 1.3 2001 年发布p J2EE 1.4 2003年发布p J2EE 1.5 2005年发布,即Java EEp Java EE 1.6 2009年发布p Java EE 1.7-2013年发布,最新版Java EE 1.7的核心组件的核心组件Java EE 应用架构示例(应用架构示例(1)Java EE 应用架构示例(应用架构示例(2)Java EE核心技术核心技术浏览器Applet应用程序客户机RMIWeb/HTTP服务

3、器JSP/JSFServlet表示层应用服务器EJBEJBEJBEJBEJBEJBEJBJava IDLJNDIJMSJPA专业服务层遗产系统数据库后端系统Java EE核心技术(核心技术(1)pEJB(Enterprise Java Bean)p提供了让客户端使用远程的分布式对象的框架p规定了EJB构件如何与EJB容器进行交互pEJB容器提供了目录服务、事务管理、安全、连接池管理和容错服务等pRMI ( Remote Method Invocation)和RMI-IIOP p是EJB构件和客户端的通信APIp允许进程间通信并提供其它与通信相关的服务p利用IIOP作为通信协议pJNDI(Jav

4、a Naming and Directory Interface)p是命名和目录服务的标准p实现对象的命名,包括Web组件、EJB组件、数据库系统等p对象的名字通过命名和目录服务绑定到具体对象pEJB依赖JNDI通过网络查找分布式构件p在Java EE环境下,任何构件必须在JNDI服务器注册pJPA(Java Persistence API)p 用于对象持久化的API,本质上是一种ORM规范p 支持XML和注解p 通过面向对象而非面向数据库的查询语言查询数据,避免程序的 SQL语句紧密耦合Java EE核心技术(核心技术(2)pJTA (Java Transaction API)p是一个高层次

5、的事务处理接口p应用程序可通过JTA控制事务处理pJMS( Java Message Services)p是与消息驱动构件通讯的APIp同时支持点对点消息队列服务和发布-订阅消息服务p支持可靠消息传递、消息传递事务及持续消息等p是EJB消息驱动Bean的基础Java EE核心技术(核心技术(3)pJSP(Java Server Page)和 Servlet p是服务器端的程序p用于扩展服务器功能,响应用户请求p可将结果转化为标准的HTML代码返回给用户pJSF(Java Server Faces)p用于构建Web应用程序的新标准Java框架p提供一种以组件为中心来开发Java Web用户界面的

6、方法p将Web应用开发者划分为三个角色:网页设计人员;应用程序设计人员;UI组件开发人员Java EE核心技术(核心技术(4)pWebSocket APIp是下一代客户端-服务器的异步通信方法,取代了单个TCP套接字,可用于任意的客户端和服务器程序,由W3C进行标准化pWebSocket API可使服务器和客户端可以在给定时间范围内的任意时刻,相互推送信息pWebSocket并不限于以Ajax(或XHR)方式通信,服务器和客户端可以彼此相互推送信息pWebSocket允许跨域通信p Java IDL/CORBAp是CORBA规约的一种Java实现p通过Java IDL可以让Java对象发布到C

7、ORBA的ORB上,从而通过ORB与别的CORBA对象进行交互Java EE核心技术(核心技术(5)pInterceptors(拦截器)p在访问某个Action或Action的某个方法之前或之后实施拦截p拦截器是可插拔的,是AOP的一种实现pJAF(Java Activation Framework)/ Java Mailp是一套允许在Java程序中以与平台无关、协议无关的方式发送电子邮件的APIpJavaMail可利用JAF处理邮件的编码pXML( 可扩展标记语言)p是一种描述数据的元语言pJava用JAXP( Java API for XML Parsing)对XML文件进行解析pEJB通

8、常将XML作为元标记语言表达内容Java EE核心技术(核心技术(6)EJB技术EJB技术技术pEJB简介pEJB体系结构pEJB编程模型pEJB构件接口pEJB构件规约pEJB构件分类pEJB构件的开发什么是什么是EJB?pEJB不是一种产品,而是为开发和使用“基于事务和分布对象应用的服务器端构件”而定义的一种技术规约,用户可根据该规约开发EJB构件pEJB构件是一组分布式的对象,可通过EJB容器的控制为分布在因特网上的用户提供远程服务什么是什么是EJB?pEJB规约定义了EJB构件与EJB容器之间的交互机制,描述了EJB构件和EJB容器在运行时的行为,保证了EJB构件在容器间的可移植性p安

9、全访问如何检验p事务如何管理p持久性如何应用pEJB容器运行在EJB服务器中,EJB规约还定义了EJB容器和EJB服务器的标准模型EJB的目标的目标pEJB的目标是为服务器端构件系统定义一个技术规范,该规范可实现如下要求:p提供一个标准的、分布的、基于OO的体系结构p屏蔽复杂的系统级功能需求p兼容CORBA标准p具有与非Java应用之间的互操作能力EJB的现状的现状-EJB3.0p EJB3.0于2006年5月随JAVA EE 5发布p EJB3.0完全抛弃了EJB 2.x实体Bean的设计,仅仅保留原有的Session Bean和消息驱动Bean;引进了全新的JPA规范作为持久化解决方案p

10、简化了EJB 2.x中Session Bean的开发,Session Bean不再需要Home接口,只要求提供远程或本地的业务接口即可p 不再推荐使用XML文件作为部署描述文件,而是改为使用Annotation来设置部署描述信息EJB的现状的现状-EJB3.1p EJB3.1于2009年随JAVA EE 1.6发布p 允许企业Bean只提供一个Bean类,甚至无须提供业务接口p 允许通过异步的方式调用Session Bean的业务方法p 简化了EJB的类文件必须打包到JAR文件中的限制,允许直接将EJB类放到WAR文件中EJB的现状的现状-EJB3.2pEJB3.2于2013年7月随JAVA

11、EE 7发布p支持本地异步会话Bean调用pJava I/O访问权已放宽,用“应谨慎行事”取代了“不允许”p有状态会话bean的生命周期回调拦截方法,可以在一个事务环境中执行(由生命周期回调方法的事务属性决定) p可以完全禁用特定的有状态会话bean的钝化pTimerService API已被扩展,可以在同一个EJB模块中查询所有活动计时器p会话bean指定实现接口(作为本地或远程业务接口)的默认规则已经放宽,可以包含多个接口Java EE的应用架构的应用架构-经典经典JAVA EE架构架构p 以EJB为核心,前端以JSF(Java Server Faces)为MVC框架的技术架构,这种技术架

12、构以Sun提倡的官方Java EE技术为主Java EE的应用架构的应用架构-轻量级轻量级Java EE架构架构p 以SpringHibernate为核心,前端以Struts 1或Struts 2为MVC框架的技术架构,这种技术架构以主流的开源框架为主Spring框架框架p 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现p 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际应用程序代码分开p Spring 上下文

13、:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能p Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术Spring框架和框架和EJBp Spring框架实际上大量参考了EJB的设计理念,只是Spring摈弃了EJB开发中的3大烦琐之处:(1)EJB组件的接口和类必须继承指定接口或类(2)需要大量使用XML配置文件(3)EJB组件必须打包成JAR包p Spring容

14、器取代了原有的EJB容器,因此以Spring框架为核心的应用无须EJB容器支持,可以在Web容器中运行p Spring容器管理的不再是复杂的EJB组件,而是POJO(Plain Old Java Object) BeanEJB的体系结构的体系结构p请求EJB构件服务的应用程序,EJB规约为创建EJB构件的客户接口定义了一套标准,主要包括:pEJB Home接口:客户使用JNDI来查找对EJB Home接口的引用,为客户机创建、删除、查找EJB Remote接口对象的句柄提供了相应的操作pEJB 业务接口:通过该接口可调用构件的业务方法pRMI/IIOP或RMI/JRMP协议:客户机和容器通信的

15、标准协议,这些底层的分布式通信机制对于EJB客户机和EJB构件开发者都是透明的EJB的体系结构的体系结构-EJB客户机客户机p为使用EJB构件的应用程序提供操作环境,并提供所有必要的服务来支持EJB体系结构pJava白皮书承诺:“EJB规约为每个支持Java程序的应用服务器定义了一个标准模型,任何厂商都可以使用此模型来实现对EJB构件的支持”pEJB服务器的主要功能包括p管理EJB容器p提供对操作系统服务的访问p提供与Java相关的服务EJB的体系结构的体系结构-EJB服务器服务器pEJB容器为EJB构件提供运行环境,EJB容器对EJB应用程序是透明的pEJB白皮书描述:“EJB容器管理其中的

16、EJB构件,客户机应用程序并不直接与EJB构件进行交互,相反,客户机应用程序通过由容器生成的封装接口与EJB构件进行交互,当客户机使用封装接口调用各种操作时,容器截获每个方法调用,并插入管理服务”EJB的体系结构的体系结构-EJB容器容器EJB的体系结构的体系结构-EJB容器容器p面向对象p分布式计算:EJB构件在理论上是位置透明的p使用代理对象:客户机访问EJB构件时使用代理对象,构件本身对客户机是不可访问的EJB的编程模型的编程模型-关键特征关键特征EJB的边界的边界EJB构件接口构件接口p构件接口是构件提供者为便于复用者(客户)复用该构件所提供的必要信息p构件与容器协作实现这些接口EJB

17、EJB构件规约构件规约EJB构件规约构件规约pEJB可使Java编写的服务器组件开发和部署标准化pEJB构件规约定义了以下接口pEJB和容器之间的接口p容器和应用服务器之间的接口p容器和客户端之间的接口p容器和持久管理器之间的接口EJB构件分类构件分类pEJB构件分为三(四)种基本的类型p会话构件(Session Bean)p有态会话构件(Stateless Session Bean)p无态会话构件(Statefull Session Bean)p消息驱动构件(Message-Driven Bean)p实体构件(实体构件(Entity Bean)会话构件会话构件p特征 p与单个客户相对应p不直

18、接表示数据库中的共享数据p生命周期相对较短p当EJB容器崩溃时,也随着消失p类别pStateful (有态)pStateless (无态)有态构件的生命周期有态构件的生命周期PreDestroy超时postConstruct业务方法PrePassivatePostActivate超时实例抛出系统异常无态构件的生命周期无态构件的生命周期PreDestroyPostConstruct业务方法两种会话构件的选择两种会话构件的选择pStateful ? Stateless?p过程需要保持状态?p加入过程中断,恢复运行时需要以前的信息吗?两种会话构件的选择两种会话构件的选择p发生下列情况时应该考虑使用有

19、状态会话Beanp在方法调用时,会话Bean需要维护成员变量的数据p实例化会话Bean的时候,必须初始化会话Bean的状态p会话Bean需要跨越多个方法调用,并维护客户端的信息p会话Bean正在服务一个交互客户端,EJB容器或应用服务器需要了解该客户端p发生如下情况时应考虑使用无状态会话Beanp不需要维护跨越方法调用的成员变量中的数据p会话Bean提供的服务并不针对某种客户端消息驱动构件(消息驱动构件(MDB)pMDB是一种JMS消息的使用者,MDB负责从消息队列或者消息主题中读取消息pMDB只提供消息接受方法,客户端不直接与MDB打交道pMDB的输入参数只有一种类型,即消息对象,是那些实现

20、了Message接口的Java对象p生命周期由EJB容器控制p客户端和MDB是完全独立的,客户端无法直接调用MDB方法,而是由消息服务器负责把消息发送给MDBp无状态消息驱动构件(消息驱动构件(MDB)MDB的生命周期的生命周期PreDestroyPostConstructp客户端可直接调用Session Bean,发布消息到主题pMDB接收并处理消息EJB构件开发与应用pSessionBean有两个共同的组成部分:p业务接口(Business interface):定义EJB构件的逻辑方法pBean类(Bean class):实现主要的业务逻辑EJB构件的开发(构件的开发(SessionBe

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

22、mote 和 local 接口,但实现两者是比较好的做法开发开发SessionBeanp第一步:定义一个包含业务方法的接口。该接口不需要包含任何注释,是一个普通的 java 接口。调用 EJB的客户端使用这个接口引用从 EJB 容器返回的存根(stub)开发开发SessionBean第一步第一步p第二步:编写BeanClass开发开发SessionBean第二步第二步SessionBean的客户端开发的客户端开发public static void main(String args) Properties props = new Properties();props.setProperty(java.naming.factory.initial, erfaces.NamingContextFactory);props.setProperty(vider.url, localhost:1099);try InitialContext ctx = new InitialContext(props);HelloWorld helloworld = (HelloWorld) ctx.lookup(HelloWorld

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论