西电21秋《软件构件与中间件技术》模拟试题二答案
1. (15分)软件中间件从诞生到广泛应用,经历了从单个中间件到集成中间件的发展过程,请回答以下关于软件中间件的问题:
a) 什么是软件中间件?软件中间件的根本目的是什么?
b) 典型集成软件中间件提供的开发支持有哪些?
c) 简述b)中的开发支持如何帮助开发人员减少开发工作量?
答案要点:
a) 中间件是在操作系统(数据库管理系统)与应用系统之间的一层软件,通常为分布式应用的开发、部署、运行与管理提供支持。中间件的根本目的是从应用软件中提取共性,从而降低高层应用软件开发的复杂性。
b) 典型集成中间件提供的开发支持主要有三方面:
提供构件运行环境
提供互操作机制
提供公共服务
c) 具体如下:
运行环境的帮助:中间件一般通过构件容器为构件提供基本的运行环境,具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。
互操作机制的帮助:基于中间件的互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。
公共服务的帮助:集成中间件将早期各种中间件中针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序。基于中间件提供的公共服务,开发者可以将主要精力集中于系统的具体业务逻辑。
2. (15分)下图给出了CORBA所基于的OMA参考模型,请回答以下相关问题:
a) 对外请求代理(ORB)在系统中主要作用是什么?结合ORB结构说明如何支撑实现静态远程对象的调用(提示:结合ORB中的Stub/Skeleton机制进行说明)?
b) 在OMA参考模型中将构成系统的对象分组的依据是什么?图中的三组哪些组体现了CORBA对于系统服务的支撑?
c) 对象服务与公共设施两组对象提供的常用服务有哪些?请至少分别给出两种。
答案要点:
a) ORB是OMA参考模型的核心,它提供了分布式对象之间透明地发送请求或接收响应的基本机制,即ORB用于实现分布式对象之间的交互。ORB支持客户端与分布式对象通信的最基本方式是Stub/Skeleton结构,即客户端利用Stub发起调用,而服务端采用Skeleton分发请求,客户端与服务端程序均不需自己实现底层通信。
b) 分组的主要依据是对象共性的通用程度,即将最通用的共性抽象为对象服务,将可用于大多数应用领域的、面向终端用户的设施抽象为公共设施,将领域内通用的共性抽象为领域接口,最后的应用程序接口中包含的是不具通用性的特定功能。对象服务、公共设施和领域接口体现了CORBA对于系统服务的支撑。
c)
对象服务:对象命名服务、事务服务、安全性服务等;
公共设施:打印服务、数据库服务、电子邮件服务等;
领域接口:电信、金融、医疗等领域内通用的功能等。
3. (15分)回答下面关于CORBA值类型的问题:
a) 值类型的主要作用是什么?
b) 在网络中传递的值类型是远端对象的引用还是远端对象的副本?接收端操作接收到的值类型对象是否会直接改变远端相应对象状态?为什么?
c) 在某银行账户管理系统中,服务端将账户设置为值类型,此时客户端在将服务端返回的账户对象修改后,服务端账户对象状态是否直接改变?如否,如何使得客户端修改在服务端生效?
答案要点:
a) 值类型的主要作用是在网络中传递对象的状态信息,即约定在网络中要交换的对象的类型。
b) 传递的是远端对象的副本;不会直接改变远端对象的状态,因为接收端接收到的仅是远端对象的副本,因此操作接收结果仅会直接影响本地副本,而不会直接影响远端对象的状态。
c) 服务端账户对象状态不会直接改变。可在服务端的账户管理员接口中增加一个上传账户信息的操作,该操作将客户端账户对象上传到服务端,完成相应账户信息的修改。
4. (15分)J2EE规范中给出了基于多层结构的J2EE应用程序基本结构,请回答以下相关问题:
a) 请简单描述J2EE应用程序的基本结构,说明每一层的主要作用及其中的主要构件。
b) 说明布署描述符的主要作用。
答案要点:
a) J2EE应用程序构成典型的4层结构,包括客户端层,Web层、EJB层与数据层,如下图所示:
其中客户层主要完成界面的展现和与用户的交互,包括Applet和Application Client等构件;
Web层接收客户层的HTTP请求,调用后台EJB构件完成相应操作,并为客户层生成HTTP的响应,包括Servlet、JSP等构件;
EJB层实现系统的核心业务逻辑,在完成相应操作时可能需要对数据层数据进行相应操作,包括EJB构件;
数据导存储系统的业务数据。
b) 一个布署描述符是一个XML格式的文件,该文件中描述了当前模块中所包含的内容(构件或模块)和模块所需要的环境,J2EE平台的丰富的源代码以外的可定制性大部分都体现在部署描述符中。开发人员通过在布署描述符中以配置的方式可以使用J2EE平台提供的丰富的系统级服务。
5. (15分)现拟开发一个提供购物车功能的EJB构件,该构件应至少提供添加商品、去除商品、查询已选商品、提交等功能,要求该构件应能为每个使用者提供单独的购物车功能,请回答以下相关问题:
a) 该构件应设计为会话构件(Session Bean)还是实体构件(Entity Bean)?为什么?
b) 若设计为会话构件,则应设计为有状态的还是无状态的?为什么?如何在实现的构件中保存使用者当前选择的商品?
c) 请给出该EJB构件的Remote接口、Home接口以及EnterpriseBean类的代码框架。(给出接口中方法及类中的成员列表即可)
答案要点:
a) 该构件应设计为会话构件。因为该构件提供的是与客户端交互的会话功能,而不是用于封闭数据库操作的,因此应设计为会话构件。
b) 应设计为有状态会话构件。因为该构件需要保存与客户端交互的中间状态,即需要记录当前客户端所选择的商品列表及客户的基本信息,因此一个对象只能被一个客户端所专用,应设计为有状态会话构件。可在EJB类设置相应的属性(数据成员)来保存使用者当前选择的商品,因为每个客户端专用一个对象,因此可用该对象的属性保存使用者相关的商品信息。
c) 代码框架如下:
Remote接口:
ShoppingRemote{
public void addCom(Commodity comm);
public void removeComm(Commodity comm);
public Commodity find(String commID);
public void commit();
}
Home接口:
ShoppingHome{
public ShoppingRemote create(String customerName);
}
EnterpriseBean类:
ShoppingBean{
public void ejbCreate(String customerName){}
public void addCom(Commodity comm){}
public void removeComm(Commodity comm){}
public Commodity find(String commID){}
public void commit(){}
public void ejbRemove(){}
public void ejbPassivate(){}
public void ejbActivate(){}
public void setSessionContext(SessionContext Context){}
}
6. (15分)安全性控制是J2EE中间件提供的一种基本的系统级服务,典型的安全性控制通过配置的方式实现。请回答以下相关问题:
a) 典型的J2EE应用中包含若干Web模块与若干EJB模块,要对应用进行安全性控制,通常包括认证与授权两个层次的配置,请详细给出安全性配置主要内容的五个方面。
b) 给出a)中每个方面配置的基本作用,即实现的是认证还是授权控制,分别对哪类构件进行安全性限制等。
c) 授权规则是基于实际用户的还是基于安全性角色的?如基于角色配置,如何映射到实际用户?
答案要点:
a) 配置的主要内容及其基本作用为:
设置安全性角色:将使用系统的用户分组,如经理角色、职员角色等;
在Web模块中描述认证方式:选择如何进行用户身份验证;
在Web模块中描述安全性规则(授权规则):设置Web模块中的构件(如JSP、Servlet、静态页面等)的访问权限;
在EJB模块中描述安全性规则(授权规则):设置EJB模块中EJB构件的访问权限;
部署时将定义的安全性角色映射到实际的安全域中:将实际用户管理系统中的用户映射到角色。
b) 参a)
c) 授权规则是基于安全性角色的。在配置工作中通过将安全性角色映射到实际安全域,即通过指定每个用户属于哪个具体角色来完成映射,从而将安全规则应用到实际用户。
7. (10分)你认为软件构件技术与中间件技术的发展趋势是什么?未来可能出现哪些支撑软件快速开发的新特性?
可根据自己理解回答。
页:
[1]