中间件实验报告2

上传人:大米 文档编号:512473145 上传时间:2022-08-16 格式:DOC 页数:7 大小:59KB
返回 下载 相关 举报
中间件实验报告2_第1页
第1页 / 共7页
中间件实验报告2_第2页
第2页 / 共7页
中间件实验报告2_第3页
第3页 / 共7页
中间件实验报告2_第4页
第4页 / 共7页
中间件实验报告2_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《中间件实验报告2》由会员分享,可在线阅读,更多相关《中间件实验报告2(7页珍藏版)》请在金锄头文库上搜索。

1、电子科技大学 计算机 学院标 准 实 验 报 告(实验)课程名称:中间件技术 (实验)项目名称:基于mico开源CORBA中间件编写一个分布式调用服务电子科技大学研究生院电 子 科 技 大 学实 验 报 告学生姓名学号实验中所参与的工作完成所有工作 一、实验目的:本实验的目的和任务是,通过利用基于mico的开源CORBA中间件编写一个分布式调用服务的小型软件,让学生理解中间件的基本原理,并掌握进行CORBA程序设计和开发的基本方法。二、实验内容:1)服务器实现一个网格,其结构如图1所示。网格有高度和宽度,客户端可以设置和读取这两个属性。网格由若干网格单元组成,每个单元有一个类型为整型的值,客户

2、端可以设置和读取单元值。另外,一旦网格的高度和宽度以及网格的单元值三者中任意一个发生变化,须立即通知客户端作相应处理,反映出该变化。234579256789456688图12)系统由一个服务器和两个客户端组成,如图2所示。服务器客户端客户端图23)服务器端使用c+开发语言。两个客户端分别使用c+和Java两种开发语言。三、实验步骤:1.查阅资料下载mico cobra并编译安装。2.服务器端实现,编写tabl.idl通过idl poa table.idl命令生成table.cc和table.h文件。服务器端运行时,需要获取RootPOA初始引用,然后注册命名服,接着绑定此命名和服务对象,最后启

3、动服务程序。3.实现C+客户端,初始化ORB,获取服务器命名服务对象的引用,获得业务服务对象的引用,最后执行具体业务逻辑。4.实现java客户端与C+客户端不同的是需要通过table.idle生成相应java类,其他与C+客户端类似5.测试,总结,编写相关报告四、总结及心得体会:此实验是按照网上的一个例子一步步来的,在编译mico cobra时出现UINT_MAX的定义问题但最终解决。C+客户端并没有遇到太多麻烦,但是java客户端,由于对于java并不精通,出现了各种连接错误或者函数不存在的问题,通过查阅资料添加相应的java包解决了这些问题,通过这次实验,还是了解了中间件的基本原理,熟悉了

4、进行CORBA程序设计和开发的基本方法。五、 测试和截图(1)C+客户端运行结果如下图所示:图 1 C+客户端测试截图(2)java客户端执行结果如下图所示:图 2java客户端测试截图六、 附件table.idl文件如下:interface Tablevoid setWidth(in unsigned long width);long getWidth(); void setHeight(in unsigned long height); long getHeight(); void setValue(in unsigned long x, in unsigned long y, in un

5、signed long z);long getValue(in unsigned long x, in unsigned long y);;客户端代码:client.cc如下:#include table.h#ifdef HAVE_UNISTD_H#include #endifusing namespace std;int main(int argc, char *argv)int cmd;char addr256;CORBA:ORB_var orb = CORBA:ORB_init(argc, argv);CORBA:Object_var obj = orb-bind(IDL:Table:1

6、.0, inet:127.0.0.1:8888);if(CORBA:is_nil(obj)cout oops: could not locate HelloWorld server setWidth (100);hello- setHeight (100);hello- setValue(2, 1,100);cout tables width = getWidth () endl;cout tables height = getHeight () endl;cout value of table21 = getValue (2,1) endl;return 0;server.cc如下:#inc

7、lude table.h#ifdef HAVE_ANSI_CPLUSPLUS_HEADERS#include #else#include #endifusing namespace std;class table_impl:virtual public POA_Tableprivate:CORBA:Long _current_width;CORBA:Long _current_height;CORBA:Long value33;CORBA:Long _current_value;public:table_impl()_current_width=0;_current_height=0;_cur

8、rent_value=0;void setWidth (CORBA:ULong width)_current_width = width;void setHeight (CORBA:ULong height)_current_ height = height;void setValue(CORBA:ULong x, CORBA:ULong y, CORBA:ULong z)valuexy = z;CORBA:Long getWidth()return _current_ width;CORBA:Long getHeight()return _current_ height;CORBA:Long

9、 getValue (CORBA:ULong x,CORBA:ULong y)_current_value =valuexy;return _current_value;int main(int argc, char *argv)CORBA:ORB_var orb = CORBA:ORB_init(argc, argv);CORBA:Object_var poaobj = orb-resolve_initial_references(RootPOA);PortableServer:POA_var poa = PortableServer:POA:_narrow(poaobj);PortableServer:POAManager_var mgr = poa-the_POAManager();table_impl * hello = new table_impl;PortableServer:ObjectId_var oid = poa-activate_object(hello);cout Running. activate();orb-run();poa-destroy(TRUE, TRUE);delete hello;return 0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号