1、应用服务器应用服务器 1/81软件构件与中间件技术软件构件与中间件技术1第1页,共81页。应用服务器应用服务器 2/81软件构件与中间件技术软件构件与中间件技术2第2页,共81页。应用服务器应用服务器 3/81软件构件与中间件技术软件构件与中间件技术一、动因一、动因两层架构典型的问题:两层架构典型的问题:客户端程序的分发、升级开销较大客户端程序的分发、升级开销较大浏览器的优势:浏览器的优势:客户端不需要专门的程序客户端不需要专门的程序只要有浏览器就可以访问服务器上的资源只要有浏览器就可以访问服务器上的资源 资源:文件、数据、服务、资源:文件、数据、服务、导致了三层架构的广泛采用应用服务器对三层
2、架构提供了有力的支持应用服务器对三层架构提供了有力的支持3第3页,共81页。应用服务器应用服务器 4/81软件构件与中间件技术软件构件与中间件技术随着网络软件的应用面越来越广随着网络软件的应用面越来越广 服务器端软件变得越来越重要服务器端软件变得越来越重要从早期的从早期的 FTP 服务器、服务器、WWW服务器、邮件服务器服务器、邮件服务器 逐步向更广泛的应用领域发展逐步向更广泛的应用领域发展迫切需要有新型的高层开发平台给予支持迫切需要有新型的高层开发平台给予支持提高开发效率与应用的质量提高开发效率与应用的质量多数网络环境中的高层开发平台逐步将自己多数网络环境中的高层开发平台逐步将自己 定位为一
3、种应用服务器定位为一种应用服务器其中,遵循其中,遵循 J2EE 规范的应用服务器影响最大规范的应用服务器影响最大4第4页,共81页。应用服务器应用服务器 5/81软件构件与中间件技术软件构件与中间件技术二、三层架构二、三层架构 操作系统 应用服务器 应用程序 浏览器 数据库 用户界面层用户界面层 业务逻辑层业务逻辑层 数据访问层数据访问层 5第5页,共81页。应用服务器应用服务器 6/81软件构件与中间件技术软件构件与中间件技术用户界面层用户界面层负责负责 接受用户的输入、向用户输出结果或者提示信息接受用户的输入、向用户输出结果或者提示信息不负责不负责 进行具体的处理过程进行具体的处理过程可能
4、可能 会在用户输入后进行会在用户输入后进行 合法性验证合法性验证业务逻辑层业务逻辑层是是 三层架构的核心层三层架构的核心层是是 连接用户界面层与数据访问层的纽带连接用户界面层与数据访问层的纽带根据用户的请求根据用户的请求 生成检索语句或更新数据库生成检索语句或更新数据库 并把结果返回给并把结果返回给 用户界面层用户界面层数据访问层数据访问层负责实际的数据存储和检索过程负责实际的数据存储和检索过程6第6页,共81页。应用服务器应用服务器 7/81软件构件与中间件技术软件构件与中间件技术三层架构的优点:三层架构的优点:不必为了业务逻辑上的微小变化而迁至整个程序的修改不必为了业务逻辑上的微小变化而迁
5、至整个程序的修改 只需要修改商业逻辑层中的一个函数或一个过程只需要修改商业逻辑层中的一个函数或一个过程增强了代增强了代 码的可重用性码的可重用性便于不同层次的开发人员之间的合作便于不同层次的开发人员之间的合作只要遵循一定的接口标准就可以进行并行开发只要遵循一定的接口标准就可以进行并行开发对于三层架构的应用系统对于三层架构的应用系统前面两章讲到的两层架构技术几乎都要用到前面两章讲到的两层架构技术几乎都要用到也有人在此基础上提出也有人在此基础上提出4层架构、层架构、N层架构层架构 7第7页,共81页。应用服务器应用服务器 8/81软件构件与中间件技术软件构件与中间件技术三层架构与两层架构比较三层架
6、构与两层架构比较1)两层架构)两层架构优点:优点:由于客户端与服务器的直接相连,因此响应速度快由于客户端与服务器的直接相连,因此响应速度快 操作界面漂亮、形式多样操作界面漂亮、形式多样缺点:缺点:需要专门的客户端安装程序需要专门的客户端安装程序配置、维护开销大配置、维护开销大 8第8页,共81页。应用服务器应用服务器 9/81软件构件与中间件技术软件构件与中间件技术2)三层架构)三层架构 优点:优点:客户接入简单客户接入简单不需要在本地安装软件,只需要浏览器不需要在本地安装软件,只需要浏览器业务扩展简单方便业务扩展简单方便通过增加网页即可增加服务器功能通过增加网页即可增加服务器功能 维护简单方
7、便维护简单方便只需要改变网页,即可实现所有用户的同步更新只需要改变网页,即可实现所有用户的同步更新 缺点:缺点:界面灵活性降低界面灵活性降低页面动态刷新,响应速度明显降低页面动态刷新,响应速度明显降低 第9页,共81页。应用服务器应用服务器 10/81软件构件与中间件技术软件构件与中间件技术J2EE J2EE 平台对三层架构的支持平台对三层架构的支持1 1)基本支持架构)基本支持架构 操作系统 JSP POJO 应用服务器 应用程序 浏览器 数据库 Web 容器(容器(Web服务器)服务器)构件构件容器容器(EJB、POJO容器)容器)数据访问层 POJO用户界面层 业务逻辑层 Servlet
8、 EJB第10页,共81页。应用服务器应用服务器 11/81软件构件与中间件技术软件构件与中间件技术2 2)SSH SSH 支持支持 操作系统 应用服务器 应用程序 浏览器 数据库 用户界面层 业务逻辑层 数据访问层 Structs Spring Hibernate 11第11页,共81页。应用服务器应用服务器 12/81软件构件与中间件技术软件构件与中间件技术Web 服务器、应用服务器、数据服务器服务器、应用服务器、数据服务器 由于客户/服务器模式在网络环境下的应用十分普遍,因此现在出现了越来越多的服务器一般人们理解的服务器是一种高性能计算机,作为网络的节点,存储、处理网络上80的数据、信息
9、而个人电脑、笔记本、PDA、手机等固定或移动的网络终端可以从服务器获取信息,或者通过服务器进行交互服务器的构成与微机基本相似但在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在差异很大硬件服务器上加载了相应的服务器端软件后硬件服务器上加载了相应的服务器端软件后 就构成了上述各类服务器就构成了上述各类服务器12第12页,共81页。应用服务器应用服务器 13/81软件构件与中间件技术软件构件与中间件技术Web服务器服务器 专门处理专门处理HTTP请求请求(request)Web 服务器可以单独使用,为简单系统提供支持服务器可以单独使用,为简单系统提供支持应用服务器应用服务器以为应用程
10、序提供商业逻辑支持为主以为应用程序提供商业逻辑支持为主目前的大多数应用服务器包含一个内置的目前的大多数应用服务器包含一个内置的Web服务器服务器也可以将也可以将Web服务器独立配置,和应用程序服务器一前一后服务器独立配置,和应用程序服务器一前一后这种功能的分离有助于提高性能,给最佳产品的选取留有余地这种功能的分离有助于提高性能,给最佳产品的选取留有余地 数据服务器数据服务器是安装了数据库管理系统的服务器是安装了数据库管理系统的服务器13第13页,共81页。应用服务器应用服务器 14/81软件构件与中间件技术软件构件与中间件技术三、三、Web Web 服务器服务器1、概述、概述2、HTTP3、H
11、TML4、动态页面、动态页面14第14页,共81页。应用服务器应用服务器 15/81软件构件与中间件技术软件构件与中间件技术Web服务器主要处理遵循服务器主要处理遵循HTTP的请求消息的请求消息 当接收到一个当接收到一个HTTP请求消息时请求消息时 会返回一个会返回一个HTTP响应消息响应消息 例如送回一个例如送回一个HTML页面页面为了处理一个请求为了处理一个请求 可以响应一个静态页面或图片可以响应一个静态页面或图片或者或者进行页面跳转进行页面跳转或者或者 把动态响应的产生委托给一些其它的程序把动态响应的产生委托给一些其它的程序 CGI脚本脚本JSP(JavaServer Pages),se
12、rvlets,ASP(Active Server Pages)1、概述、概述15第15页,共81页。应用服务器应用服务器 16/81软件构件与中间件技术软件构件与中间件技术 Web 服务器服务器 Web 浏览器浏览器 1.向向 Web 服务器发出服务器发出 Web 请求请求 2.查找页面查找页面 3.向向 Web 浏览器发送页面内容浏览器发送页面内容 其特征包括:其特征包括:(1)应用层使用应用层使用HTTP协议协议 协议协议(2)HTML文档格式文档格式 描述语言描述语言(3)浏览器统一资源定位器浏览器统一资源定位器(URL)查找方式查找方式16第16页,共81页。应用服务器应用服务器 17
13、/81软件构件与中间件技术软件构件与中间件技术HTTP的主要处理步骤:的主要处理步骤:连接连接=请求请求=应答应答=关闭关闭连接连接 Web浏览器与浏览器与Web服务器建立连接服务器建立连接 打开一个称为打开一个称为socket(套接字)的虚拟文件(套接字)的虚拟文件(2)请求请求 Web浏览器通过浏览器通过socket向向Web服务器提交请求服务器提交请求 HTTP的请求一般是的请求一般是GET或或POST命令命令 GET命令的格式为:命令的格式为:GET 路径路径/文件名文件名 HTTP/1.0 文件名指出所访问的文件文件名指出所访问的文件 HTTP/1.0指出指出Web浏览器使用的浏览器
14、使用的HTTP版本版本 POST用于用于FORM参数的传递参数的传递2、HTTP17第17页,共81页。应用服务器应用服务器 18/81软件构件与中间件技术软件构件与中间件技术(3)应答应答 请求消息通过请求消息通过HTTP协议传送给协议传送给Web服务器服务器 Web服务器接到后,进行事务处理服务器接到后,进行事务处理 处理结果又通过处理结果又通过HTTP传回给传回给Web浏览器浏览器 从而在从而在Web浏览器上显示出所请求的页面浏览器上显示出所请求的页面(4)关闭连接关闭连接 当应答结束后,当应答结束后,Web浏览器与浏览器与Web服务器必须断开服务器必须断开 以保证其它以保证其它Web浏
15、览器能够与浏览器能够与Web服务器建立连接服务器建立连接18第18页,共81页。应用服务器应用服务器 19/81软件构件与中间件技术软件构件与中间件技术GET/simple.htm HTTP/1.1Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*Accept-Language:zh-cnAccept-Encoding:g
16、zip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 1.1.4322;.NET CLR 2.0.50727)Host:localhost:8080Connection:Keep-Alive一个例子(一个例子(”hello world”)请求消息:请求消息:19第19页,共81页。应用服务器应用服务器 20/81软件构件与中间件技术软件构件与中间件技术HTTP/1.1 200 OKServer:Microsoft-IIS/5.1X-Powered-By:ASP.NETDate:Fri,
17、03 Mar 2006 06:34:03 GMTContent-Type:text/htmlAccept-Ranges:bytesLast-Modified:Fri,03 Mar 2006 06:33:18 GMTETag:5ca4f75b8c3ec61:9eeContent-Length:37hello world应答消息:应答消息:200就表示操作成功404表示对象未找到500表示服务器错误403表示不能浏览目录20第20页,共81页。应用服务器应用服务器 21/81软件构件与中间件技术软件构件与中间件技术3、HTMLHTML(Hypertext Markup Language)即超文本标
18、记语言即超文本标记语言是用来制作网页的标记语言是用来制作网页的标记语言 是一种标记语言:不需要编译是一种标记语言:不需要编译,直接由浏览器执行直接由浏览器执行是一个文本文件是一个文本文件,包含了一些包含了一些HTML元素元素,标签等标签等文件必须使用文件必须使用html或或htm为文件名后缀为文件名后缀是大小写不敏感的:是大小写不敏感的:HTML与与html是一样的是一样的21第21页,共81页。应用服务器应用服务器 22/81软件构件与中间件技术软件构件与中间件技术高级软件工程 2009软件构件与中间件课程设置目标:如何提高软件的开发效率与产品质量。特别是:.讲义下载(随着讲课进度的推进而不
19、断更新)第0讲:课程介绍(2.20)第1讲:网络软件(2.20)第2讲:中间件概述(2.27、3.06)第3讲:软件交互基础(3.13)第4讲:远程过程调用(3.20)第5讲:对象请求代理(3.27)第6讲:应用服务器(1)(4.03)第7讲:应用服务器(2)(4.10)第8讲:支持Web服务的中间件(4.17)22第22页,共81页。应用服务器应用服务器 23/81软件构件与中间件技术软件构件与中间件技术4、动态页面、动态页面静态页面静态页面 是是 不能根据外部信息自动更新内容的页面不能根据外部信息自动更新内容的页面静态页面静态页面 不是不是 网站上没有动画网站上没有动画静态页面静态页面 一
20、般是一般是 html或或htm 文件文件如果想更新网页内容如果想更新网页内容就要通过就要通过FTP软件把文件软件把文件DOWN下来用网页制作软件修改下来用网页制作软件修改 动态页面动态页面 可以通过外部系统对页面的内容进行更新可以通过外部系统对页面的内容进行更新 有数据库:页面里只是写代码,内容保存在数据库里有数据库:页面里只是写代码,内容保存在数据库里更新方便,易操作更新方便,易操作 动态页面也可以在发布时生成动态页面也可以在发布时生成htm后缀的文件后缀的文件动态网站常用开发语言有:动态网站常用开发语言有:CGI,PHP,ASP,JSP23第23页,共81页。应用服务器应用服务器 24/8
21、1软件构件与中间件技术软件构件与中间件技术CGI(Common Gateway Interface):公用网关接口:公用网关接口页面通过页面通过CGI调用在调用在WEB服务器的计算机上运行的程序服务器的计算机上运行的程序再将其运行结果通过再将其运行结果通过WEB服务器传输到客户端的浏览器上服务器传输到客户端的浏览器上CGI建立建立WEB页面与脚本程序之间的联系页面与脚本程序之间的联系可以利用脚本程序来处理访问者输入的信息并据此作出响应可以利用脚本程序来处理访问者输入的信息并据此作出响应这样的编制方式比较困难而且效这样的编制方式比较困难而且效 率低下率低下 每一次修改程序都必须重新将每一次修改程
22、序都必须重新将CGI程序编译成可执行文件程序编译成可执行文件最常用于编写最常用于编写CGI技术的语言是技术的语言是Perl(Practical Extraction and Report Language,文字分析报告语言),文字分析报告语言)它具有强大的字符串处理能力它具有强大的字符串处理能力特别适合用于分割处理客户端特别适合用于分割处理客户端Form提交的数据串提交的数据串(1)CGI24第24页,共81页。应用服务器应用服务器 25/81软件构件与中间件技术软件构件与中间件技术PHP(Hypertext Preprocessor):超文本预处理器):超文本预处理器一种易于学习和使用的服务
23、器端脚本语言一种易于学习和使用的服务器端脚本语言是嵌入是嵌入HTML文件的一种脚本语文件的一种脚本语 言。言。语法大部分是从语法大部分是从C,JAVA,PERL语言中借来语言中借来它是当今它是当今 INTERNET上流行的脚本语言上流行的脚本语言只需要很少的编程知识就能使用只需要很少的编程知识就能使用PHP建立一个建立一个真正交互的真正交互的WEB站点站点可以结合可以结合HTML语言共同使用语言共同使用与与HTML语言具有非常好的兼容性语言具有非常好的兼容性使用者可以直接在脚本代码中加入使用者可以直接在脚本代码中加入HTML标签标签在在HTML标签中加入脚本代码从而更好的实现页面控制标签中加入
24、脚本代码从而更好的实现页面控制提供更加丰富的功能提供更加丰富的功能(2)PHP25第25页,共81页。应用服务器应用服务器 26/81软件构件与中间件技术软件构件与中间件技术ASP(Active Server Pages)微软开发的一种类微软开发的一种类HTML、Script与与CGI的结合体的结合体没有提供自己专门的编程语言没有提供自己专门的编程语言允许用户使用包括允许用户使用包括VBSCRIPT,JAVASCRIPT等在内的许多已等在内的许多已有的脚本语言编写有的脚本语言编写 ASP的应用程序的应用程序ASP的程序编制比的程序编制比HTML更方便且更有灵活性更方便且更有灵活性在在WEB服务
25、器端运行,运行后再将运行结果以服务器端运行,运行后再将运行结果以HTML格式传送格式传送至客户端的浏览器至客户端的浏览器(3)ASP26第26页,共81页。应用服务器应用服务器 27/81软件构件与中间件技术软件构件与中间件技术JSP(Java Sever Pages)和)和 ASP在技术方面有许多相似之处在技术方面有许多相似之处都是为实现动态交互网页制作提供的技术环境支持都是为实现动态交互网页制作提供的技术环境支持都能够为程序开发人员提供实现应用程序的编制都能够为程序开发人员提供实现应用程序的编制及及 将将 网页网页 与与 构件构件 从逻辑上分离的技术从逻辑上分离的技术都能够替代都能够替代C
26、GI:使网站建设与发展变的较为简单与快捷:使网站建设与发展变的较为简单与快捷不过两者对实现基础要求不相同不过两者对实现基础要求不相同ASP一般只应用于一般只应用于Windows NT/2000平台平台JSP则可以不加修改地在则可以不加修改地在85%以上的以上的Web Server上运行上运行其中包括了其中包括了NT的系统的系统基于基于JSP技术的应用程序比基于技术的应用程序比基于ASP的应用程序易于维的应用程序易于维 护和管理护和管理(4)JSP27第27页,共81页。应用服务器应用服务器 28/81软件构件与中间件技术软件构件与中间件技术在一个JSP文件第一次被请求时JSP引擎把该JSP文件
27、转换成为一个servlet客户访问这个页面的时候如果该文件没有发生过更改JSP引擎就直接调用已经装载的Servlet如果已经做过修改的话那就会再次执行以上过程:翻译、编译并装载 在JSP技术中,JavaBean实现了业务逻辑部分它把数据返回给JSP页面由JSP页面负责格式化数据并输出到客户端的浏览器Sun的Enterprise BluePrints 提供了大量指导原则、设计模式和很好的例子:网上宠物店:Java Pet StoreJSP 与与 Servlet28第28页,共81页。应用服务器应用服务器 29/81软件构件与中间件技术软件构件与中间件技术(5)AJAX传统的传统的Web应用允许用
28、户端填写表单(应用允许用户端填写表单(form)当送出表单时就向当送出表单时就向Web服务器发送一个请求服务器发送一个请求服务器接收并处理传来的表单服务器接收并处理传来的表单然后送回一个新的网页然后送回一个新的网页这个做法浪费了许多带宽:这个做法浪费了许多带宽:在前后两个页面中的大部分在前后两个页面中的大部分HTML码往往是相同的码往往是相同的由于每次都需要向服务器发送请求由于每次都需要向服务器发送请求应用的响应时间就依赖应用的响应时间就依赖 于服务器的响应时间于服务器的响应时间这导致了用户界面的响应比本机应用慢得多这导致了用户界面的响应比本机应用慢得多29第29页,共81页。应用服务器应用服
29、务器 30/81软件构件与中间件技术软件构件与中间件技术AJAX(Asynchronous JavaScriptand XML)应用)应用可以仅向服务器发送并取回必需的数据可以仅向服务器发送并取回必需的数据它使用它使用SOAP或或 其它一些基于其它一些基于XML的页面服务接口的页面服务接口并在客户端采用并在客户端采用JavaScript处理来自服务器的响应处理来自服务器的响应因为在服务器和浏览器之间交换的数据大量减少因为在服务器和浏览器之间交换的数据大量减少大大 约只有原来的约只有原来的5%结果我们就能看到响应(服务器响应)更快的应用(結果)结果我们就能看到响应(服务器响应)更快的应用(結果)
30、同时很多的处理工作可以在发出请求的客户端机器上完成同时很多的处理工作可以在发出请求的客户端机器上完成所以所以Web服务器的服务器的 处理时间也减少了处理时间也减少了30第30页,共81页。应用服务器应用服务器 31/81软件构件与中间件技术软件构件与中间件技术Ajax的优点:的优点:能在不更新整个页面的前提下维护数据能在不更新整个页面的前提下维护数据使使Web应用程序更为迅捷地回应用户动作应用程序更为迅捷地回应用户动作并避免了在网络上发送那些没有改变过的信息并避免了在网络上发送那些没有改变过的信息Ajax不需要不需要 任何浏览器插件任何浏览器插件但需要但需要 用户允许用户允许JavaScrip
31、t在浏览器上执行在浏览器上执行缺点:可能破坏浏览器后退按钮的正常行为:在动态更新页面的情况下用户无法回到前一个页面状态这是因为浏览器仅能记下历史记录中的静态页面一个被完整读入的页面与一个已经被动态修改过的页面 之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。31第31页,共81页。应用服务器应用服务器 32/81软件构件与中间件技术软件构件与中间件技术开发者已想出了种种办法来 解决这个问题当中大多数都是在用户单击后退按钮访问历史记录时通过建立或使用一个隐藏的IFRAME来重现页面上的变更例如,当用户在 Google Maps中
32、单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片 断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚 点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。32第32页,共81页。应用服务器应用服务器 33/81软件构件与中间件技术软件构件与中
33、间件技术1、软件构件2、EJB3、EJB构件容器4、消息截取器33第33页,共81页。应用服务器应用服务器 34/81软件构件与中间件技术软件构件与中间件技术1、软件构件、软件构件从一般意义上讲从一般意义上讲构件是构件是 系统中可以明确辨识的构成成分系统中可以明确辨识的构成成分软件构件则是软件构件则是 软件系统中软件系统中 具有一定意义的具有一定意义的相对独立的构成成分相对独立的构成成分目前讨论的软件构件目前讨论的软件构件主要着眼于其易复用、易维护意义主要着眼于其易复用、易维护意义34第34页,共81页。应用服务器应用服务器 35/81软件构件与中间件技术软件构件与中间件技术代码(程序)代码(
34、程序)目标码态 源代码态 运行态 存储态 文档文档 编译 加载 软件软件=程序程序+文档文档静态 35第35页,共81页。应用服务器应用服务器 36/81软件构件与中间件技术软件构件与中间件技术定义定义1 Szyperski 1996 一个构件是一个组装单元一个构件是一个组装单元它具有约定式规范的接口以及明确的依赖环境它具有约定式规范的接口以及明确的依赖环境构件可以被独立地部署,由第三方组装构件可以被独立地部署,由第三方组装定义定义2 SEI 2001 构件是一个不透明的功能实现体构件是一个不透明的功能实现体能够被第三方所组装,且符合一个构件模型能够被第三方所组装,且符合一个构件模型 36第3
35、6页,共81页。应用服务器应用服务器 37/81软件构件与中间件技术软件构件与中间件技术定义定义3:构件是可以被复用的软件实体,构件是可以被复用的软件实体,由构件规约与构件实现两部分组成由构件规约与构件实现两部分组成复用复用 可以发生在不同应用领域的软件系统之间可以发生在不同应用领域的软件系统之间可以发生在相同领域内的不同系统之间,可以发生在相同领域内的不同系统之间,可以发生在一个系统在演化过程中的不同阶段之间可以发生在一个系统在演化过程中的不同阶段之间 37第37页,共81页。应用服务器应用服务器 38/81软件构件与中间件技术软件构件与中间件技术构件规约(构件规约(specificatio
36、n)构件规约构件规约用于描述如何对构件进行使用与管理用于描述如何对构件进行使用与管理是对构件外部特征的形式化描述是对构件外部特征的形式化描述是关于构件的知识是关于构件的知识 构件规约构件规约 构件接口(客户合约)构件接口(客户合约)构件信息(组装合约)构件信息(组装合约)构件的运行管理规约(运行合约)构件的运行管理规约(运行合约)构件的使用规约构件的使用规约 38第38页,共81页。应用服务器应用服务器 39/81软件构件与中间件技术软件构件与中间件技术构件实现构件实现(Implementation)构件实现是构件内部的代码实现体构件实现是构件内部的代码实现体对于一个面向过程的系统对于一个面向
37、过程的系统一个构件由系统的一个或多个紧耦合的模块组成一个构件由系统的一个或多个紧耦合的模块组成对于一个面向对象的软件系统对于一个面向对象的软件系统一个构件由系统的一个或多个紧耦合的对象组成一个构件由系统的一个或多个紧耦合的对象组成 39第39页,共81页。应用服务器应用服务器 40/81软件构件与中间件技术软件构件与中间件技术 (a)(b)(c)构件 构件实现 构件规约 构件实现 构件规约1 构件规约2 构件实现 1 构件规约 构件规约 构件实现2 构件的规约与实现构件的规约与实现40第40页,共81页。应用服务器应用服务器 41/81软件构件与中间件技术软件构件与中间件技术EJB:Enter
38、prise JavaBean是服务器端的软件构件规范是服务器端的软件构件规范是面向分布式、事务处理的企业级应用系统的构件是面向分布式、事务处理的企业级应用系统的构件而在此之前的而在此之前的 JavaBean重点在于允许开发者重点在于允许开发者在开发工具中可视化地操纵构件在开发工具中可视化地操纵构件EJB保持了保持了Java“一次编写,随处可用一次编写,随处可用”的特点的特点2、EJB41第41页,共81页。应用服务器应用服务器 42/81软件构件与中间件技术软件构件与中间件技术构件包含对企业数据进行操作的业务逻辑构件包含对企业数据进行操作的业务逻辑构件实例由容器在运行时创建并管理构件实例由容器
39、在运行时创建并管理构件在部署时可以通过编辑其环境入口而定制构件在部署时可以通过编辑其环境入口而定制各种服务信息(事务、安全等属性)各种服务信息(事务、安全等属性)被从构件类中剥离出来被从构件类中剥离出来 并使得服务信息可以在系统组装或者部署时管理并使得服务信息可以在系统组装或者部署时管理42第42页,共81页。应用服务器应用服务器 43/81软件构件与中间件技术软件构件与中间件技术客户对构件的访问通过容器间接进行客户对构件的访问通过容器间接进行如果构件仅使用如果构件仅使用EJB规范定义的服务规范定义的服务它可以被部署在任意容器中它可以被部署在任意容器中构件可以在不修改源代码、不重新编译的前提下
40、构件可以在不修改源代码、不重新编译的前提下 加入到一个应用系统中加入到一个应用系统中构件提供者定义构件的客户视图构件提供者定义构件的客户视图43第43页,共81页。应用服务器应用服务器 44/81软件构件与中间件技术软件构件与中间件技术EJB 是相对粗粒度的业务对象是相对粗粒度的业务对象例如定单、雇员记录等例如定单、雇员记录等细粒度的对象细粒度的对象例如定单行、雇员地址等例如定单行、雇员地址等不适于模型化为构件不适于模型化为构件EJB 的粒度的粒度44第44页,共81页。应用服务器应用服务器 45/81软件构件与中间件技术软件构件与中间件技术Enterprise BeaninstanceCon
41、tainerEJB ServerClientDeployment descriptorcomponentcontractclient-viewEJB边界边界45第45页,共81页。应用服务器应用服务器 46/81软件构件与中间件技术软件构件与中间件技术ContainerEJB ServerClientEJBHomeEJBEJBObjectTransactionSecurityJDBCJMS46第46页,共81页。应用服务器应用服务器 47/81软件构件与中间件技术软件构件与中间件技术构件客户构件客户 系统组装者系统组装者 构件容器构件容器 EJB 构件实现构件实现 系统部署者系统部署者提供给系
42、统开发者的信息提供给系统开发者的信息 EJB构件的规约构件的规约47第47页,共81页。应用服务器应用服务器 48/81软件构件与中间件技术软件构件与中间件技术(1)最基本的)最基本的EJB实现与客户程序实现与客户程序 EJBEJB构件实现构件实现 客户程序接接口口实现体实现体部署描述48第48页,共81页。应用服务器应用服务器 49/81软件构件与中间件技术软件构件与中间件技术1)EJB构件接口构件接口构件提供者为便于复用者(客户)复用该构件构件提供者为便于复用者(客户)复用该构件所提供的必要的信息所提供的必要的信息(特别是接口信息)(特别是接口信息)构件与容器协作实现这些接口构件与容器协作
43、实现这些接口49第49页,共81页。应用服务器应用服务器 50/81软件构件与中间件技术软件构件与中间件技术构件的接口主要包括实例接口与类型接口构件的接口主要包括实例接口与类型接口EJB:Home Interface Component Interface(Remote Interface)这两类接口的划分与客户向服务器发出的请求密切相关这两类接口的划分与客户向服务器发出的请求密切相关一种请求一种请求 特定于具体构件实例特定于具体构件实例 与这种请求对应的接口简称为实例接口与这种请求对应的接口简称为实例接口一种请求一种请求 不特定于具体构件实例不特定于具体构件实例 与这种请求对应的接口简称为类
44、型接口与这种请求对应的接口简称为类型接口50第50页,共81页。应用服务器应用服务器 51/81软件构件与中间件技术软件构件与中间件技术import java.io.Serializable;import java.rmi.RemoteException;import javax.ejb.CreateException;import javax.ejb.EJBHome;public interface ConverterHome extends EJBHome Converter create()throws RemoteException,CreateException;import jav
45、ax.ejb.EJBObject;import java.rmi.RemoteException;public interface Converter extends EJBObject public double dollarToYen(double dollars)throws RemoteException;public double yenToEuro(double yen)throws RemoteException;51第51页,共81页。应用服务器应用服务器 52/81软件构件与中间件技术软件构件与中间件技术import javax.ejb.SessionBean;import
46、javax.ejb.SessionContext;public class ConverterEJB implements SessionBean public double dollarToYen(double dollars)return dollars*121.6000;public double yenToEuro(double yen)return yen*0.0077;public ConverterEJB()public void ejbCreate()public void ejbRemove()public void ejbActivate()public void ejbP
47、assivate()public void setSessionContext(SessionContext sc)2)EJB构件实现类构件实现类52第52页,共81页。应用服务器应用服务器 53/81软件构件与中间件技术软件构件与中间件技术 EJBModule1 Converter org.ejb.sessionbean.ConverterHome org.ejb.sessionbean.Converter org.ejb.sessionbean.ConverterBean Stateless Container 3)EJB构件部署描述符构件部署描述符53第53页,共81页。应用服务器应用服
48、务器 54/81软件构件与中间件技术软件构件与中间件技术 Jar 文件 描述 Java Home Interface Java Remote InterfaceJava 实现类构件封装体构件封装体54第54页,共81页。应用服务器应用服务器 55/81软件构件与中间件技术软件构件与中间件技术import javax.naming.Context;import javax.naming.InitialContext;import javax.rmi.PortableRemoteObject;import Converter;import ConverterHome;public class Co
49、nverterClient public static void main(String args)try Context ic=new InitialContext();Object objref=ic.lookup(“MyConverter”);ConverterHome home=(ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);Converter currencyConverter=home.create();double amount=currencyConverter.dollarToYen
50、(100.00);System.out.println(String.valueOf(amount);amount=currencyConverter.yenToEuro(100.00);System.out.println(String.valueOf(amount);currencyConverter.remove();catch(Exception ex)System.err.println(“Caught an unexpected exception!”);ex.printStackTrace();55第55页,共81页。应用服务器应用服务器 56/81软件构件与中间件技术软件构件与
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。