Corba项目笔记

**********eclipse下corba环境搭建可以参考:Corba环境搭建笔记

一、实验要求

自选程序逻辑学习使用jdk自带orb和JacORB。

以哥德巴赫猜想验证为例。

二、实验原理

1.典型的CORBA应用实现过程

Corba项目笔记_第1张图片

2.IDL语言

说明性语言,定义组件接口,不定义实现;

语法上可以看成C++的一个子集,规定组件的属性、所继承的父类、产生的异常、事件和各类数据类型;

编译器作用:将IDL映射到具体程序设计语言,产生桩代码和框架代码;

调用请求经客户端桩传递给ORB,然后转发到服务端框架,最后到达真正要执行请求的对象实现实例。

三、实验过程及代码

1、新建一个JacORB项目,编写项目IDL文件

(1)用IDL编写对象规格说明:

Corba项目笔记_第2张图片

(2)编译IDL生成stub和skeleton:

Run---->External Tools----->IDL Compiler,控制台输出如下:

f5刷新,生成包含stub和skeleton的包Corba:

Corba项目笔记_第3张图片

这里stub报错,暂时不用管,后面再具体解决。

(注,也可以使用jdk中的idlj指令,idlj -fall idlName.idl生成包含stub和skeleton的包,再复制到src)。

2.Server端(以哥德巴赫猜想验证为例)

(1)编写对象实现和服务程序

Corba项目笔记_第4张图片
Corba项目笔记_第5张图片

(2)编写服务程序

通常程序员都会编写一个名为Server.java的服务程序,服务程序创建伺服对象供客户端使用。

Corba项目笔记_第6张图片
Corba项目笔记_第7张图片
Corba项目笔记_第8张图片

3.编写客户程序

Corba项目笔记_第9张图片
Corba项目笔记_第10张图片
Corba项目笔记_第11张图片

4.stub异常解决

在IDl编译生成的stub中,ServantObjectExt和exceptionalCompletion()及exceptionalCompletion()出现异常,而在API文档中我也无法找到ServantObjectExt和exceptionalCompletion()及exceptionalCompletion()相关知识,在此本人也存有疑惑,为何明明是编译IDL时它自动生成的stub,其中方法应该有理可据才是,为何我找不到相关源方法,最后我只能根据代码含义,用equals()方法暂时代替,若有知其因或有具体解决方案的,欢迎共享交流。

Corba项目笔记_第12张图片

改为

Corba项目笔记_第13张图片

5.项目整体

Corba项目笔记_第14张图片

四.运行结果及说明

1. 启动windows命令行,切换到jdk安装目录bin文件夹下,执行tnameserv:

Corba项目笔记_第15张图片

2.运行Server端再运行client端:

Corba项目笔记_第16张图片

注:项目初学,如有不足之处,请不吝赐教。

你可能感兴趣的:(Corba项目笔记)