- 浏览: 65321 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
zuo_huai:
赞一个!!!
java多线程编程 -
zuo_huai:
呵呵……,不客气
使用common-fileupload 和common-io实现文件的上传和批量上传 -
lg_asus:
呵呵,不错的东东。多谢
使用common-fileupload 和common-io实现文件的上传和批量上传
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对象服务的实现方式分为两种:1)对象的命名引用方式 2)字符串化对象引用方式。不论采用何种高级语言,创建CORBA应用程序的过程大体如下:
● 编写IDL接口定义文件;
● 将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根;
● 基于服务器框架,编写服务对象实现程序;
● 基于客户端存根,编写客户对象调用程序;
● 分别编译客户对象和服务对象程序;
● 运行服务对象和客户对象程序;
java IDL 创建CORBA应用实例分析
下面通过一个实例,描述如何通过Java创建CORBA应用程序。
1) 编写IDL 接口定义文件(Hello.idl) ,关于IDL 定义的语法请查看“IDL 定义语法”
module HelloApp {
interface Hello {
string sayHello(in string message);
};
};
2) 将接口定义文件IDL 文件编译为相应的高级语言的源代码,产生服务器框架和客户端存根
SUN 通过将IDL 编译为java代码的工具idlj,产生服务框架和客户端存根,具体操作如下:
idlj -fall Hello.idl
该抽象类是一个服务器 skeleton,它可为服务器提供基本的 CORBA 功能。它实现 Hello.java 接口。服务器类HelloServer 扩展 HelloPOA。
该类是客户机 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 的语义。
3)接口实现HelloImpl.java
HelloImpl.java是Hello IDL 接口的实现;每个Hello实例都由一个HelloImpl实例来实现。HelloImpl是HelloPOA的子类,HelloPOA是由idlj编译器从示例 IDL 中生成的。
import org.omg.CORBA.*; import HelloApp.HelloPOA; public class HelloImpl extends HelloPOA { private ORB orb; public void setORB(ORB orb_val) { orb = orb_val; } /* 实现接口声明方法sayHello */ public String sayHello(String message) { System.out.println("我在CORBA的服务器端,客户端正在调用'sayHello'方法。"); System.out.println("Hello " + message); return message; } }
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
public class HelloServer {
public static void main(String args[]) {
try {
/* 创建和初始化 ORB */
ORB orb = ORB.init(args, null);
/* 获取对RootPOA的引用,启动POAManager */
POA rootpoa = POAHelper.narrow(orb
.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();
/* 创建一个实例并将其向 ORB 注册 */
HelloImpl h = new HelloImpl();
h.setORB(orb);
System.out.println("将实例注册到ORB ");
/* 获取对服务端的对象引用 */
org.omg.CORBA.Object ref = rootpoa.servant_to_reference(h);
Hello href = HelloHelper.narrow(ref);
/* 从名称服务中获取根元素名称上下文 */
org.omg.CORBA.Object objRef = orb
.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
/* 在Hello名称下注册新对象 */
String name = "Hello";
NameComponent path[] = ncRef.to_name(name);
ncRef.rebind(path, href);
/* 等待客户端的调用。 */
orb.run();
System.out.println("等待CORBA客户端调用...");
}
catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
System.out.println("HelloServer Exiting ...");
}
}
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
public class HelloClient {
public static void main(String args[]) {
try {
/* 创建和初始化 ORB */
ORB orb = ORB.init(args, null);
/* 获取根命名上下文 */
org.omg.CORBA.Object objRef = orb
.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
/* 在名称上下文中查找Hello对象,获取对它的引用。 */
String name = "Hello";
Hello h = HelloHelper.narrow(ncRef.resolve_str(name));
System.out.println("我在客户端,开始调用CORBA服务器端的'sayHello'方法");
System.out.println("欢迎, " + h.sayHello("javamxj blog"));
} catch (Exception e) {
System.out.println("错误 : " + e);
e.printStackTrace(System.out);
}
}
}
发表评论
-
java7-(fork-join) 的使用
2016-06-29 14:17 0public class ForkJoinTest { ... -
tomcat无法启动的问题 -Xss太小
2016-06-23 16:40 2962线上的tomcat 无法启 ... -
codis实现高可用的服务端架构
2016-01-11 11:03 0codis实现高可用的服务端架构 安装codis 用lv ... -
netty入门
2014-03-14 18:14 18751 阻塞IO ,阻塞异步IO,非阻塞异步IO 首先学习n ... -
SVN权限管理
2013-09-14 10:37 01.安装subversion 2.安装TortoiseS ... -
HIVE知识点
2013-08-21 20:35 0安装hive: 1.创建目录 ... -
HQL
2013-08-21 11:07 0select site, fr, count(sid) as ... -
Hbase微博系统
2013-05-02 11:38 0HBase是一个分布式的、面向列的开源数据库 HB ... -
由Word Count 得到的HDFS、map reducde
2013-05-02 10:57 0HDFS 设计目标: 大文件 一次写入,多次读取 普 ... -
新手在Centos 6 下mysql5.5.30下源码安装
2013-03-30 09:55 13571) 下载CentOS6,mysql5.5.30 源码包, ... -
Protocol Buffers的应用与分析将数据存储在Hbase中
2013-02-04 15:24 0ddd -
hbase整合hadoop,并在Window环境下连接hbase
2012-11-26 22:33 2960环境:redhat9 ,hadoop-1.0.4,hbase- ... -
hadoop中的问题总结
2012-11-18 22:39 1711在做hadoop例子中,Win7远程连接linux服务器上的h ... -
jconsole在windows和linux版本下的使用
2013-04-02 17:10 4164在WINDWO7 平台下使用jconsole: jcons ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2012-10-22 22:03 0一、概述 Sun 的JDK中的几个工具,非 ... -
精通java正则表达式
2012-10-16 22:41 2247精通java正则表达式 1.正则表达式的作用 ... -
java实现文件的按照每次读取固定行数读取一个 文件 ,计算文件总行数和通过LINUX 命令读取固定行数文件内容,计算文件总行数
2012-06-27 22:50 46311 ) java实现文件的按照每次读取固定行数读取一个文件 ... -
[转载]VMWARE 虚拟机连接主机,或被其他网内的机器访问
2012-04-12 12:24 2568原文:http://blog.sina.com.cn/s/bl ... -
JVM内存设置(转)
2012-02-07 09:23 1964对于jvm的设置我一直知道的很少,有时候遇到outOfM ... -
enum"优雅而干净"地解决问题
2011-10-24 14:15 11561.分析代码1 和代码2 的代码 代码1: i ...
相关推荐
总之,Java IDL和CORBA为Java应用程序提供了一种强大的工具集,使其能够与其他语言编写的分布式对象和服务进行通信。随着CORBA规范的不断发展和完善,这些技术将继续在分布式计算领域发挥重要作用。
### 使用CORBA和Java IDL的关键知识点 #### 关于CORBA CORBA(Common Object Request Broker ...通过以上步骤,开发者可以构建出功能完整的CORBA应用程序,利用Java IDL的强大功能,实现跨语言、跨平台的分布式系统。
在实际开发中,开发者会使用 `idlj` 工具将 IDL 文件编译为 Java 类,然后在 Java 应用中导入这些 JAR 文件,以利用定义好的接口与 CORBA 服务器进行通信。此外,ORB(例如 JacORB 或 OpenORB)会负责对象的注册、...
学习这个压缩包中的内容,你可以了解到如何设置CORBA环境,如何编写和使用IDL,以及如何在Java中实现和调用远程对象。这对于理解分布式系统和企业级Java应用的开发非常有帮助,尤其是在需要跨平台交互的场景下。同时...
在"支持选举的Java IDL应用"中,我们主要探讨的是如何利用Java IDL来实现一个选举系统,其中包含了服务器端的方法`getList`和`castVote`。 1. **Java IDL基础**: - Java IDL是Java Remote Method Invocation (RMI...
Orbacus 提供了一套完整的工具集,用于生成 Java IDL 接口代码、构建 CORBA 对象和服务、以及部署和管理 CORBA 应用。 使用 Orbacus 进行 Java 和 CORBA 的集成,开发者首先需要定义接口的 IDL 文件,然后使用 ...
"CORBA.rar_java IDL" 是一个与分布式计算相关的资源,主要涉及CORBA(Common Object Request Broker Architecture)技术在Java环境下的应用,利用Java IDL(Interface Definition Language)进行接口定义和通信。...
java开发华为corba接口所需要的华为idl文件,用于编译生成华为corba服务端接口. corba开发参考:https://my.oschina.net/dong706/blog?catalog=5757620
Java IDL作为桥梁,使得Java程序员能够利用CORBA系统,实现分布式应用程序。 文档"java idl.doc"很可能是关于如何使用Java IDL进行CORBA接口开发的详细指南,涵盖了从理解IDL语言到实际编写和测试IDL文件的整个流程...
文档的目标是定义一种解决方案,该方案既要与当前的Java RMI语义完全兼容,又要与OMG IDL、IIOP以及CORBA对象模型完全兼容。 #### 三、RMI/IDL子集 文档详细描述了Java RMI的一个子集——RMI/IDL,这部分内容规定...
本次课的安排是介绍CORBA 及如何使用JAVA编写CORBA客户和服务。到本次课结束时大家应该能够使用JAVA设计和实现利用CORBA通信的系统
Java版的CORBA利用Java平台的强大功能,提供了跨平台的远程对象调用能力。在这个实例中,我们将深入探讨如何在Java环境中使用CORBA。 首先,我们需要理解CORBA的核心概念:ORB(Object Request Broker),它是整个...
JAVA与CORBA的结合,可以充分利用CORBA的跨平台通信优势,同时发挥JAVA在动态类型处理、内存管理和并发控制等方面的优势。对于需要高可靠性和可扩展性的应用,JAVA与CORBA的组合提供了强大的技术支持。 #### 三、...
创建CORBA客户端是开发分布式应用的重要步骤,本教程将介绍如何使用C++和JAVA语言创建CORBA客户端应用程序。 ### CORBA客户端应用程序开发概念 #### 客户端应用程序概述 在CORBA体系中,客户端应用程序(Client ...
6. **Java IDL**:Java CORBA提供了Java版本的IDL,使得Java开发者可以直接在Java代码中使用IDL定义的接口,并且可以利用Java的特性,如垃圾回收、多线程等。 7. **编程示例**:提供的示例可能是演示如何创建和注册...
1. **CORBA (Common Object Request Broker Architecture)**: CORBA 是一种标准的中间件技术,它允许不同的应用程序在不同的操作系统、网络环境和编程语言之间进行通信。尽管现在有其他替代方案,如Web服务,但学习...
CORBA 提供了一种平台和语言无关的解决方案,允许开发者使用不同的编程语言在不同的操作系统上构建和连接分布式应用。通过ORB(Object Request Broker,对象请求代理),客户端可以透明地调用远程服务器上的对象方法...
Java CORBA技术是一种分布式计算框架,它允许不同的应用程序在不同的操作系统和网络环境下相互通信,仿佛它们都在同一台机器上运行。"CORBA.rar_Java CORBA_corba_corba银行账户"是一个关于如何使用Java CORBA实现...
在Java中实现CORBA,主要依赖于Java IDL(Interface Definition Language)和JDK中的CORBA库。Java IDL允许将接口定义为IDL文件,然后这些接口可以被编译成Java接口,使得Java对象能够符合CORBA规范。CORBA库则提供...
Java CORBA(Common Object Request Broker Architecture)是一种中间件技术,用于构建分布式应用程序。它允许不同计算机上的对象相互交互,仿佛它们都在同一台机器上运行。Java CORBA与RMI(Remote Method ...