**********eclipse下corba环境搭建可以参考:Corba环境搭建笔记
一、实验要求
自选程序逻辑学习使用jdk自带orb和JacORB。
以哥德巴赫猜想验证为例。
二、实验原理
1.典型的CORBA应用实现过程
2.IDL语言
说明性语言,定义组件接口,不定义实现;
语法上可以看成C++的一个子集,规定组件的属性、所继承的父类、产生的异常、事件和各类数据类型;
编译器作用:将IDL映射到具体程序设计语言,产生桩代码和框架代码;
调用请求经客户端桩传递给ORB,然后转发到服务端框架,最后到达真正要执行请求的对象实现实例。
三、实验过程及代码
1、新建一个JacORB项目,编写项目IDL文件
(1)用IDL编写对象规格说明:
(2)编译IDL生成stub和skeleton:
Run---->External Tools----->IDL Compiler,控制台输出如下:
f5刷新,生成包含stub和skeleton的包Corba:
这里stub报错,暂时不用管,后面再具体解决。
(注,也可以使用jdk中的idlj指令,idlj -fall idlName.idl生成包含stub和skeleton的包,再复制到src)。
2.Server端(以哥德巴赫猜想验证为例)
(1)编写对象实现和服务程序
(2)编写服务程序
通常程序员都会编写一个名为Server.java的服务程序,服务程序创建伺服对象供客户端使用。
3.编写客户程序
4.stub异常解决
在IDl编译生成的stub中,ServantObjectExt和exceptionalCompletion()及exceptionalCompletion()出现异常,而在API文档中我也无法找到ServantObjectExt和exceptionalCompletion()及exceptionalCompletion()相关知识,在此本人也存有疑惑,为何明明是编译IDL时它自动生成的stub,其中方法应该有理可据才是,为何我找不到相关源方法,最后我只能根据代码含义,用equals()方法暂时代替,若有知其因或有具体解决方案的,欢迎共享交流。
改为
5.项目整体
四.运行结果及说明
1. 启动windows命令行,切换到jdk安装目录bin文件夹下,执行tnameserv:
2.运行Server端再运行client端:
注:项目初学,如有不足之处,请不吝赐教。