CORBA简介
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范。或者说CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案。
CORBA使用一种接口定义语言用于刻画物件将呈现出来的接口。CORBA又规定了从IDL到特定程序语言,如C++或Java,实现的映射。这个映射精确的描述了CORBA资料类型是如何被用户端和服务器端实现的。
在CORBA体系结构的中心部分是对象请求代理程序(Object Request Broker,ORB),它作为一个”软件总线”来连接网络上的不同对象。在客户端,ORB提供一个发送操作调用的接口;而在服务器端,ORB提供一个将操作调用传输到服务器的API。ORB的任务是定位一个合适的服务器,并且通过一个对象适配器(Object Adapter,OA)将操作调用传送给服务器。OA的目的是:给框架发送方法,调用并且支持服务器对象的生命周期(例如,对象的建立和删除)。
程序目的
- 基于CORBA技术开发一个考试成绩查询系统,主要包括:服务器部分:实现查询和录入服务;客户端部分包括录入和查询部分
- 服务端使用Java编写,使用JDBC访问数据库;
局部流程
- 服务接口定义,在新建目录下,编写DataService.idl,定义查询与录入函数
interface SysProp
{
void CreateTable(in string table_name);
void Insert(in string name,in long score);
long GetScore(in string name);
};
- 用命令生成存根与框架 idlj -fall DataService.idl
- 编写服务端服务实现,并写main函数以启动corba服务.
程序运行
先启动服务器
Client具体调用
org.omg.CORBA.Object objRef;
SysProp syspropRef;
ORB orb = ORB.init(args, null);
objRef = orb.resolve_initial_references("NameService");
System.out.println(orb.object_to_string(objRef));
NamingContext ncRef = NamingContextHelper.narrow(objRef);
NameComponent nc =new NameComponent("SysProp","");
NameComponent path[] = {nc};
syspropRef = SysPropHelper.narrow(ncRef.resolve(path));
System.out.println("Using");
syspropRef.CreateTable("stu");
syspropRef.Insert("rain",90);
int score = syspropRef.GetScore("rain");
System.out.println(score);
建立一个名为stu的表,在表中插入一个元素element(name,socre),远程掉用,给定姓名,查找该元素的成绩;
相关代码
Server:https://github.com/BlackJocker1995/MiddlewareWork02Server
Client:https://github.com/BlackJocker1995/MiddlewareWork02Client