您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 《中间件技术(软件实践)》C卷参考答案
【第1页共6页】江西财经大学09-10第二学期期末考试试卷试卷代码:18022C授课课时:48考试用时:110分钟课程名称:中间件技术(软件.实践)适用对象:07级本科试卷命题人张志兵试卷审核人万本庭一、单项选择题(从下列各题四个备选答案中选出一个正确答案,并将其代号写在答题纸相应位置处。答案错选或未选者,该题不得分。每小题2分,共20分。)1、在三层结构的分布式系统中,包含了系统的核心业务逻辑的是(B)。A、客户层B、中间层C、数据层D、表示层2、CORBAIDL文件的不应该出现内容是:(A)。A、算法实现B、常量C、接口D、异常说明3、不属于事务处理中间件的是(D)。A、TuxedoB、JTSC、MTSD、JMS4、CORBA对象的接口是用(C)定义的。A、WSDLB、自然语言C、OMGIDLD、JavaInterface5、在支持分布式对象访问的桩/框架(Stub/Skeleton)结构中,桩/框架主要是依据(B)生成的。A、客户端代码B、构件的接口C、服务端代码D、分布式对象自身6、OMA参考模型中,哪些涵盖了开发一个基于CORBA的应用时可以直接使用、不需自己实现的功能(B)。A、对象服务领域接口应用程序接口B、对象服务领域接口公共设施C、对象服务公共设施应用程序接口D、领域接口公共设施应用程序接口7、关于微软的组件对象模型COM的类工厂下列说法正确的是(C)。A、类工厂需要在系统注册表中进行注册B、类工厂在实现时没有为它分配一个唯一标识符CLSIDC、类工厂不继承自IUnknown接口D、以上说法都不对8、关于微软的组件对象模型COM下列说法不正确的是(A)。A、接口指针不是自动化兼容的数据类型B、MicrosoftPowerPoint是一个支持IDispatch接口的COM组件C、系统的COM库通过进程内COM组件的一个固定输出函数来创建COM对象D、结构化存储继承自IUnknown接口9、假定一个分布式对象中间件的接口支持下列函数,可以用幂等修饰的函数是(C)。A、获取服务器当前时间B、获取服务器当前用户数C、获取服务器的版本号D、获取服务器的上线时间10、下列说法正确的是(D)。【第2页共6页】A、RPC不能采用UDP作为其底层通信协议B、RMI可以把任意复杂的类型作为输入参数传递C、部署RMI的应用时,必须把rmiregistry和RMI服务器部署在同一台机器D、RPC服务器启动时向portmap登记自己的程序号、过程号、版本号二、填空题(每空2分,共30分。)1、事务具有__原子性_、一致性、隔离性和持久性四个特性。2、EJB规范中定义了两种实体bean的持久性模型,分别是自管理持久性和容器管理持久性。3、EJB的必须实现Home接口和Remote接口。4、CORBA中支持服务方的动态对象调用接口称为动态框架接口。5、微软的COM组件对象模型的IDispatch接口定义了一个函数Invoke,该函数能根据一个称为调度ID的整数来决定调用哪个函数。6、CORBA事件服务中定义了事件提供者、事件消费者和事件通道三种角色,并且定义了push和pull两种数据传送模型。三、名词解释(每小题3分,共12分。)1、ORBObjectRequestBroker,是对象请求总线,它能使对象透明地向其他本地或者远程对象发出请求或获得响应。2、SOAPSimpleObjectAccessProtocol,是Web服务的通信协议,用来定义消息的XML格式。3、UDDIUniversalDescriptionDiscoveryandIntegration即统一描述、发现和集成协议。4、DCOMDistributedComponentObjectModel,分布式组件对象模型四、问答题(每小题6分,共18分。)1、简述远程过程调用的开发步骤和过程。答:(1)构建解决问题的常规应用程序;(2)选择一组过程形成远程程序,以便将远程程序转移到远程机器中,通过这种方法将程序分解;(3)为远程程序编写RPC界面(xxx.idl),包括远程的名字及其编号,还有对其参数的申明。选择远程程序号和版本号;(4)运行rpcgen检查该界面,如果合法,便生成四个源代码文件:xxx.h(类型说明文件)、xxx_XDR.c(XDR转换例程)、xxx_clnt.c(客户端的stub过程)以及xxx_svr.c(服务守护过程,服务端的stub过程),这些文件将在客户和服务器程序中使用;(5)为客户端和服务器端编写stub接口例程;(6)编译并链接客户程序。它由四个主要文件组成:去掉了远程过程的程序、客户端的stub【第3页共6页】(rpc生成)、客户端的接口stub以及XDR过程(rpc生成)。(7)编译并链接服务器程序。它由四个主要文件组成:远程过程组成的程序、服务器的stub(rpc生成)、服务器端的接口stub以及XDR过程(rpc生成)。(8)在远程机器上启动服务器,接着在本机上启动客户,测试验证结果。2、简述两阶段提交协议的原理。答:分布式事务涉及到多个结点的数据的更新,任何一个结点或结点间通信的失效都可能导致分布式事务的失败。因此,为了保证事务的完整性,分布式事务通常采用两阶段提交协议(TwoPhaseCommitmentProtocol,简称2PC)来提交。两阶段提交协议的思路是事务管理器向所有资源管理器发出正式提交请求之前,先询问所有资源管理器是否已准备好提交,仅当所有的资源管理器都给出肯定的回答时,事务管理器才发出提交的请求;如果其中有一个资源管理器给出否定地回答,事务管理器就指示所有的资源管理器进行回滚。阶段1(准备阶段)事务管理器询问所有的资源管理器是否已准备提交。阶段2(提交阶段)事务管理器检查所有资源管理器的回答,只要有一个资源管理器给出否定的回答,事务管理器指示所有的资源管理器进行回滚。否则,事务管理器指示所有的资源管理器进行提交。在两阶段提交中,一个主节点被指派为事务协调者(Coordiantor),其他节点称为事务参与者(Participants)。协调者掌握提交或撤消事务的决定权,而其它参与者则各自负责本地数据的更新,并向协调者提出撤消或提交子事务的意向。一般一个结点对应一个子事务。3、简述微软组件对象模型COM中的代码重用技术。答:在COM组件对象模型中,有两种代码重用技术:包容代码重用技术和聚合代码重用技术。包容代码重用技术实现特点:(1)外部对象包容内部对象的接口(2)外部对象的接口与内部对象的接口可以不同(3)包容模型的实质是客户-组件关系,在包容代码的前后可以插入其他的代码,甚至可以有条件地重用聚合代码重用技术实现特点:内部对象接口直接展现在外部对象上,内部对象实现两个IUnknown接口(1)非委托IUnknown接口用于正常处理引用计数和接口查询;(2)委托IUnknown接口按情况处理:(a)当对象被聚合时,调用外部对象的IUnknown接口;(b)当对象未被聚合时,调用非委托IUnknown接口五、综合题(共20分。)【第4页共6页】利用CORBA实现求两个正整数的最小公倍数,求最小公倍数的函数在服务器端实现,其原型为longLeastCommonMultiple(longm,longn)。1、写出其IDL文件Lcm.idl(4分)//Lcm.idl#ifndef__LCM_IDL__#define__LCM_IDL__interfaceLcm{longLeastCommonMultiple(inlongm,inlongn)};#endif////__LCM_IDL_2、假定用omniORB的idl到C++的转换工将其转换到C++的类名为POA_Lcm,写出服务器类MyLcm的实现(4分)//MyLcm.cpp#includeLcm.hclassMyLcm:POA_Lcm{virtualCORBA::LongLeastCommonMultiple(CORBA::Longm,CORBA::Longn);}CORBA::LongMyLcm::LeastCommonMultiple(CORBA::Longm,CORBA::Longn){CORBA::Longc=m*n,temp;if(mn){temp=n;n=m;m=temp;}while(m%n){temp=m%n;m=n;n=temp;}returnc/n}【第5页共6页】3、在下划线的空白处补全服务器程序代码(每空2分,共8分)(1)MyLcm(2)pLcm(3)activate(4)run#includeiostreamusingnamespacestd;#includeLcm.hintmain(intargc,char*argv[]){constchar*options[][2]={{endPoint,giop:tcp::3456},{InitRef,NameService=corbaname::localhost},{0,0}};CORBA::ORB_varorb=CORBA::ORB_init(argc,argv,omniORB4,options);if(CORBA::is_nil(orb)){cerrORBiniterror!.endl;return1;}CORBA::Object_varobj=orb-resolve_initial_references(omniINSPOA);PortableServer::POA_varins_poa=PortableServer::POA::_narrow(obj);MyLcm*pLcm=newMyLcm();PortableServer::ObjectId_varoid=PortableServer::string_to_ObjectId(MyLcm);ins_poa-activate_object_with_id(oid,pLcm);PortableServer::POAManager_varpman=ins_poa-the_POAManager();CORBA::String_varsior(orb-object_to_string(pLcm-_this()));cout(char*)siorendl;pLcm-_remove_ref();pman-activate();orb-run();return0;}4、假定服务器和客户端运行在同一机器上,服务器IP地址用127.0.0.1,在下划线的空白处补全客户端程序代码(每空2分,共4分)【第6页共6页】(5)corbaloc:iiop:127.0.0.1:3456/MyLcm(6)lcmRef-LeastCommonMultiple#includeiostreamusingnamespacestd;#includeLcm.hintmain(intargc,char*argv[]){constchar*options[][2]={{InitRef,NameService=corbaname::localhost},{0,0}};CORBA::ORB_varorb=CORBA::ORB_init(argc,argv,omniORB4,options);if(CORBA::is_nil(orb)){cerrORBiniterror!.endl;return1;}CORBA::Object_varobj=orb-string_to_object(corbaloc:iiop:127.0.0.1:3456/MyLcm);Lcm_varlcmRef=Lcm::_narrow(obj);if(CORBA::is_nil(lcmRef)){cerr不能转换类型.endl;return1;}CORBA::Longlcm=lcmRef-LeastCommonMultiple(18,12);coutlcmendl;orb-destroy();return0;}
本文标题:《中间件技术(软件实践)》C卷参考答案
链接地址:https://www.777doc.com/doc-2827832 .html