CORBA

作者:无*
时间:2019-5-17

一.题目分析

充分利用CORBA系统中对象的特点:接口的继承性,操作和属性自身的特点。通过两个实例分析CORBA内部实现结构。
题目一:
Java版CORBA程序1——HelloWorld要求编写实现显示“Hello,World!+班级+中文姓名”字符串.
1.编写IDL接口HelloWorld.idl:(此处先编写文本文档然后重命名为idl文件)

module sample{
interface HelloWorld{ 
wstring sayHello();   
};  
};

说明:CORBA处理字符串有:String和wstring两种类型,string类型主要用于处理ASCII类型的字符串,wstring用于处理多字节的字符串,例如:中文。
2.编译IDL接口:D:\test>idlj –fall Hello.idl
编译结果生成sample包,生成下述文件:

_HelloWorldStub.java
HelloWorld.java
HelloWorldHelper.java
HelloWorldHolder.java
HelloWorldOperations.java
HelloWorldPOA.java

3.编写并编译服务端程序:HelloWorldServer.java
在cmd中输入javac HelloWorldServer.java生成对应的class文件
4.编写并编译客户端程序: HelloWorldClient.java
在cmd中输入javac HelloWorldClient.java生成对应的class文件
5. 运行
启动名字服务器: D:\test>tnameserv -ORBInitialPort 1050
启动服务端程序: D:\test>java HelloWorldServer -ORBInitialPort 1050
输出:HelloWorld is running
启动客户端程序:D:\test>java HelloWorldClient -ORBInitialPort 1050
输出:Hello World! 软工1703班 吴霜
注意:名字服务器、服务端和客户端要分别启动一个DOS命令提示符界面
题目二:
JAVA版CORBA程序2——Counter编写实现连加、连减和加减混合等数学++/- -运算,并进行测试。
1 编写IDL接口counter.idl:

module CounterApp{   
    interface Counter{   
        readonly attribute long value;   
        void inc();   
        void dec();   
    };   
};

2.编译IDL接口:D:\test2>idlj –fall counter.idl
编译结果生成CounterApp包,生成下述文件

_CounterStub.java
Counter.java
CounterHelper.java
CounterHolder.java
CounterOperations.java
CounterPOA.java

3.编写并编译对象实现代码:CounterImpl.java
4.编写并编译服务端程序: Server.java
5.编写并编译客户端程序: Client.java
以上三步都需要在cmd中输入相关命令 javac 文件名
6.运行
启动名字服务器:D:\test2 >tnameserv -ORBInitialPort 1050
启动服务端程序:D:\test2 >java Server -ORBInitialPort 1050
输出:Server started. Stop: Ctrl-c
启动客户端程序:D:\test2 >java Client -ORBInitialPort 1050

二.CORBA模型分析
在此结合CORBA模型对题目进行详细的分析和具体设计,需要绘制出相应的组件结构图。

注:***以题目1为例
HelloWorldStub.java就是服务端的stub类,为客户端提供了CORBA服务功能,它实现了客户端的HelloWorld.java接口。
HelloWorld.java是IDL接口的JAVA语言实现,是方法sayHello()的实现。
HelloWorldHelper.java类提供了许多辅助功能的方法,主要是narrow()方法,它将CORBA对象引用转化成适合的类型。
HelloWorldHolder.java提供了有关参数操作的实现,这些参数在CORBA中使用,但JAVA语言中没有直接的对应。
HelloWorldOperations.java使用JAVA语言描述IDL的接口。

CORBA结构:
在这里插入图片描述
在这里插入图片描述

三.组件实现(源代码)
见文件夹
四.测试、调试及运行结果
首先对软件环境进行测试
在这里插入图片描述
题目一:相关命令输入
在这里插入图片描述
在这里插入图片描述
生成Sample文件夹
在这里插入图片描述
在cmd输入命令后生成相应的class文件
在这里插入图片描述
在这里插入图片描述
运行:
在这里插入图片描述
在这里插入图片描述
题目二:
编写对象接口
在这里插入图片描述
命令输入后生成CounterApp文件夹
在这里插入图片描述
分别编写三个对应文件并输入命令
在这里插入图片描述
在这里插入图片描述
运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
五.经验归纳
此次上机主要是对CORBA进行基本的了解,分析CORBA内部实现结构。掌握CORBA中面向对象的分析方法,通过Java IDL的两个实例的编程了解CORBA。JAVA IDL即idltojava编译器就是一个ORB,可用来在java语言中定义,实现和访问CORBA对象。在以上实例的编程中要注意在cmd中输入正确的命令,并在对应的文件中编写相应内容,题目一由于有汉字的出现,所以要注意在定义并编译对象接口的时候编写的是wstring;其次就是编译和运行的时候要注意名字服务器、服务端和客户端要分别启动一个DOS命令提示符界面,否则就会出现错误。
从以上例子可以看出,使用CORBA后,开发人员再不必关心客户和服务之间的通信问题,也不必处理客户和服务之间的问题,客户系统和服务系统可以在不同的机器系统中运行,并且可以用不同的语言来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值