《软件构件与中间件技术》21秋西电模拟试题一
1. (15分)构件化技术是现代软件开发的基本技术,请回答以下关于软件构件的问题:a) 什么是软件构件?软件构件化的根本目的是什么?
b) 软件构件应具备哪些基本特征?
c) 简述构件接口的主要作用。
答案要点:
a) 构件指系统中可以明确辨识的构成成分,而软件构件指软件系统中具有一定意义的、相对独立的构成成分,是可以被重用的软件实体。软件构件的根本目的是为软件重用提供支持,从而促进软件的工程化开发。
b) 软件构件应具备的基本特征:
构件应是一个严格定义的可插入单元
构件将封装运用到了极限
构件通常在容器中进行管理
构件应能从容器中获得属性与服务
c) 构件接口在系统中用来定义构件能力,即构件可提供的功能,接口是构件与及使用者之间交互的唯一入口,使用者仅依赖于接口来使用构件,在接口不变的前提下,可单独修改构件实现而不影响使用者。
2. (15分)下图是CORBA服务端POA体系结构,回答以下相关问题:
a) 简要解释图中的POA、POA管理器、适配器激活器、伺服对象管理器等构件及其主要作用。
b) POA中活动对象映射表的主要作用是什么?伺服对象管理器如何配合或取代活动对象映射表工作?
c) 利用伺服对象管理器可以在服务端有效管理大量服务端对象,详细说明当服务端存在大量对象时,如何实现在内存中仅保留那些正在使用或者刚刚被用过的对象?
答案要点:
a) POA用来管理服务端的CORBA对象与伺服对象,主要作用是创建对象引用,并将对象引用与真正执行服务的程序设计语言伺服对象相关联;POA管理器是一个对象,它将一个或多个POA组织在一起,为其中的POA提供共同的操作,POA管理器的状态代表了它所管理的所有POA的状态;伺服对象管理器是程序员自己提供的代码,用于取代POA活动对象映射表的功能;适配器激活器和伺服对象管理器一样,也是由程序员自己提供的代码,适配器激活器注册到一个POA后,为该POA提供按需创建子POA的能力。
b) POA中活动对象映射表的主要作用是维护CORBA对象与伺服对象之间的关联关系。伺服对象管理器包括伺服对象激活器与定位器两种。利用伺服对象激活器处理请求时,POA首先查找活动对象映射表;如果找到对象标识则调用伺服对象的合适操作并将结果返回给客户程序,否则由伺服对象激活器查找并返回一个合适的伺服对象,然后将该伺服对象登记到活动对象映射表中;最后调用伺服对象的合适操作并将结果返回给客户程序。伺服对象定位器则完全取代活动对象映射表工作,POA每次收到客户端都会利用定位器寻找相应伺服对象。
c) 可利用伺服对象激活器实现上述需求:
初始在内存中并不创建伺服对象,而是仅准备好相应的CORBA对象;
当客户端请求的伺服对象不存在时,利用伺服对象激活器创建相应对象为客户端提供服务;
每创建一个伺服对象,启动一个线程,该线程在特定时间间隔(如10秒)后将刚刚创建的对象冻结(删除)。
这样可以保证客户端可随时使用任何对象(不存在在对象会由激活器创建),而内存中仅保留那些正在使用或者刚刚被用过的对象(新创建的对象会的特定时间后自动删除)。
3. (15分)下图给出了典型CORBA应用程序开发过程,请回答以下相关问题:
a) 编译IDL接口的主要作用是什么?给出VisiBroker的IDL编译器编译接口生成的至少四个核心文件以及这些文件在后续开发中的主要作用。
b) 服务端开发的主要工作有哪些?其中服务程序的作用是什么?
c) 运行服务程序时服务端与客户端正确的启动顺序是什么?
答案要点:
a) 编译IDL接口的主要作用是将IDL映射到具体程序设计语言,产生客户程序使用的桩代码以及编写对象实现所需的框架代码。VisiBroker的IDL编译器生成的四个核心文件及其作用如下:
xxx.java:接口映射到Java语言中的接口定义,客户端程序中使用该接口来实现对服务端对象的调用。
xxxPOA.java:自动生成的Skeleton类,远程调用时该类替服务端完成底层通信工作。
_xxxStub.java:自动生成的Stub类,远程调用时该类替客户端完成底层通信工作。
xxxHelper.java:自动生成的辅助工具类,后续开发工作中可利用该类查找相应对象。
b) 服务端的开发工作主要包括编写对象实现与编写服务程序。服务程序的主要作用是创建并激活伺服对象供客户端使用。
c) 应先启动客户端,再启动服务端。
4. (15分)回答以下关于J2EE中构件的问题:
a) 组成J2EE应用的应用构件主要有哪几种?
b) 每种应用构件在J2EE应用中的基本作用是什么?
c) MVC模式如何在J2EE中实现?(即模型、视图与控制器分别由哪类构件实现)
答案要点:
a) 组成J2EE应用的应用构件主要包括:
客户端构件
Applet
Application Client
服务端构件
Web构件
Servlet
JSP
EJB构件
b) 客户端构件(包括Applet和Application Client)主要在系统中提供客户端界面;Web构件Servlet主要作用是接收客户端的HTTP请求(如通过浏览器发出的请求),动态生成HTTP响应(如一个页面);JSP的主要作用与Servlet类似,通过在HTML文档中嵌入JSP特定的标签来允许程序员在页面中加入java代码,通过Java代码的执行动态生成页面的内容;EJB构件是应用系统的核心构件,用来实现系统的核心业务逻辑。
c) 在J2EE中实现MVC模式,通常由EJB构件实现模型的功能,JSP构件实现视图的功能,而由Servlet构件实现控制器的功能。
5. (15分)现拟开发一个提供查询服务器当前时间的EJB构件,要求该构件提供一个操作getCurrentTime返回服务器当前系统时间,请回答以下相关问题:
a) 该构件应设计为会话构件(Session Bean)还是实体构件(Entity Bean)?为什么?
b) 若设计为会话构件,则应设计为有状态的还是无状态的?为什么?
c) 请给出该EJB构件的Remote接口、Home接口以及EnterpriseBean类的代码框架。(给出接口中方法及类中的成员列表即可)
答案要点:
a) 该构件应设计为会话构件。因为该构件提供的是与客户端交互的会话功能,而不是用于封闭数据库操作的,因此应设计为会话构件。
b) 应设计为无状态会话构件。因为该构件不需要保存与客户端交互的中间状态,只需向客户端返回服务端系统当前时间即可,因此一个对象可以被多个客户端共享使用,因此应设计为无状态会话构件。
c) 代码框架如下:
Remote接口:
CurTimeRemote{
public String getCurrentTime();
}
Home接口:
CurTimeHome{
public CurTimeRemote create();
}
EnterpriseBean类:
CurTimeBean{
public void ejbCreate(){}
public String getCurrentTime(){}
public void ejbRemove(){}
public void ejbPassivate(){}
public void ejbActivate(){}
public void setSessionContext(SessionContext Context){}
}
6. (15分)事务控制是J2EE中间件提供的一种基本的系统级服务,现拟实现的一个提供银行账户功能的EJB构件中包含取款操作,操作完成时涉及修改数据库中的余额与控制取款机吐出现金两个主要步骤。请回答以下相关问题:
a) 什么是事务?事务的基本特征有哪些?
b) 上述取款操作中存在什么样的事务控制需求?
c) 如何利用J2EE中间件提供的事务服务实现b)中的事务控制?
答案要点:
a) 事务通常包含组逻辑上不可分割的操作集合。事务的基本特征包括:
原子性:事务中包含的所有操作要么全部成功,要么一个都不做。
一致性:事务所作的任何改变不会使系统处于无效状态。
隔离性:并发的事务不会互相影响。
耐久性:事务提交时,对数据所作的任何改变都要记录到持久存储器中。
b) 上述取款操作中事务控制需求为:取款涉及的修改余额与吐出现金两个操作逻辑中构成一个事务,即这两个操作要么全部执行成功,要么一个都不能做,否则会造成系统状态的逻辑错误。
c) 可利用J2EE中间件提供的CMT(容器维护的事务)机制实现事务控制,即将EJB构件的事务控制规则设为CMT,并为该EJB的取款操作设置需要事务控制(Required)的事务属性。这样在客户端调用取款操作时,容器会自动为该操作维护一个事务,从而保证取款中所有操作的原子性。
7. (10分)回答以下关于Web Service的问题:
a) 试描述由服务提供者、服务请求者及服务代理三者构成的Web Service体系结构。
b) Web Service中使用的基本协议有哪些?每个协议的主要作用分别是什么?
c) Web Service的基本特征有哪些?目前其主要应用方向是什么?
答案要点:
a) 由服务提供者、服务请求者及服务代理三者构成的Web Service体系结构如下图所示:
其中服务提供者提供被调用的Web Service,并将其注册到服务代理;服务使用者通过服务代理查找到相应服务信息并实现调用。
b) Web Service中使用的基本协议及其作用为:
UDDI:用于发布、查找Web Service;
WSDL:用于描述Web Service;
SOAP:用于实现Web Service的调用。
WSFL/BPEL:用于将分散的、功能单一的Web服务组织成一个复杂的有机应用。
c) Web Service的主要特征为:
完好的封装性:使用者仅看到Web Service提供的功能列表,不能看到其实现细节;
松散耦合:只要服务的接口保持不变,就不影响使用者,而且客户端和服务端的生命周期不相互影响,同时需要一种适合Internet环境的消息交换协议。
使用标准协议规范:Web Service架构使用开放的标准协议进行描述、传输和交换。
高度可互操作性:可以跨越平台、语言进行调用。
高度可集成能力:
动态性:可以自动发现服务并进行调用。
目前主要的应用方向中应用系统集成。
页:
[1]