### 使用CORBA和Java IDL的关键知识点 #### 关于CORBA CORBA(Common Object Request Broker Architecture,通用对象请求代理架构)是由Object Management Group (OMG)开发的一种标准分布式对象模型。这一架构允许不同厂商开发的对象组件跨越网络和操作系统边界进行通信与交互。 **CORBA的主要特点包括:** - **分布式计算:** 支持分布式的应用环境,使得对象可以在不同的机器之间通信。 - **语言和平台独立性:** 支持多种编程语言(如Java、C++等),并通过IDL(Interface Definition Language)来定义对象接口,从而确保了语言间的互操作性。 - **位置透明性:** 对象可以位于网络上的任何地方,而客户端无需关心对象的具体位置。 - **安全性:** 支持安全的身份验证和授权机制,保护敏感数据。 #### 关于Java IDL Java IDL是Java Development Kit (JDK) 1.2及以上版本中包含的一组工具和服务,用于开发基于Java的CORBA应用程序。它提供了一种方法,使开发人员能够定义、实现和访问用Java编写的CORBA对象。 **Java IDL的关键特性:** - **IDL-to-Java编译器(idltojava):** 将IDL文件转换成Java代码,包括stub和skeleton文件。 - **支持瞬态对象:** 这些对象的生命期受到服务器进程的生命期的限制。 - **瞬态名字服务器:** 用于存储和检索CORBA对象的引用,帮助客户端查找对象。 - **遵循CORBA/IIOP 2.0和IDL-to-Java语言映射标准:** 确保与其他CORBA实现的兼容性。 #### Nutshell中的CORBA概念 CORBA的基本概念和工作机制可以简述如下: **CORBA对象模型:** - **客户机(Client):** 发起请求的应用程序或对象,可以调用其他CORBA对象的服务。 - **对象请求代理(ORB):** 负责处理来自客户机的请求并将它们转发给适当的目标对象。 - **对象实现(Servant):** 实现特定对象类型的功能代码。 - **stub/skeleton:** 分别在客户机端和服务器端用于处理对象请求和响应的代理代码。 **CORBA对象交互过程:** 1. **客户机获取对象引用:** 客户机首先通过某种方式获得远程对象的引用。 2. **发起方法调用:** 客户机通过对象引用调用对象的方法。 3. **请求传输:** 方法调用被转发给ORB,后者识别出远程对象所在位置,并将请求发送给相应的ORB。 4. **请求处理:** 目标ORB接收到请求后,将其转发给适当的对象实现(servant)。 5. **响应返回:** 方法执行完毕后,结果通过ORB返回给客户机。 #### 定义并实现CORBA对象 为了开发基于CORBA的应用程序,开发者需要完成以下步骤: **定义对象接口:** - 使用IDL定义对象接口。IDL文件描述了对象类型及其公共接口(方法签名)。 - 示例IDL定义:`interface Document { string getTitle(); void setTitle(string title); };` **生成Java代码:** - 使用IDL-to-Java编译器(如`idltojava`)将IDL文件转换成Java代码。这包括stub(存根)和skeleton(骨架)代码。 - `idltojava`命令示例:`idltojava -fall Document.idl` **实现对象:** - 开发者需要实现IDL定义的对象接口。这通常涉及到创建一个类,该类继承自由`idltojava`生成的抽象类或接口。 - 示例实现:`public class DocumentImpl extends DocumentPOA { private String title; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }` **部署对象服务器:** - 启动ORB并注册对象实现。 - 示例启动命令:`org.omg.CORBA.ORB.init(args, null);` #### 客户机实现 客户端程序通过ORB获取对象引用,并使用该引用调用远程对象的方法。这通常涉及以下几个步骤: **初始化ORB:** - 创建并初始化ORB实例。 - 示例初始化:`org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);` **获取对象引用:** - 使用ORB获取对象引用,通常通过名字服务器或硬编码的URL。 - 示例获取引用:`org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService");` **调用远程对象方法:** - 使用对象引用调用远程对象的方法。 - 示例方法调用:`String title = ((Document)obj).getTitle();` 通过以上步骤,开发者可以构建出功能完整的CORBA应用程序,利用Java IDL的强大功能,实现跨语言、跨平台的分布式系统。
剩余39页未读,继续阅读
- 粉丝: 0
- 资源: 47
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助