中间件技术CORBA的应用,实现远程调用数据库。

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的目的是:给框架发送方法,调用并且支持服务器对象的生命周期(例如,对象的建立和删除)。

程序目的

  1. 基于CORBA技术开发一个考试成绩查询系统,主要包括:服务器部分:实现查询和录入服务;客户端部分包括录入和查询部分
  2. 服务端使用Java编写,使用JDBC访问数据库;

局部流程

  1. 服务接口定义,在新建目录下,编写DataService.idl,定义查询与录入函数
interface SysProp
{
    void CreateTable(in string table_name);
    void Insert(in string name,in long score);
    long GetScore(in string name);
};
  1. 用命令生成存根与框架 idlj -fall DataService.idl
  2. 编写服务端服务实现,并写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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值