中间件实验报告.docx
《中间件实验报告.docx》由会员分享,可在线阅读,更多相关《中间件实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
中间件实验报告
学生学号
0121410870704
实验课成绩
学生实验报告书
实验课程名称
软件构件与中间件技术
开课学院
计算机科学与技术学院
指导教师
石兵
学生姓名
廖锡峰
学生专业班级
软件1402
2016
--
2017
学年
第
二
学期
实验课程名称:
软件构件与中间件技术
实验项目名称
基于JAVACORBA的四则运算分布式系统开发
实验成绩
实验者
廖锡峰
专业班级
软件1402
组别
同组者
实验日期
2017年5月15日
第一部分:
实验分析与设计(可加页)
实验步骤:
1、安装JDK1.6并配置系统参数PATH和CLASSPATH,打开一个DOS窗口键入命令java–version验证是否已经正确地安装了JDK。
2、打开一个文本编辑器,编写以下IDL接口定义文件,并命名为BA.idl,保存到一个文件夹下,这里是D:
\shiyan。
3、编译IDL文件。
4、实现远程对象。
打开记事本,复制以下代码。
文件名:
BAImpl.java。
保存到文件夹
5、编写服务器。
注意要把IP地址换成当前这台物理机器的IP地址。
打开记事本,复制以下代码。
文件名:
Server.java。
保存到文件夹D:
\shiyan\BAPkg之下。
六、编写客户端。
注意要把IP地址换成当前这台物理机器的IP地址。
打开记事本,复制以下代码。
文件名:
Client.java。
保存到文件夹D:
\shiyan\BAPkg之下。
七、编译JAVA源代码。
八、系统布置。
刚才是在机器A上开发的,机器A是服务器,IP地址是机器A的IP地址。
现在,在另一台机器,机器B上安装JDK1.6并配置PATH和CLASSPATH系统参数,并把代码及字节码打包复制到机器B上,它是一个客户端。
九、运行系统。
在机器A上打开一个DOS窗口,运行JAVACORBA命名目录服务器.
第二部分:
实验调试与结果分析(可加页)
一、实验小结、建议及体会
通过本次实验,了解了基于JAVACORBA的四则运算分布式系统开发,对中间件有了更深的理解。
2、思考题
(1)假定使用JDK1.6,编译idl文件的命令是什么?
idlj–fallBA.idl
(2)编译后,产生了哪几个文件?
简要说明生成的各个Java类的作用。
尤其是,客户端的码根和服务器端的框架是哪个类。
对于BAInterface接口,编译后共产生以下六个JAVA类或接口:
BAInterface.java,BAInterfaceOperations.java,BAInterfaceHelper.java,BAInterfaceHolder.java,BAInterfacePOA.java,_BAInterfaceStub.java。
前两个文件是对应IDL接口的JAVA接口,HELPER类提供CORBA类型转换等辅助功能,HOLDER类提供ORB中间件网络输入、输出流等方法,而POA和STUB类分别是服务器端框架和客户端的码根,主要负责远程方法调用参数的打包和解包。
(三)Idl文件中的BAPkg模块映射成了什么?
在IDL文件中的BAPkg模块被编译成对应的JAVA包。
(4)实现远程对象要注意什么问题?
所实现的远程对象必须是对应POA类的一个子类,换句话说,远程对象类必须继承对应的POA类。
(5)实现服务器端的步骤是什么?
1、设置服务器参数,主要是命名目录服务器的IP地址和端口号;2、根据系统参数作为实参,创建一个ORB对象。
再根据ORB对象以及RootPOA名称解析出POA对象参照,根据POAHelper类的静态细化方法把POA对象参照转换成POA对象。
根据POA对象创建POA管理器类对象,并激活之。
3、创建远程伺服对象,并把它登记到POA对象,返回伺服对象的一个CORBA对象参照,根据其Helper类的细化方法,将对象参照转换成真正意义上的远程对象。
我们这里有三个概念:
伺服对象、伺服对象参照和对应的远程对象。
4、根据ORB对象和NameService名称解析出命名目录服务器中JNDI节点对象CORBA参照,再根据其Helper类的静态细化方法把节点对象参照转换成真正的节点对象。
指定一个将绑定远程对象的字符名称,利用节点对象将该名称转换成连在该节点上的路径对象,最后再把在第三步中创建的远程对象绑定到该路径上。
5、启动ORB对象。
(6)实现客户端的步骤是什么?
1、设置服务器参数,主要是命名目录服务器的IP地址和端口号;2、根据系统参数作为实参,创建一个ORB对象。
3、根据ORB对象和NameService名称解析出命名目录服务器中JNDI节点对象CORBA3参照,再根据其Helper类的静态细化方法把节点对象参照转换成真正的节点对象。
4、根据远程对象字符名称从JNDI节点对象中解析出远程对象的CORBA参照,再根据其Helper类的静态细化方法把对象参照转换成远程对象本身。
5、调用远程对象的远程方法。
(7)运行服务器和客户程序的命令是什么?
首先运行命名目录服务器:
orbd–ORBInitialPort1050,再运行服务器:
javaBAPkg.Server,最后运行客户端:
javaBAPkg.Client
(八)谈一谈你对JavaCORBA的认识。
JavaCORBA是一个完全面向对象的分布式应用开发中间件及规。
它使用ORB即对象请求代理作为中间件模块,IIOP作为服务器端和客户端ORB的通讯协议,以及使用IDL作为接口定义语言。
ORB中间件跨平台、跨语言,充分屏蔽了分布式网络的异构性。
JavaCORBA使用Java编程语言,和C++相比,更简洁、一致、明快,大大减少了服务端和客户端派生的代码,且派生的代码容易理解,便于使用。
在某种意义上,JavaCORBA已经完全取代了C++CORBA。
实验课程名称:
软件构件与中间件技术
实验项目名称
基于RMI/IIOP的分布式一元二次方程求解系统
实验成绩
实验者
廖锡峰
专业班级
软件1402
组别
同组者
实验日期
2017年5月15日
第一部分:
实验分析与设计(可加页)
实验步骤:
一、安装jdk1.6,并配置系统参数Path和Classpath。
二、创建以下目录结构D:
\Exp02\rmiiiop_equation。
把后面所有Java源代码文件都复制到该文件夹下。
三、打开记事本,编写封闭两个根的JavaBean
四、编写远程接口
五、实现远程接口
六、开发服务器程序
七、开发客户端程序
八、在两台机器A和B上创建相同的文件夹:
D:
\Exp02\rmiiiop_equation,把上面所有的源代码文件复制到两台机器的对应的文件夹下,分别编译。
假定机器B是服务器。
九、编译方法
十、运行系统
第二部分:
实验调试与结果分析(可加页)
一、实验结果
二、实验小结、建议及体会
通过本次试验,了解了基于RMI/IIOP的分布式一元二次方程求解系统,体会到了与CORBA的不同。
3、思考题
(1)RMI/IIOP和传统的RMI有什么差别?
RMI,RemoteMethodInvocztion,即远程方法调用。
和RMI/IIOP相同的地方是两种方法都使用JAVA创建远程对象的接口,而两者使用的网络协议有所不同。
后者使用CORBA规的通用协议IIOP,所以可以和CORBA应用通讯。
换句话说,一个CORBA客户端可以访问一个RMI/IIOP服务器。
(2)RMI/IIOP的开发步骤。
1、用JAVA定义远程接口。
注意,远程接口要继承java.rmi.Remote,远程方法要抛出java.rmi.RemoteException。
2、实现远程接口。
注意,实现远程接口的类必须继承可移植远程对象,即javax.rmi.PortableRemoteObject。
3、开发服务器程序。
4、开发客户端程序。
5、编译所有JAVA源代码。
6、使用rmic编译远程对象实现的字节码文件,产生客户端的码根和服务器端的框架。
例如:
rmic–iiopRMIIIOPApp.RemoteObjectImpl。
注意,rmic要使用–iiop选项。
(三)实现远程接口应注意什么?
实现远程接口的类必须继承可移植远程对象,即javax.rmi.PortableRemoteObject。
(4)定义远程接口应注意什么?
远程接口要继承java.rmi.Remote,远程方法要抛出java.rmi.RemoteException。
(5)客户端和服务器的系统参数的含意是什么?
IP地址和端口号。
(6)如何产生客户端和服务器端的镜像代码?
客户端的码根是远程对象的本地镜像,也就是远程对象的本地代理,主要负责远程方法参数打包和远程方法调用返回结果的解包。
服务器端的框架是服务器的码根。
(7)修改客户端程序,使用输入流,使得用户能够输入任意三个系数。
Scannerinput=newScanner(System.in);
doublea,b,c;
System.out.println("pleaseinputavalue:
");
a=input.nextDouble();
System.out.println("pleaseinputbvalue:
");
b=input.nextDouble();
System.out.println("pleaseinputcvalue:
");
c=input.nextDouble();
RootJBroots=ro.calRoots(a,b,c);