`
61party
  • 浏览: 1050631 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

利用Java和Java IDL创建CORBA应用

 
阅读更多

CORBA基本介绍

CORBA(Common Object Request Broker Architecture ,公用对象请求代理体系)是OMG(对象管理组织)于1991年提出的基于对象技术的分布计算应用软件体系结构。与过去的面向过程的RPC(Remote Procedure Call)不同,CORBA是基于面向对象技术的,它能解决远程对象之间的互操作问题。CORBA标准主要分为三个部分:接口定义语言(IDL)、对象请求代理(ORB),以及ORB之间的互操作协议IIOP,核心是对象请求代理。CORBA可以抽象系统平台、网络通讯及编程语言的差异。通过在CORBA技术规范中定义多种类型的服务,如名字服务(Naming Service)、事务服务(Transaction Service)、对象生命期服务(LifeCycle Service)、并发控制服务(Concurrency Control Service)、时间服务(Time Service)等功能,为应用软件开发者提供一个全面、健壮、可扩展的分布对象计算平台,使面向对象的应用软件在分布异构环境下方便地实现可重用、易移植和互操作。

与RMI比较

与RMI 不同,CORBA 不属于Java 平台本身。OMG(Object Management Group,对象管理组织)发明了CORBA 规范,CORBA 被设计成与平台和语言无关。因此,CORBA对象可以运行于任何平台之上,位于网络的任何位置,还可以用任何语言(包括 Java、C、C++和Smalltalk 等)编写,只要该语言具有IDL(Interface Definition Language,接口定义语言)的映射。
与RMI 相比,CORBA 是为更大、可伸缩更强的系统准备的,在这些系统中可能有数千个对象;CORBA 的编程和部署比RMI 更复杂,但允程序员开发需要事务、安全性等支持的企业级系统;CORBA 的命名服务也比RMI 命名注册功能更强大和灵活。
CORBA 的实现称为ORB(Object Request Broker,对象请求代理)。Java IDL 即是CORBA 的一个实现,它是JDK1.3 或更高版本的核心软件包之一,定义在org.omg.CORBA及其子包中。在Java IDL 的支持下,开发人员可以使用如下两种方法将Java 和CORBA 集成在一起:
·创建Java 对象并使之可在CORBA ORB 中展开,
·创建Java 类并作为和其它ORB 一起展开的CORBA 对象的客户。这种方法提供了另外一种途径,通过它Java 可以被用于将你的新的应用和以前遗留的系统相集。
利用Java创建CORBA应用
CORBA对象服务的实现方式分为两种:对象的命名引用方式和字符串化对象引用方式。不论采用何种高级语言,创建CORBA应用程序的过程大体如下:
● 编写IDL接口定义文件;
● 将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根;
● 基于服务器框架,编写服务对象实现程序;
● 基于客户端存根,编写客户对象调用程序;
● 分别编译客户对象和服务对象程序;
● 运行服务对象和客户对象程序;
CORBA实例分析
下面通过一个实例,描述如何通过Java创建CORBA应用程序。
1、接口定义(Hello.idl)
然后通过Sun提供的将IDL文件编译成Java源代码的工具idlj,为接口定义文件生成客户端存根和服务器框架。具体操作如下:
idlj -fall Hello.idl
编译后将在 HelloApp 子目录中形成以下六个文件:
HelloPOA.java
该抽象类是一个服务器 skeleton,它可为服务器提供基本的 CORBA 功能。它实现 Hello.java 接口。服务器类HelloServer 扩展 HelloPOA。
_HelloStub.java
该类是客户机 stub,可为客户机提供 CORBA 功能。它实现 Hello.java 接口。
Hello.java
该接口含有 IDL 接口的 Java 版本。Hello.java 接口扩展 org.omg.CORBA.Object 并提供标准的 CORBA 对象功能。
HelloHelper.java
这是一个终态类,可以提供辅助功能,特别是提供将 CORBA 对象引用转换为适当类型所需的 narrow() 方法。
HelloHolder.java
这是一个终态类,其中含有 Hello 类型的公有实例成员。它可为“out” 和 “inout” 变量提供操作。CORBA 有这些变量,但不容易映射为 Java 的语义。
HelloOperations.java
这是一个接口类,其中含有方法 sayHello()。

要完成该应用程序,只需在文件 HelloServer.java 和 HelloClient.java 中提供服务器和客户机的实现即可。
2、接口实现(HelloImpl.java)
HelloImpl.java是Hello IDL 接口的实现;每个Hello实例都由一个HelloImpl实例来实现。HelloImpl是HelloPOA的子类,HelloPOA是由idlj编译器从示例 IDL 中生成的。
3、服务器(HelloServer.java)
服务器类含有服务器的main()方法,可完成以下任务:
· 创建一个 ORB 实例
· 创建一个HelloImpl实例(CORBA Hello对象的实现)并通知 ORB
· 获取一个命名上下文的 CORBA 对象引用,在该命名上下文中注册新 CORBA 对象
· 在命名上下文中将新对象注册在“Hello”名下
· 等待对新对象的调用
4、客户端(HelloClient.java)
下面的应用程序客户机将完成以下任务:
· 创建一个 ORB
· 获取一个指向命名上下文的引用
· 在命名上下文中查找 "Hello" 并获得指向该 CORBA 对象的引用
· 调用对象的 sayHello() 操作并打印结果
CORBA 服务器/客户端 编译运行
把上面4个文件复制到D:/CorbaSample目录下,然后依次执行以下操作:
D:/CorbaSample>idlj -fall Hello.idl
D:/CorbaSample>javac *.java HelloApp/*.java
D:/CorbaSample>tnameserv -ORBInitialPort 8000
D:/CorbaSample>java HelloServer -ORBInitialPort 8000
D:/CorbaSample>java HelloClient -ORBInitialPort 8000
分享到:
评论

相关推荐

    java idl 与 corba

    introduced in Version 1.2 of the Java 2 platform, – provides an interface between Java programs and distributed objects and services built using the Common Object Request Broker Architecture (CORBA).

    使用 CORBA 和 Java IDL.doc

    介绍有关java 开发corba 的一些步骤和技术

    java开发华为corba接口所需idl文件

    java开发华为corba接口所需要的华为idl文件,用于编译生成华为corba服务端接口. corba开发参考:https://my.oschina.net/dong706/blog?catalog=5757620

    JAVA_IDL_And_CORBA

    本次课的安排是介绍CORBA 及如何使用JAVA编写CORBA客户和服务。到本次课结束时大家应该能够使用JAVA设计和实现利用CORBA通信的系统

    Idl.zip_IDL CORBA_corba

    java CORBA接口程序文档资料说明,是最重要的文档资料说明

    corba.rar_java IDL

    CORBA java实现简单投票系统,IDL的java实现

    java开发中兴corba接口所需idl文件

    java开发中兴corba接口所需要的中兴idl文件,用于编译生成中兴corba服务端接口 corba开发参考:https://my.oschina.net/dong706/blog?catalog=5757620

    Java IDL使用实例源代码

    Java IDL使用实例源代码,通过例子你将了解如何引入要使用的包,本应用的stub类,要使用CORBA的名字服务,使用CORBA服务,声明客户应用类,建立ORB对象,args为客户程序启动时的命令行参数,使用ORB的名字服务寻找...

    CORBA可用类库

    CORBA可用类库基于JAVA实现CORBA的应用,采用java创建corba应用,corba对象服务的实现方式分为两种:对象的命名引用方式和字符串化对象引用方式,创建corba应用程序的过 程大体如下:编写IDL接口定义文件;...

    corba核心规范-- 一个简单的CORBA/Java示例

    探索CORBA技术的应用领域---- 一个简单的CORBA/Java示例

    java-idl.rar_java IDL

    用JAVA开发corba接口的文档记录 方便了解调测idl文件的流程

    CORBA简单教程(摘自sun microsystem)

    一个介绍在java中使用corba的简单教程,来源于sun的官方网站。对于想开发分布式应用程序的朋友,是个不错的入门教程哦~~ 目录结构: Distributed Applications Data are Distributed Computation is Distributed ...

    JAVA_API1.6文档(中文)

    java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...

    [原创]Java平台上的CORBA开发

    Java平台上如何开发CORBA程序。并附带IDL语法和CORBA介绍及源代码。zip文件,825K

    IDL-to-Java映射:第二部分使用IDL映射创建组件接口

    我们就本月的CORBA连接中更复杂的类型和辅助类的问题,来继续研究IDL-to-Java映射。上个月,在IDL-to-Java映射的第一部分中,我们研究了基本数据类型、结构和数据传送。本月,我们将集中精力研究映射常数和结构,...

    Java_Corba教材

    本书内容包括CORBA核心、互操作性、互协作和IDL到各种编程语言的映射等四个方面。这些章节也反映了CORBA的一致性。  本书作为对象管理领域的规范初稿,是在对象管理组织(OMG,Object Management Group)和X/Open...

    基于java的corba

    基于java的corba实例

    Java 1.6 API 中文 New

    java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示...

    java-corba:使用CORBA在JAVA中创建简单的CRUD应用

    使用CORBA在JAVA中创建简单的CRUD应用 资料夹结构 |_src |_ MyCORBAObject.idl |_ MyCORBAObjectImpl.java |_ MyCORBAObjectServer.java |_ MyCORBAObjectClient.java |_ README.md 怎么跑 对于Windows $ ...

Global site tag (gtag.js) - Google Analytics