组件化程序设计(corba)

组件化程序设计(corba)

一、实验目的

  1. 掌握组件化开发的概念,了解CORBA模型及ORB机制;
  2. 掌握CORBA组件编程方法。

二、实验内容
1.Java版CORBA程序1——HelloWorld
要求:
1.编写实现输出HelloWorld。
2.编写实现输出中文字符串

2.JAVA版CORBA程序2——Counter
要求:
编写实现连加、连减和加减混合等数学++/- -运算,并进行测试。

三、题目分析
对于以上两个程序,可以用如下方法实现:
1 编写IDL接口:XXXXXX.idl
2编译IDL接口:idlj –fall XXXXXX.idl
3 编写并编译服务端程序:XXXXXServer.java
4 编写并编译客户端程序: XXXXXClient.java
5 运行(命令行)
在编写的java文件路径下运行以下指令
启动名字服务器:tnameserv -ORBInitialPort 1050
启动服务端程序: java XXXXXServer -ORBInitialPort 1050
启动客户端程序: java XXXXXClient -ORBInitialPort 1050
注:端口号可以自行更改,但必须保证3个端口号一致,一般选择1000以上的端口号,避免与系统本身的产生冲突。

组件化程序设计(corba)
组件化程序设计(corba)
四、测试与调试

编写idl,并编译,会产生一个sample文件,文件下包含六个java文件,如下:
组件化程序设计(corba)
组件化程序设计(corba)
编译HelloWorldClient文件:
(JDK 11 编译会出错,因为在JDK 11中将corba移除):
组件化程序设计(corba)
组件化程序设计(corba)
启动名字服务器:
组件化程序设计(corba)启动服务端程序:组件化程序设计(corba)启动客户端程序:组件化程序设计(corba)将module中的string改写成为wstring用以输出中文,如果使用string可能会出现超长的异常,在HelloWorldServer中改写要输入的中文
编译后运行结果如下:
组件化程序设计(corba)组件化程序设计(corba)组件化程序设计(corba)
实验二的运行方式与实验一相同,运行结果如下:
组件化程序设计(corba)
五、总结
在本次实验中理解了corba模型结构体系,这种基于客户端、代理、服务器端的结构减少了很多操作,也更符合现实世界中的情况。Corba通过idl接口可以做到与语言无关,任何语言都可以制作corba组件。
JDK 11会无法编译的情况,因为JDK 11中将corba组件移除,因此需要切换JDK版本。
在本次实验基于JDK10一切编译运行正常,在本次实验中我又安装了JDK 8,在安装完成后出现了一系列问题
1.在命令提示符中运行java -version 和 javac -version 版本号不一致
通过百度等一系列操作,最终解决了这个问题,java -version运行后显示是JDK版本号,javac -version运行后显示的是JRE的版本号,而出现不一致的原因就是我在安装两个JDK时都未设置classpath的路径,由系统自动生成。更换JAVA_HOME的路径后 JRE的版本均为改变,因此,又手动设置了classpath的路径,并将classpath添加到path中,但问题没有解决
组件化程序设计(corba)组件化程序设计(corba)
因为在执行命令时,是从path所有路径中自上而下的依次寻找,之前系统默认的路径在手动的添加路径之前,因此我将classpath直接移动到path的最前端,问题解决,版本号一致。