《在线的校友录系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《在线的校友录系统的设计与实现.doc(44页珍藏版)》请在三一办公上搜索。
1、在线的校友录系统的设计与实现目 录论文摘要2Abstract21 系统概论31.1系统目标31.2系统功能简介3 1.2.1普通用户功能3 1.2.2 班级管理员功能4 1.2.3院系管理员功能5 1.2.4 ROOT管理员功能52 系统相关技术62.1 J2EE技术简介62.2 EJB技术简介102.3 JSP技术简介143 系统的环境设置183.1 系统环境183.2 系统设置184 系统的设计214.1 系统结构 214.2 系统的三层实现描述23 4.2.1数据层234.2.2 应用层264.2.3 表示层 285 系统实现30 5.1 任务概述30 5.2 聊天室的功能简介31 5.
2、3 聊天室设计思想31 5.4 聊天室的实现345.5 聊天室系统的测试395.6 聊天室系统的可扩充性论述416 结束语427 参考文献43论文摘要 计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。校友录作为一种方便校友之间联系的实用系统便应运而生。华工校友录是为华工校友之间进行交流和联系提供的一个平台。通过提供完善的校友录服务和规范校友录的管理,可以达到增进校
3、友之间、校友与母校之间的感情,方便校友联系的目的。基于我校现有的校友录系统功能比较简单、页面粗糙、安全性不强的特点,我们参考了我校现有的系统和一些在线应用系统(比如chinaren,友联等),对我校的校友录系统进行了比较全面彻底的改进,使得我校的校友录系统无论是在功能、用户界面、安全性、可扩充性等都得到了根本的改进。鉴于在线的校友录系统一般都没有实现即时通讯的功能,而即时通讯已经成为了现代生活的一种强烈的需求,所以在我校的校友录系统中,增加了聊天室功能,使得用户可以随时随地的即时交流。AbstractThose traditional ways of contact in the past c
4、annot fulfill the needs of the modern life. To provide a convenient contact system for the alumnus, alumni come into existence. The alumni of South China University of Technology is a platform providing channel of contact and communication for the alumnus of SCUT. Through the provided perfect servic
5、e and the normative control, the alumni can bring the alumnus and the alma mater more closely and make convenience for the contact between alumni. But the system function of present alumni of our university is simply, rough and of low security, it cannot so sufficient to serve the communication purp
6、ose. Based on the consulting of the existing alumni system of our school and some other applied on-line system (such as chinaren, YOULIAN), we have made complete and all-sided improvement to our universitys alumni. These include the fundamental improvement in function, customer interface, security a
7、nd expandability. The immediate communication is demanded urgently in present days while most of the online alumni systems lack this function. So in the alumni of our university, we add the function of chatting room to help the immediate communication between customers.关键字: J2EE架构, EJB, JSP, Sybase数
8、据库,Tomcat,JBoss,Javascript1、系统概论1.1系统目标: 华工校友录是为华工校友之间进行交流和联系提供的一个平台。利用我校的网络资源优势和技术优势,通过提供完善的校友录服务和规范校友录的管理,以达到增进校友之间、校友与母校之间的感情,方便校友联系的目的,并以此加快我校的信息化建设。1.2系统功能简介: 华工校友录整个系统是以用户为中心的人性化设计,总体来看,系统可以看作是用户模块和管理模块两大模块的协调运作。以下从用户模块和管理员模块两个方面来说明校友录系统的总体功能:121普通用户功能: 1.2.1.1 用户登陆:用户通过提交用户ID和用户密码进行登陆,系统便会根据这
9、些登陆资料,辨别出用户的身份权限,根据用户是否合法和合法用户的权限级别,为不同级别的用户提供个性化的用户界面。1.2.1.2 用户资料的修改:成功登陆的合法用户有权限修改自己的个人资料。这些资料包括用户的昵称,用户的联系电话,用户的电子邮箱,用户的工作单位,用户的生日等等。1.2.1.3 用户的信息发布功能:(1)资料查看功能:用户可以查看其他用户的个人资料,包括用户ID,用户姓名,用户性别,用户年龄,用户联系电话,用户邮箱地址等。(2)留言板功能:通过留言板,用户可以在班级页面上留言,以此作为用户间联系的一种手段。留言板有字数限制,留言超过一定的时间,系统会自动删除留言。留言版中将标示如下内
10、容:留言用户所属班级,留言用户的ID,留言日期,留言内容。(3)聊天室功能:班级聊天室提供给用户一个即时通讯的平台。通过聊天室,用户可以对所有人即时发布信息,或者对特定的用户发布消息。(4)照片上传、浏览与删除功能: 系统为用户提供照片上传功能,只要用户上传的照片的容量和格式满足一定的要求,系统便接受用户上传的照片,其他用户可到照片区浏览照片。用户可以删除自己所上传的照片。一个班级的所有用户所上传的照片容量不得超过系统为每个班级相册所提供的空间。普通用户具有上传权限,但不具有删除编辑权限。(6) 通讯录功能:该通讯录包括班级成员的联系方式和老师的联系方式内容包括:联系地址、电话、邮箱、QQ等。
11、该功能仅提供查询。普通用户只能添加删改有关自己的信息。(7)消息功能:该功能使得各个用户之间可以互相传递消息。该消息模块是普通邮件系统的一个功能子集,仅提供发送和接受消息功能。该功能提供了一个可供学生之间、学生与学校、老师联系的方式。1.2.1.4校友查询功能:班级用户可以通过输入校友姓名等资料进行查询校友信息,该信息包括用户的ID,姓名,邮箱等信息1.2.1.5 申请VIP、班级管理员功能普通用户可以向上申请VIP、班级管理员等更高一级用户。在用户申请时需提交相关信息,等待上级管理员批复。一般是各地校友会会长和对学校有特殊贡献的校友才能成为VIP。1.2.1.6 用户注销功能:用户退出,返回
12、校友录首页。1.2.2 班级管理员功能1.2.2.1 享有普通会员权限 因为班级管理员既是班级成员又具有管理员的权限。所以班级管理员拥有普通用户功能。1.2.2.2 班级通知发布功能在页面上划出专区作为班级通知栏,班级管理员可以在上面发布和删除班级通知。1.2.2.3 批核用户申请各班级管理员通过查看普通会员申请表,核实用户真实资料,在给予批准或不批准。1.2.2.4 删除班级用户功能管理员可以删除已经注册的班级用户。1.2.2.5设置和修改班级密码 该密码一般由管理员设置几个问题(如:班主任是谁?我们班有多少个人等)组成。普通用户要进入该班级首先必须回答这几个问题,正确则直接加入,否则提交申
13、请待班级管理员审批通过。1.2.3院系管理员功能1.2.3.1 新闻发布功能该功能主要是用于学院、学校有重要新闻、通知等公布时,管理员可以用此功能将新闻等发布于公告栏。同时管理员还有权删除和编辑已经发布的新闻。每个班级都会有一个学校公布栏,而学院公布栏则相对应的班级才有。1.2.3.2 处理学院消息邮箱功能安排专门管理员接收各会员提交的消息,并及时回复。将答复公布于公告栏。此功能可以代替现实中的学校、学院信箱,既方便又高效。1.2.3.3 批核班级管理员功能通过查看普通会员申请表,核实用户真实资料,在给予批准或不批准。因为班级隶属于学院,所有要创建班级,要申请班级管理员,均需通过学院管理员的审
14、批,以便统一管理。当然也可以创建社团之类的组织,可以将此作为特殊班级论。 1.2.3.4 删除班级管理员功能管理员可以删除已经注册的班级管理员,实现对班级管理员的管理。1.2.4 ROOT管理员功能1.2.4.1新闻信息发布功能(1)发布新闻由ROOT管理员发布学校级别的新闻。该新闻发布在主页的新闻栏内。(2)删除新闻只有ROOT管理员有权删除新闻。(3)查看新闻列表 这是root作为普通用户应该有的功能。1.2.4.2用户管理功能(1)添加新的管理员:ROOT可以根据需要添加新的管理员。(2)批管理员申请:ROOT通过查看待审批申请表,审阅资料后作出通过与否的决定。(3)删除已有管理员: R
15、OOT有权根据需要删除已经存在的管理员。 1.2.4.3处理学校消息箱功能安排专门管理员接收各会员提交的消息,并及时回复。将答复公布于公告栏。此功能可以代替现实中的学校信箱,主要是为学生提供一个反映学校有关事情的途径:例如饭堂问题,学习问题等,这样既方便又快捷。1.2.4.4发布集体邮件功能主要是发给各个学院管理员等 2、系统相关技术2、1 J2EE技术简述电子商务和信息技术的快速发展以及对它们的需求给应用程序开发人员带来了新的压力。必须以比以前更少的金钱、更少的资源来更快地设计、开发企业应用程序。为了降低成本,并加快企业应用程序的设计和开发, J2EE 平台提供了一个基于组件的方法,来设计、
16、开发、装配及部署企业应用程序。J2EE 平台提供了多层的分布式的应用模型、组件再用、一致化的安全模型以及灵活的事务控制。您不仅可以用比以前更快的速度向市场推出创造性的客户解决方案,而且您的平台独立的、基于组件的J2EE 解决方案不会被束缚在任何一个厂商的产品和API 上。J2EE 规范定义了以下种类的组件 应用客户组件。 Enterprise JavaBeans 组件。 Servlet及JavaServer Pages(JSP 页面)组件(也被称作Web 组件)。 Applet。一个多层的分布式的应用模型意味着应用逻辑被根据功能划分成组件,并且可以在同一个服务器或不同的服务器上安装组成J2EE
17、 应用的这些不同的组件。一个应用组件应被安装在什么地方,取决于该应用组件属于该多层的J2EE 环境中的哪一层。这些层是客户层、We b层、业务层及企业信息系统层( EIS )等。(1) 客户层J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于Web 的J2EE 应用中,用户的浏览器在客户层中运行,并从一个We b服务器下载Web 层中的静态HTML 页面或由JSP或Servlet 生成的动态HTML 页面。在一个不基于Web 的J2EE 应用程序中,一个独立客户程序不运行在一个HTML 页面中,而是运行在其他一些基于网络的系统(比如手持设备或汽车电话)中,Applet 程
18、序,在客户层中运行,并在不经过Web 层的情况下访问Enterprise Beans。这个不基于Web 的客户层可能也包括一个JavaBeans 类来管理用户输入,并将该输入发送到在企业层中运行的Enterprise Beans类来进行处理。根据J2EE 规范,JavaBeans 类不被视为组件。为J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“ get 和set 方法”。以这种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合JavaBeans 规范中列出的命名和设计约定。(2) Web 层J2EE Web 组件可以由JSP 页面
19、、基于Web 的Applet以及显示HTML 页面的Servlet组成。调用Servlet或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像客户层一样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的Enterprise Beans 类来进行处理。运行在客户层的Web 组件依赖容器来支持诸如客户请求和响应及Enterprise Bean 查询等。(3) 业务层作为解决或满足某个特定业务领域(比如银行、零售或金融业)需要的逻辑的业务代码由运行在业务层的Enterprise Beans 来执行。一个Enterprise Bean
20、 从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储起来。一个Enterprise Beans 还从存储中检索数据,并将数据送回客户程序。运行在业务层的Enterprise Beans 依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池等提供通常都非常复杂的系统级代码。业务层经常被称作Enterprise JavaBeans (EJB )层。业务层和Web 层一起构成了3 层J2EE应用的中间层,而其他两层是客户层和企业信息系统层。(4) 企业信息系统层企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(ERP)、大型机事务
21、处理(mainframe transactionprocessing)、数据库系统及其他遗留信息系统(legacy informationsystems )。J2EE 应用组件因为某种原因( 例如访问数据库) 可能需要访问企业信息系统。J2EE 平台的未来版本将支持Connector 架构,该架构是将J2EE 平台连接到企业信息系统上的一个标准API。(5) 查询服务因为一个J2EE 应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要一种能让客户层和Web 层代码查询并引用其他代码和资源的方法。客户层和Web 层代码使用Java 命名和目录接口(JNDI )来查询用户定义的对象
22、(例如Enterprise Beans )、环境条目(例如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及消息连接。(6) 安全和事务管理诸如安全和事务管理这样的应用行为可以在部署时在Web 和Enterprise Beans 组件上进行配置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了。J2EE 安全模型允许配置一个Web 或Enterprise Beans 组件,使系统资源只能由授权的用户访问。例如,一个Web 组件可以被配置成提示输入用户名和密码。一个Enterprise Beans 组件可以被配置成只让特定团体中的成员调用其某些
23、方法。或者,一个Servlet 组件可以被配置成让某个组织中的所有人都能访问其某些方法,同时只让该组织中的某些享有特权的人访问其中一些方法。同样是该Servlet 组件,可以针对另外一个环境而被配置成让每个人都能访问其所有方法,或者仅让选定的少数人访问其所有方法。J2EE 事务模型使得能够在部署时定义构成一个单一事务的方法之间的关系,以使一个事务中的所有方法被处理成一个单一的单元。这是我们所希望的,因为一个事务是一系列步骤,这些步骤要么全部完成,要么全部取消。例如,一个Enterprise Beans 可能有一组方法,使我们可以通过从第一个账户借出并存入第二个账户的方式而将钱从第一个账户转移到
24、第二个账户。我们希望全部的操作被作为一个单元对待,这样,如果在借出之后存入之前发生了故障,该借出操作被取消。事务属性是在装配期间定义在一个组件上的。这使得能将来自多个应用组件的方法归到一个事务中,这说明,我们可以轻易变更一个J2EE 应用程序中的应用组件,并重新指定事务属性,而不必改变代码或重新编译。在设计应用组件时,要记住,尽管Enterprise Beans 有一个可使应用组件的容器自动启动多步事务的机制,但是Applet 和应用的客户容器可能并不支持这一点。然而, Applet 和应用客户容器总是能够调用支持这一点的一个Enterprise Beans。还应当注意, JSP 页面和Ser
25、vlet 没有被设计成是事务的,它们通常应当将事务工作交给一个Enterprise Bean 来完成。然而,如果事务工作在一个JSP 页面或Servlet 中是必须的,那么此种工作也应当是非常有限的。(7) 可重用应用组件J2EE 组件(Applet 、应用的客户、Enterprise Beans 、JSP 页面及Servlet )都被打包成模块,并以Java Archive (JAR )文件的形式交付。一个模块由相关的组件、相关的文件及描述如何配置组件的配置描述文件组成。例如,在组装过程中,一个HTML 页面和Servlet 被打包进一个模块之中,该模块包含HTML文件、Servlet 组件
26、及相关的配置描述文件,并以一个Web ARchive(WAR )文件的形式交付,该WAR 文件是一个带.war 扩展名的标准JAR 文件。模块的使用使得利用相同组件中的某些组件来组装不同的J2EE 应用程序成为可能。例如,一个J2EE 应用程序的Web 版可能有一个Enterprise Beans 组件,还有一个JSP 页面组件。该Enterprise Beans 组件可以与一个应用客户组件结合,以生成该应用程序的非Web 版本。这不需要进行额外的编码,只是一个装配和部署的问题。并且,可重用组件使得将应用开发和部署过程划分成由不同的角色来完成成为可能,这样,不同的人或者公司就能完成封装和部署过
27、程的不同部分。2. J2EE 平台定义了如下角色:(1) J2EE 产品提供商设计并使J2EE 平台、API 和在J2EE 规范中定义的其他特征能被其他公司或人购得的公司。(2) 应用组件提供商创建用于J2EE 应用程序的Web 组件、Enterprise Beans 组件、Applet 或应用客户程序的公司或个人。在装配过程中,应用组件文件、接口及类被打包进一个JAR 文件中。(3) 应用程序装配商从组件提供商获得应用组件JAR 文件,并将它们组装成一个J2EE 应用的Enterprise Archive(EAR)文件的公司或个人,这种文件是一个带.ear扩展名的标准文件。应用装配商提供与该
28、应用程序相关的整体信息,并使用验证工具来检验EAR 文件的内容是正确的。组装和部署信息存储在一个基于文本的配置描述文件中,此种文件使用XML 标记来标记该文本。应用装配商可以使用一个能通过交互式选择来正确添加XML 标记的装配和配置工具来编辑该配置描述文件。(4) 部署商部署(depley)J2EE 应用程序的公司或个人。其职责包括设定事务控制、安全属性,并根据应用组件提供商提供的指示来标明一个Enterprise Bean 是自己处理自身的存储,还是由一个容器来处理等。部署涉及配置和安装。在配置过程中,部署商遵循应用组件提供商提供的指示来解决外部依赖问题,定义安全设定,以及分配事务属性。在安
29、装过程中,部署商将应用组件安装到服务器上,并生成容器特定的类和接口。(5) 系统管理员配置并管理运行J2EE 应用程序的计算环境和网络基础设施,并监督运行环境的人员。(6) 工具提供商生产被组件提供商、装配商及部署商使用的用于进行开发、组装和打包的工具的公司或个人。(7) 设计用户界面和引擎在为J2EE 应用程序设计用户界面和后端引擎时,需要决定让该程序是基于We b,还是不基于We b。在做出这个决定时,我们可能希望考虑平台配置、下载速度、安全、网络流量和网络服务。例如,包含有用户界面并且经常被大量用户访问的一个Applet 可能需要花很长的时间才能被下载下来,这让用户沮丧。然而,如果知道该
30、Applet要运行在一个公司的内部网内的受控环境中,那么,在这种情况下,该Applet 将拥有一个完全可接受的下载速度。另一个考虑是,繁重的处理应当在哪里执行。例如,如果客户程序在一个蜂窝电话或呼机中执行,服务器应当完成尽量多的计算和数据处理,而客户程序只应显示结果就可以了。然而,设计在一个强大的台式机平台上运行的大型财务分析系统则应当在客户机上完成其复杂计算。应用的客户程序和Applet用户界面通常都是用Swing API 创建的,该API 可从标准版Java 2平台中获得。Swing API 提供了一整套GUI 组件(表格、树形结构、按钮等),这些组件可以被用来实现一种比用一个典型的HTM
31、L 页面所能实现的更为交互的体验。Swing 也支持HTML 文本组件,这个组件可以被用来显示来自一个服务器的响应。客户程序可以直接访问Enterprise Beans 层或企业信息系统层。但应谨慎实现这种程序。绕过EJB 层的程序可以使用JDBC API 来访问一个关系型数据库,但应被限制于对数据库表格进行维护等管理任务上。(8) 设计基于Web 的应用程序基于Web 的应用程序是基于浏览器的,并且,如果它们运行在Internet上,就可能被全世界的人访问。当设计一个基于Web 的应用程序时,不仅需要决定用什么来处理内容和应用逻辑(HTML 、XML 、JSP 页面及Servlet),而且还
32、应当考虑使该应用程序国际化。一个国际化的基于Web 的应用程序向用户提供了选择一种语言,然后根据该选定语言加载应用的正文的方式。对被支持的每种语言而言,应用正文都被存储在一个外部文件中,并且与另外一个文件的关键词相对应。应用代码使用这些关键词及选定的语言来加载正确的文本。国际化API 还提供类来根据选定的语言格式化日期和金钱。一旦制订了使应用程序国际化的细节,就可以决定用什么来实现它了。总的来说,一个基于Web 的应用程序使用HTML 来显示数据; 用X M L来定义数据以使其可被另一个程序读取并处理; 使用JSP 页面或Servlet来管理用户与业务层或存储层之间的数据流。可以在J2EE 平
33、台上实现的基于Web 的应用程序有四种。从简单到复杂排列,它们是: 基本HTML。 带基本JSP 页面或Servlet 的HTML。 带Java Beans 类的JSP页面。 将应用逻辑根据功能划分成区域的高度结构化的应用。当设计一个基于Web 的应用程序时,需要决定用什么来建立它。如果是从建立一个简单的应用程序开始着手,并且认为以后会给该应用程序添加功能,那么,设计就应当适应今后发展的需要。(9) 模型、视图和控制器架构在基于组件的J2EE 平台充分内置了灵活性的情况下,剩下的问题可能是如何组织应用程序以实现简单高效的应用程序升级和维护,以及如何让不懂程序代码的人员避开程序数据。答案就在模型
34、、视图和控制器架构( MVC )的使用之中。MVC 这样的架构是一个描述重现的问题及其解决方案的设计范式,但每次问题重现时,解决方案都不会完全相同。MVC 设计范式包括三种对象:模型( model )提供应用业务逻辑( Enterprise Beans 类);视图( view )则是其在屏幕上的显示( HTML 页面、JSP 页面、Swing GUI ); 控制器则是Servlet 、JavaBeans 或Session Beans 类,它用于管理用户与视图发生的交互。我们可以将控制器想像成处在视图和数据之间,对视图如何与模型交互进行管理。通过使视图完全独立于控制器和模型,就可以轻松替换前端客
35、户程序。并且,通过将控制器和模型代码保持在视图之外,那些不理解这些代码的人员就不能改变他们不应改变的东西。将控制器和模型分开就可以在不影响模型的情况下改变控制器,也可以在不影响控制器的情况下改变模型。例如,如果应用的前端是一个HTML 页面,HTML 专家就可以更新它。如果使用一个JSP页面,将控制器的代码放到一个JavaBeans 或SessionBeans 类中,或使用动作标记(action tags ),这样,JSP 页面就仅包含JSP 代码了。本书将在第二部分中讲解如何使用J2EE来建立企业级的We b应用。2.2 EJB技术简介2.2.1 EJB定义EJB是用于开发和部署多层结构的、
36、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。使用EJB结构编写的应用程序具有可扩展性、交互性以及多用户安全特性。这些应用只需写一次,就可以发布到支持EJB规范的服务器平台上。2.2.2 EJB特点定义了Java服务器端的构件模型。EJB容器作为EJB组件的执行环境,提供服务器端的系统级功能,包括线程管理、交易管理、状态管理、安全属性、资源共享等。定义了访问组件服务的分布式客户接口模型,客户端使用RMIJNDI访问EJB。通过IIOP,EJB可以和CORBA对象互操作。遵循Java编程语言的“一次编写,随处运行”的原则,EJB组件可以只开发一次,然后能够在任何实现了标准接口协议的
37、兼容供应商容器/服务器平台上部署,而不需要重新编译或修改源代码。2.2.3 EJB开发的优势EJB体系结构提高了应用开发人员的生产效率。EJB容器环境自动化了复杂的基础服务的使用,例如,事务处理,线程管理和安全性检查。组件开发者和应用构造者毋须在应用编程逻辑里实现复杂的基础服务。服务器端商务逻辑可以移植。除了Java语言固有的可移植性外,EJB体系结构还在Bean和支持该Bean的容器之间提供了一套标准化的应用程序编程接口。这使开发人员能够将Bean从一种操作环境移植到另一种操作环境,而无须重新编写其源代码。EJB应用是高度可定制的。基础的EJB组件模型支持定制,并且不要求访问源代码。应用程序
38、行为和运行时刻设定可以通过实施时修改一套属性列表进行设置。用EJB组件构建的应用程序可以从一个服务器移植到另一个服务器,从而支持可伸缩性,这是因为在EJB模型中,各个软件组件都是严格分离的。 EJB模型基于个极其通用并且功能强大的多层分布式对象体系结构,它依靠的是业界标准协议。这种模型既适用于小规模应用又适用于大规模的商业事务处理。当对应用程序提出更高的要求时,应用能被移植到更强大的操作环境。2.2.4 组件组件,是事先开发好的,并能组装进正在运行的应用程序系统中的程序代码片断。Java目前有一个组件模型称为JavaBeans,它支持可重用的开发组件。企业JavaBeans (EJB)是在Ja
39、vaBeans组件模型的基础上扩展了的一种用于支持服务器组件的组件模型。EJB结构在逻辑上扩展了JavaBeans组件模型以支持服务器组件。 组件组件是一个可重用软件构件:一个预先构建的封装的代码模块,它能够与其他组件或是硬编码一道很快地生成定制的应用程序。 容器组件在一个称为容器结构中执行。容器为一个或更多的组件提供应用的上下文并且为组件提供管理和控制服务。 组件模型组件模型定义组件的基本的体系结构,指定它的接口的结构,及它与它的容器及另外的组件交互的机制。 间隔尺寸组件的形状和大小各不相同。组件可能是很小的,例如一简单的GUI控件(例如按钮),也许它能实现复杂的应用程序服务,例如账户管理功
40、能。 标准接口作为组件,应用程序代码必须提供允许应用程序的其他部分调用它的函数,以及存取和操作它内部的数据的标准接口。接口的结构是由组件模型定义的。 共享服务器为了从多层体系结构中最大程度的受益,服务器组件应该实现成为共享的服务器。但是构建共享服务器比构造单用户应用功能要困难。高度可伸缩共享服务器需要支持并行用户,需要高效地共享紧张的系统资源,例如线程,进程,内存,数据库连接和网络连接紧张的系统资源。对于商业应用,共享服务器必须参与事务处理。在许多情形中,共享服务器需要加强安全性规则。 即插即用式的集成组件开发者特别不想在每一个组件中实现多线程,并行控制,资源缓冲区,安全性以及事务处理管理。组
41、件模型使这些服务的使用统一并且自动化,从而使应用程序开发变得容易。 跨容器的可移植性容器的操作和行为是由它的组件模型定义的。不幸的是,每个容器用它自己的服务接口实现它自己的服务的集合。结果,为某类环境开发的组件通常对其他类型的环境是不可移植的。然而,企业JavaBeans组件模型则为这些容器系统设计了一个可移植的层次。2.2.5 EJB组件框架企业JavaBean(EJB)是服务器端的组件模型,它简化了使用Java创建企业级分布式组件应用的过程。通过利用业界提供的事先编写的分布式底层结构,可以使用Java轻易的创建服务器端组件。EJB功能强大,是服务器端的快速应用开发(RAD)。使用EJB,可
42、以编写可伸缩的、可靠的、安全的应用,同时不需要自己编写复杂的分布式组件框架 (framework)。采用EJB可以使开发商业应用系统变得容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其他的环境中,随着需求的改变,应用系统可以不加修改地迁移到其他功能更强、更复杂的服务器上。2.2.6 EJB与JavaBeans区别 。很多人往往把JavaBean和EJB混淆起来,JavaBean提供了基于构件的开发机制,JavaBean可以在多个应用系统中重用,开发者可以通过属性表或通过定制的方法来定制JavaBean。多个JavaBean可以组合在一起构成Java Applet或Java应用
43、程序,或建立新的JavaBean,JavaBean容器可以根据JavaBean的属性、方法、事件的定义在设计时或运行时对JavaBean进行操作。EJB是一种非可视化的构件,完全位于服务器端,规范说明详细说明了EJB容器需要满足的需求以及如何和EJB构件相互协作。EJB可以和远程的客户端程序通讯,并提供一定的功能,根据规范说明,EJB是客户机/服务器系统的一部分,如果不和客户端程序交互,EJB一般不执行具体的功能,EJB和JavaBean的一个重要区别是EJB必须在网络计算环境下使用下有意义。和一般的JavaBean一样,EJB是高度可定制的,对EJB进行定制不需要存取源代码,但对EJB可以进
44、行定制不是在开发阶段,而是在部署阶段用部署描述符进行定制。需要说明的是,JavaBean不仅可用于客户端应用程序的开发,也可以用于服务器端应用程序的开发,但和EJB的区别是,如果用JavaBean创建服务器端应用程序,还必须同时实现服务框架,在多层结构分布式应用系统中,服务框架的实现是非常繁琐的,对于EJB来说,服务框架已经提供,因此大大简化了系统的开发过程。2.2.7 EJB类型EJB组件有三种类型:会话Bean、实体Bean、消息驱动Bean。其中会话Bean分为有状态和无状态两种。 无状态会话Bean无状态会话Bean不能够维持一个调用客户的状态,在一个方法调用中,有状态会话Bean可以
45、维持调用客户的状态,当方法执行完,状态不会被保持。在调用完成后,无状态会话Bean被立即释放到缓冲池中,所以无状态会话Bean具有很好的伸缩性,可以支持大量用户的调用。 有状态Bean有状态Bean可以一对一的维持某个调用客户的状态,并且在不同的方法调用中维持这个状态,由于对于每一个并发用户,必须有一个对应的有状态Bean,为了提高系统的效率,有状态Bean可以在一定的客户空闲时间后被写入二级存储设备(如硬盘),在客户发出新的调用请求后,再从二级存储设备恢复到内存中。多用户下,无状态会话Bean运行效率高于有状态Bean。 实体Bean实体Bean代表数据库或另外一个企业应用系统中的数据对象,如代表数据库的一行记录。和会话Bean不同,实体Bean是持久的(persistent),允许共享访问。持久性(Persistence)是指实体Bean的状态不依赖于应用服务器而存在。因为实体Be