一、原理和概念
1)CORBA独立于任何编程语言,独立于操作系统
2)采用客户端和服务端模式,客户端和服务端分别配置存根和框架代理
3)ORB(Object Request Broker)充当客户端与服务端之间的中间件
4)IIOP(Internet Inter-Broker Protocol)网络ORB交换协议,不同的ORB通过IIOP通信
5)IDL(Interface Define Language),CORBA采用专门的IDL语言来定义接口。
二、创建CORBA程序的步骤:
1)使用IDL语言定义接口
2)编译接口,生成用目标语言编写的存根类以及其他辅助类的源文件。(java中通过bin/idij.exe来编译,编译后生成POA,Stub,Helper,Holder,Operations)
3)用目标语言来编写接口的实现类(继承*POA)
4)编写服务端程序,创建和注册CORBA对象
5)编写客户端程序,获取CORBA的远程调用
三、服务端创建注册CORBA的步骤
//1.创建和初始化ORB
ORB orb = ORB.init(args, null);
//2.获得根POA的引用,并且激活POAManager
POA rootpoa =POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();
//3.创建一个HelloServiceImpl对象,并且把它与ORB关联
HelloServiceImpl helloServiceImpl = new HelloServiceImpl();
helloServiceImpl.setORB(orb);
//4.获得HelloServiceImpl对象的CORBA类型的对象引用
org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloServiceImpl);
HelloService href = HelloServiceHelper.narrow(ref);
//5.获得命名服务的Context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
//6.把HelloService对象与“HelloService”名字绑定
String name = "HelloService";
NameComponent path[] = ncRef.to_name( name );
ncRef.rebind(path, href);
System.out.println("HelloServer ready and waiting ...");
//7.等待客户端访问HelloService对象
orb.run();
四、客户端调用步骤
//1.创建和初始化ORB
ORB orb = ORB.init(args, null);
//2.获得命名服务的Context
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
//3.获得名为“HelloService”的HelloService对象的远程引用
String name = "HelloService";
helloServiceImpl = HelloServiceHelper.narrow(ncRef.resolve_str(name));
//4.调用HelloService对象的远程方法
System.out.println("Obtained a handle on server object: " + helloServiceImpl);
System.out.println(helloServiceImpl.sayHello());
helloServiceImpl.shutdown();
分享到:
相关推荐
根据提供的文件内容,我们可以了解到关于CORBA组件的多个知识点,以下是详细的解释: 1. CORBA的定义和优势: CORBA(Common Object Request Broker Architecture)即公共对象请求代理体系结构,是一种基于对象的...
### CORBA基础知识与应用 #### 一、CORBA概述 **CORBA**(Common Object Request Broker Architecture,通用对象请求代理系统)是一种广泛应用于分布式计算环境的标准技术。它旨在提供一种跨平台、跨语言的对象间...
* 面向对象的中间件(Object-oriented Middleware):CORBA、DCOM等 * 面向 Resource 的中间件(Resource-oriented Middleware):RMI、JMS等 三、中间件的特点 中间件具有以下特点: * 满足大量应用的需要 * ...
www.pudn.com.txt看起来是一个文本文件,可能是从网站pudn.com下载的资料链接或笔记。Pudn.com是一个分享技术文档和资源的平台,这个文件可能包含了ICE相关的学习资源、教程或者代码示例的链接,有助于扩展对ICE的...
14. 关于编程语言,如C/C++、C#、Java Script,以及各种开发组件和接口如COM/DCOM/COM+、CORBA、EJB等都是项目开发中常见的技术。 通过上述知识点的介绍,可以看出这份笔记覆盖了项目管理工程师在IT领域所需要掌握...
分布式技术是现代软件开发中的重要组成部分,它涉及多种技术手段,如CORBA、ORB、RPC、RMI以及中间件等,旨在解决大型系统中复杂度、扩展性和高可用性的问题。本笔记将重点讨论EJB与Java Bean的区别以及Socket编程的...
6. **Java IDL/CORBA** - 用于实现分布式系统中的对象之间通信的标准。 7. **Java事务体系(JTA)/ Java事务服务(JTS)** - 提供了跨多个事务资源管理器的事务管理机制。 8. **JavaMail 和 JavaBeans激活框架...
【EJB容器的实现方式研究学习笔记】 EJB(Enterprise JavaBeans)容器是J2EE(Java 2 Platform, Enterprise Edition)应用服务器的核心组件,它为开发者提供了在分布式环境中创建和管理业务对象的框架。EJB容器负责...
- 软件构件技术是提高软件复用性和可维护性的关键,常见的构件标准有COM/DCOM/COM+、CORBA和EJB。 - 软件体系结构定义了系统的整体架构,包括典型体系结构、设计方法和评估分析,中间件在其中起到连接和支撑作用。...
使用CORBA在JAVA中创建简单的CRUD应用 资料夹结构 |_src |_ MyCORBAObject.idl |_ MyCORBAObjectImpl.java |_ MyCORBAObjectServer.java |_ MyCORBAObjectClient.java |_ README.md 怎么跑 对于Windows $ ...
### ACE网络编程学习笔记知识点详解 #### 一、面向对象中间件体系结构 **1.1 主机基础设施中间件** 主机基础设施中间件的主要目的是封装不同的底层实现,例如socket和线程,提供统一的接口给上层应用。这种封装有...
5. **Transaction**: 用于定义原子操作的单线程、短生命周期对象,提供了对JDBC、JTA、CORBA事务的底层抽象。一个Session可以跨越多个事务,事务的划分可以使用底层API或Transaction对象来控制。 6. **...
它还支持WDDX复杂数据交换,可以与Java对象交互,并通过CORBA扩展进行远程对象访问。 在文本处理和XML处理方面,PHP支持POSIX正则表达式和Perl兼容正则表达式,能解析和操作XML文档。PHP 4引入SAX和DOM解析器,...
- 软件构件技术:COM/DCOM/COM+、CORBA和EJB等是常见的构件标准,用于构建可重用的软件组件。 - 软件体系结构:定义了软件的整体结构,包括典型架构如客户-服务器、分布式和微服务等,以及软件体系结构设计、分析...
### Shark笔记:深入理解Shark工作流管理系统 #### 关键知识点概述 Shark是一个开源的工作流管理系统,由ObjectWeb组织维护,遵循WFMC(Workflow Management Coalition)标准,使用WFMC XML标准XPDL来定义工作流程...
常见的中间件类型有数据库访问中间件(如JDBC、ODBC)、远程过程调用中间件、面向消息中间件(如IBM的MQSeries)、分布式中间件(如CORBA、DCOM)和事务中间件。 五、项目管理与法律法规 项目管理涵盖五大过程组...
- **中间件**:ICE(交互组件引擎)、CORBA(公共对象请求代理体系结构)、DCOM(分布式组件对象模型)等。 - **网络类型**:互联网、移动电话网络、企业网络、工厂网络、校园网络、家庭网络等。 - **特点**: ...
### EJB学习笔记8:深入理解事务处理机制 #### 一、事务的背景知识 **事务**是指一系列操作,这些操作作为一个不可分割的工作单元来执行,即要么全部完成,要么完全不执行。事务的主要特性包括: - **原子性...
本篇笔记将深入探讨ACE库在C++网络编程中的应用和设计思路。 首先,我们来理解什么是ACE库。ACE是一个开源的C++框架,由Douglas C. Schmidt领导的团队开发,它提供了一组用于构建分布式和网络软件的可移植组件。ACE...