收藏 分销(赏)

中间件技术软件实践卷参考答案.doc

上传人:w****g 文档编号:9512546 上传时间:2025-03-29 格式:DOC 页数:9 大小:51.54KB 下载积分:6 金币
下载 相关 举报
中间件技术软件实践卷参考答案.doc_第1页
第1页 / 共9页
中间件技术软件实践卷参考答案.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
江西财经大学 09-10第二学期期末考试试卷 试卷代码: 18022C 讲课课时: 48 考试用时: 110分钟 课程名称: 中间件技术(软件.实践) 适用对象: 07级本科 试卷命题人 张志兵 试卷审核人 万本庭 一、 单项选择题(从下列各题四个备选答案中选出一个正确答案, 并将其代号写在答 题纸对应位置处。答案错选或未选者, 该题不得分。每小题2分, 共20分。) 1、 在三层结构分布式系统中, 包含了系统关键业务逻辑是( B )。 A、 用户层 B、 中间层 C、 数据层 D、 表示层 2、 CORBA IDL 文件不应该出现内容是: ( A )。 A、 算法实现 B、 常量 C、 接口 D、 异常说明 3、 不属于事务处理中间件是( D )。 A、 Tuxedo B、 JTS C、 MTS D、 JMS 4、 CORBA对象接口是用( C )定义。 A、 WSDL B、 自然语言 C、 OMG IDL D、 Java Interface 5、 在支持分布式对象访问桩/框架(Stub/Skeleton)结构中, 桩/框架关键是依据( B )生成。 A、 用户端代码 B、 构件接口 C、 服务端代码 D、 分布式对象本身 6、 OMA参考模型中, 哪些涵盖了开发一个基于CORBA应用时能够直接使用、 不需自己实现功效( B )。 A、 对象服务 领域接口 应用程序接口 B、 对象服务 领域接口 公共设施 C、 对象服务 公共设施 应用程序接口 D、 领域接口 公共设施 应用程序接口 7、 相关微软组件对象模型COM类工厂下列说法正确是( C )。 A、 类工厂需要在系统注册表中进行注册 B、 类工厂在实现时没有为它分配一个唯一标识符CLSID C、 类工厂不继承自IUnknown接口 D、 以上说法都不对 8、 相关微软组件对象模型COM下列说法不正确是( A )。 A、 接口指针不是自动化兼容数据类型 B、 Microsoft PowerPoint是一个支持IDispatch接口COM组件 C、 系统COM库经过进程内COM组件一个固定输出函数来创建COM对象 D、 结构化存放继承自IUnknown接口 9、 假定一个分布式对象中间件接口支持下列函数, 能够用幂等修饰函数是( C )。 A、 获取服务器目前时间 B、 获取服务器目前用户数 C、 获取服务器版本号 D、 获取服务器上线时间 10、 下列说法正确是( D )。 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、 ORB Object Request Broker, 是对象请求总线, 它能使对象透明地向其她当地或者远程对象发出请求或取得响应。 2、 SOAP Simple Object Access Protocol, 是Web服务通信协议, 用来定义消息XML格式。 3、 UDDI Universal Description Discovery and Integration即统一描述、 发觉和集成协议。 4、 DCOM Distributed Component Object Model, 分布式组件对象模型 四、 问答题(每小题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(rpc生成)、 用户端接口stub以及XDR过程( rpc生成)。 (7)编译并链接服务器程序。它由四个关键文件组成: 远程过程组成程序、 服务器stub(rpc生成)、 服务器端接口stub以及XDR过程( rpc生成)。 (8)在远程机器上开启服务器, 接着在本机上开启用户, 测试验证结果。 2、 简述两阶段提交协议原理。 答: 分布式事务包含到多个结点数据更新, 任何一个结点或结点间通信失效都可能造成分布式事务失败。所以, 为了确保事务完整性, 分布式事务通常采取两阶段提交协议(Two Phase Commitment Protocol, 简称2PC)来提交。 两阶段提交协议思绪是事务管理器向全部资源管理器发出正式提交请求之前, 先问询全部资源管理器是否已准备好提交, 仅当全部资源管理器都给出肯定回复时, 事务管理器才发出提交请求; 假如其中有一个资源管理器给出否定地回复, 事务管理器就指示全部资源管理器进行回滚。 阶段1(准备阶段) 事务管理器问询全部资源管理器是否已准备提交。 阶段2(提交阶段) 事务管理器检验全部资源管理器回复, 只要有一个资源管理器给出否定回复, 事务管理器指示全部资源管理器进行回滚。不然, 事务管理器指示全部资源管理器进行提交。 在两阶段提交中, 一个主节点被指派为事务协调者(Coordiantor), 其她节点称为事务参与者(Participants)。协调者掌握提交或撤消事务决定权, 而其它参与者则各自负责当地数据更新, 并向协调者提出撤消或提交子事务意向。通常一个结点对应一个子事务。 3、 简述微软组件对象模型COM中代码重用技术。 答: 在COM组件对象模型中, 有两种代码重用技术: 包容代码重用技术和聚合代码重用技术。 包容代码重用技术实现特点: (1)外部对象包容内部对象接口 (2)外部对象接口与内部对象接口能够不一样 (3)包容模型实质是用户-组件关系, 在包容代码前后能够插入其她代码, 甚至能够有条件地重用 聚合代码重用技术实现特点: 内部对象接口直接展现在外部对象上, 内部对象实现两个IUnknown接口 (1) 非委托IUnknown接口用于正常处理引用计数和接口查询; (2) 委托IUnknown接口按情况处理: (a) 当对象被聚合时, 调用外部对象IUnknown接口; (b) 当对象未被聚合时, 调用非委托IUnknown接口 五、 综合题(共20分。) 利用CORBA实现求两个正整数最小公倍数, 求最小公倍数函数在服务器端实现, 其原型为long LeastCommonMultiple(long m,long n)。 1、 写出其IDL文件Lcm.idl(4分) //Lcm.idl #ifndef __LCM_IDL__ #define __LCM_IDL__ interface Lcm{ long LeastCommonMultiple(in long m, in long n) }; #endif //// __LCM_IDL_ 2、 假定用omniORBidl到C++转换工将其转换到C++类名为POA_Lcm, 写出服务器类MyLcm实现(4分) //MyLcm.cpp #include "Lcm.h" class MyLcm : POA_Lcm { virtual CORBA::Long LeastCommonMultiple (CORBA::Long m, CORBA::Long n) ; } CORBA::Long MyLcm::LeastCommonMultiple (CORBA::Long m, CORBA::Long n) { CORBA::Long c = m*n, temp; if(m < n) { temp = n; n = m; m = temp; } while(m%n) { temp = m%n; m = n; n = temp; } return c/n } 3、 在下划线空白处补全服务器程序代码(每空2分, 共8分) (1) MyLcm (2)pLcm (3)activate (4)run #include <iostream> using namespace std; #include "Lcm.h" int main(int argc, char* argv[]) { const char* options[][2] = { { "endPoint", "giop:tcp::3456" }, {"InitRef","NameService=corbaname::localhost"}, { 0, 0 } }; CORBA::ORB_var orb = CORBA:: ORB_init (argc, argv,"omniORB4",options); if( CORBA::is_nil(orb) ) { cerr << "ORB init error!." << endl; return 1; } CORBA::Object_var obj = orb-> resolve_initial_references("omniINSPOA"); PortableServer::POA_var ins_poa = PortableServer::POA::_narrow (obj); MyLcm* pLcm = new MyLcm (); PortableServer::ObjectId_var oid = PortableServer::string_to_ObjectId("MyLcm"); ins_poa->activate_object_with_id(oid, pLcm ); PortableServer::POAManager_var pman = ins_poa->the_POAManager(); CORBA::String_var sior(orb->object_to_string(pLcm->_this())); cout << (char*)sior << endl; pLcm->_remove_ref(); pman-> activate (); orb-> run (); return 0; } 4、 假定服务器和用户端运行在同一机器上, 服务器IP地址用127.0.0.1, 在下划线空白处补全用户端程序代码(每空2分, 共4分) (5)"corbaloc:iiop:127.0.0.1:3456/MyLcm" (6)lcmRef-> LeastCommonMultiple #include <iostream> using namespace std; #include "Lcm.h" int main(int argc, char* argv[]) { const char* options[][2] = { {"InitRef","NameService=corbaname::localhost"}, { 0, 0 } }; CORBA::ORB_var orb = CORBA::ORB_init(argc, argv,"omniORB4",options); if( CORBA::is_nil(orb) ) { cerr << "ORB init error!." << endl; return 1; } CORBA::Object_var obj = orb->string_to_object("corbaloc:iiop:127.0.0.1:3456/MyLcm" ); Lcm_var lcmRef = Lcm::_narrow(obj); if( CORBA::is_nil(lcmRef) ) { cerr << "不能转换类型." << endl; return 1; } CORBA::Long lcm = lcmRef-> LeastCommonMultiple (18,12); cout<< lcm << endl; orb->destroy(); return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服