《J2EE架构与程序设计(J2EE架构概述).ppt》由会员分享,可在线阅读,更多相关《J2EE架构与程序设计(J2EE架构概述).ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2008-2010 by Li Weigang.All rights reserved.J2EE架构与程序设计架构与程序设计 主讲:方 顺西北工业大学软件与微电子学院2008-2010 by Li Weigang.All rights reserved.介绍介绍l本课程讲授J2EE平台的基本原理及利用J2EE开发企业级应用程序的方法,主要包括如下内容:Web应用开发方法JSP/ServletJSTLJSFEJB 2.0 to 3.0J2EE Platform ServicesJ2EE企业架构模式最佳实践2008-2010 by Li Weigang.All rights reserved.先修
2、课程或准备知识先修课程或准备知识lXMLlJava编程基础(SSD3)l分布式编程基本知识2008-2010 by Li Weigang.All rights reserved.考核办法考核办法l课程成绩由三方面构成平时表现:20%实验成绩:30%期末考试或期末project:50%2008-2010 by Li Weigang.All rights reserved.教材及资源教材及资源l教材Bryan Basham,Kathy Sierra,Bert Bates.Head first servlets&JSP,2nd Edition.March 2008.Bill Burke,Richar
3、d Monson-Haefel著,莫映,徐昊,胡凯译.Enterprise JavaBeans 3.0中文版.电子工业出版社 2007.5 Deepak Alur,John Crupi,Dan Malks著,刘天北,熊节等译.J2EE核心模式(原书第2版).机械工业出版社 2005.3 l课件资源课件/J2EE架构与程序设计2008-2010 by Li Weigang.All rights reserved.第一章第一章 J2EE架构概述架构概述2008-2010 by Li Weigang.All rights reserved.主要内容主要内容l分布式多层应用lJ2EE容器lWeb Se
4、rvices支持l打包应用l开发角色lJ2EE APIs2008-2010 by Li Weigang.All rights reserved.引子引子lJava 2 Platform,Enterprise Edition(J2EE)为设计、开发、装配和部署企业应用程序提供了一个基于组件的方法lJ2EE平台提供了:一个多层分布式应用模型可复用组件模型一个统一的安全模型灵活的事务控制支持Web Servicesl通过J2EE平台,可以更快地构建创新的商业解决方案基于J2EE组件的平台独立性,使开发的应用不依赖于特定厂商的产品和API软件厂商和客户都能自由地选择符合其需求的产品和组件2008-20
5、10 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用l应用逻辑按照功能分成若干组件,组成J2EE应用的各种应用组件按照多层J2EE环境中的层次结构,安装在不同的机器上。2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用l安全在每个应用中使用平台无关的安全策略允许在部署时定义安全约束应用程序能够在多种安全实现上移植对应用开发者屏蔽实现安全特性的复杂性J2EE平台提供了标准的声明式访问控制规则,可由开发者定义并在应用部署到服务器时解释J2EE提供了标准的登录机制,开发者可以不用重复开
6、发2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用lJ2EE组件A J2EE component is a self-contained functional software unit that is assembled into a J2EE application with its related classes and files and that communicates with other components.J2EE规范定义了如下组件:l应用客户端(application clients)和Applets是客
7、户端运行的组件lServlet和JSP组件是服务器上运行的web组件lEnterprise JavaBeans(EJB)组件是服务器上运行的业务组件2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用lJ2EE客户端Web客户端 thin clientl动态Web页面:由Web层运行的web组件生成lWeb浏览器:显示页面Applet应用客户端 richer user interfacel直接访问企业Beansl打开HTTP连接,与Web层的servlet通信JavaBeans组件瘦客户端可提升应用的可分布性、可部署性和可管理性,
8、而富客户端可获得良好的用户体验。2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用l服务器通信2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用lWeb组件ServletlServlets are Java programming language classes that dynamically process requests and construct responses.JSPlJSP pages are text-based documents that
9、 execute as servlets but allow a more natural approach to creating static content.JavaBeans(optional)2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用lWeb组件2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用l业务组件Session beanslA session bean represents a transient conversation with a
10、client.When the client finishes executing,the session bean and its data are gone.Entity beanslAn 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
11、-driven beanslA 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.2008-2010 by Li Weigang.All rights reserved.分布式多层应用分布式多层应用l业务组件Java Persistence Entities in Java EE 52008-2010
12、by Li Weigang.All rights reserved.分布式多层应用分布式多层应用lEIS(Enterprise Information System)层ERP数据库系统遗产系统2008-2010 by Li Weigang.All rights reserved.J2EE容器容器l为什么需要容器?瘦客户端多层应用程序开发面临的难题l事务管理l状态管理l多线程l资源池l其它复杂的底层细节J2EE服务器对所有类型的组件,以容器的形式提供了一组底层服务。开发者不需重复开发,而只需关注业务问题2008-2010 by Li Weigang.All rights reserved.J2E
13、E容器容器l容器服务容器容器是一个组件和支持组件的底层平台特定功能之间的界面Web组件、企业Bean、应用客户端组件必须组装成J2EE模块并部署于容器中才能执行组装过程包括l为J2EE应用中每个组件定义容器方面的设置l为J2EE应用本身定义设置项2008-2010 by Li Weigang.All rights reserved.J2EE容器容器l容器管理的服务有可配置的服务l安全服务l事务服务lJNDI查找服务lJ2EE远程连接服务l不可配置的服务l企业Bean和Servlet寿命周期l数据库连接资源池l数据持久化l访问其它J2EE平台API同一J2EE应用中的应用组件依照部署方式不同而表
14、现出不同的行为2008-2010 by Li Weigang.All rights reserved.J2EE容器容器lJ2EE服务器和容器2008-2010 by Li Weigang.All rights reserved.对对Web services的支持的支持lWeb services是基于Web的企业应用,它使用开放的、基于XML的标准和传输协议与调用它的客户端进行数据交换lXML:跨平台、可扩展、基于文本的描述数据的标准。自定义标签(tag)用schema定义其格式用XSL定义处理和展现数据的方式lSOAP:客户请求和web服务响应描述成SOAP消息信封(Envelope):定义了
15、一个框架,该框架描述了消息中的内容是什么,包括消息的内容、发送者、接收者、处理者以及如何处理这些消息。编码规则:它定义了一种系列化机制,用于交换应用程序所定义的数据类型的实例。RPC表示:它定义了用于表示远程过程调用和应答协定。绑定:它定义了一种使用底层传输协议来完成在节点间交换SOAP信封的约定。2008-2010 by Li Weigang.All rights reserved.对对Web services的支持的支持lWSDL:将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问。Types 数据类型定义的容器Message
16、通信消息的数据结构的抽象类型化定义Operation 对服务中所支持的操作的抽象描述PortType 对于某个访问入口点类型所支持的操作的抽象集合Binding 特定端口类型的具体协议和数据格式规范的绑定Port定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点Service相关服务访问点的集合lUDDI和ebXML:在Internet上发布web服务信息的标准2008-2010 by Li Weigang.All rights reserved.对对Web services的支持的支持 SOAP 结构 Web services 栈2008-2010 by Li Weigang.
17、All rights reserved.打包应用打包应用lJ2EE应用打包成EAR文件(Enterprise Archive),包括J2EE模块部署描述符:描述应用、模块或组件的部署设置lJ2EE部署描述符l运行时部署描述符 应用服务器特定2008-2010 by Li Weigang.All rights reserved.打包应用打包应用lJ2EE模块:一个J2EE模块包括一或多个具有相同容器类型的J2EE组件,以及一个组件部署描述符EJB模块l企业bean(class)+EJB部署描述符 .jarWeb模块lServlet(class)+JSP+其它Class+HTML+图片+Web部署
18、描述符 .war应用客户端模块lJava class+应用客户端部署描述符 .jar资源适配器模块lJava interface,class,native libraries,and other documentation+资源适配器部署描述符 .rar2008-2010 by Li Weigang.All rights reserved.打包应用打包应用2008-2010 by Li Weigang.All rights reserved.开发角色开发角色lJ2EE规范定义了如下角色J2EE Product Providerl实现J2EE产品,提供容器、实现API及其它J2EE特性Tool
19、Providerl提供组件开发、组装和打包工具Application Component Providerl构建J2EE应用中使用的Web组件、企业Bean、Applets,或应用客户端Application Assemblerl将应用模块组装成J2EE应用的EAR文件Application Deployer and Administratorl配置和部署J2EE应用程序、管理计算和网络架构、监控运行环境2008-2010 by Li Weigang.All rights reserved.J2EE APIslJ2EE 1.42008-2010 by Li Weigang.All rights
20、 reserved.J2EE APIslJava EE 52008-2010 by Li Weigang.All rights reserved.J2EE APIs(1)lEnterprise JavaBeans执行业务逻辑三种企业beanlSession beanslEntity beans(在Java EE 5中被Java persistence API entities取代)lMessage-driven beanslJava ServletlJavaServer PageslJavaServer Pages Standard Tag Library(JSTL,new in Java E
21、E 5)封装了对许多JSP应用来说通用的核心功能。JSTL有迭代和条件Tag,可以处理流程控制;有处理XML文档的Tag;有用于国际化的Tag;有使用SQL访问数据库的Tag;及一些经常使用的功能。2008-2010 by Li Weigang.All rights reserved.J2EE APIs(2)lJavaServer Face(JSF,new in Java EE 5)是一个创建Web应用的用户界面框架主要组件包括l一个GUI组件框架l用于在不同的HTML或各种标记语言和技术下渲染组件的柔性模型l一个用于生成HTML/4.01标记的标准RenderKitlJava Message
22、 Service(JMS)J2EE应用组件创建、发送、接收和读取消息的消息通信标准支持分布式通信,具有松散耦合、可靠、异步的特征lJava Transaction API(JTA)JTA提供了划分事务的标准接口,UserTransaction接口是核心大多数情况下使用容器管理的事务,而不是JTAlJavaMail API发送email通知的API包括:一个应用级的接口;和一个服务提供者接口2008-2010 by Li Weigang.All rights reserved.J2EE APIs(3)lJavaBeans Activation Framework(JAF)JavaMail使用它,
23、如处理MIME编码的邮件附件确定任意数据片断的类型;封装对其访问;发现其可用操作;创建可以执行这些操作的合适的JavaBean组件lJava API for XML Processing(JAXP)支持使用DOM、SAX和XSLT处理XML文档支持使用任何XML兼容的解析器和XSL处理器支持W3C XML SchemalJava API for XML-Based RPC(JAX_RPC)使用SOAP标准和HTTP,可以在Internet上实现基于XML的远程过程调用支持WSDL,可以输出和输入WSDL文档可与运行在Java和非Java平台上的web服务客户端和服务器端实现互操作2008-20
24、10 by Li Weigang.All rights reserved.J2EE APIs(4)lJava API for XML Web Services(JAX_WS,new in Java EE 5)是JAX-RPC的升级使用JAXB API绑定XML数据到Java对象引入了面向消息的功能,支持异步编程模型支持SOAP1.2可直接使用 XML/HTTP 绑定 lSOAP with Attachments API for Java(SAAJ)是一个底层API允许生成和使用符合SOAP1.1和SOAP附件规范的消息一般不会直接被使用,而是使用JAX-RPC、JAX-WS2008-2010
25、by Li Weigang.All rights reserved.J2EE APIs(5)lJava API for XML Registries(JAXR)支持ebXML注册和存储标准支持UDDI规范lJ2EE Connector Architecture(JCA)用于开发资源适配器基于J2EE的Web服务与已有EIS间同步或异步集成,这种集成是面向性能的、安全的、可扩展的、基于消息的、和事务的lJDBC API用Java编程语言的方法调用SQL命令分成两部分l应用级接口应用组件访问数据库l服务提供者接口将JDBC驱动程序绑缚到J2EE平台上2008-2010 by Li Weigang.
26、All rights reserved.J2EE APIs(6)lJava Naming and Directory Interface(JNDI)提供目录和命名功能允许J2EE应用程序发现和获得任意类型的对象与实现无关,可以访问多种已有的命名和目录服务使用对象在java:comp/env名字下查找对象lJava Authentication and Authorization Service(JAAS)鉴别和授权特定用户或用户组运行J2EE应用2008-2010 by Li Weigang.All rights reserved.J2EE APIs Example2008-2010 by Li Weigang.All rights reserved.思考与讨论题思考与讨论题l描述J2EE分布式多层应用架构各层组件间的交互过程l容器是什么,为什么需要容器?lJ2EE应用的EAR文件结构?lJ2EE用于处理业务逻辑的组件是什么,包括哪些内容l讨论用于提供J2EE容器服务的API有哪些,它们有什么作用?lJMX和OSGI之间的差异lJCA和Web Service之间的差异