RMI(Remote Method Invocation,远程方法调用)
ORB(object request broker,对象请求代理)
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)
IIOP 协议是由 对象管理组织(Object Management Group(OMG))制定的,这个组织还制定并维护着 CORBA 规范。
IDL(Interface Definition Language,接口定义语言)
  • CORBA 运行在 IIOP 协议之上;RMI 使用 JRMP。
  • CORBA 是独立于语言的;RMI 是纯粹 Java 到 Java 的。
  • RMI 使用 JNDI 定位远程对象;CORBA 使用 CosNaming。
  • RMI 会将对象序列化;CORBA 则不然。
RMI-IIOP
  • RMI-IIOP 兼有 CORBA 的强度和 RMI 的灵活性。
  • 开发者很容易就可以使用 RMI-IIOP,RMI-IIOP 也易于集成到多数企业基础架构中。
RMI-IIOP 让您仅需极少修改就可以在 IIOP 上运行 RMI 调用。借助于 RMI-IIOP,您可以编写简单易懂的 Java 代码,同时使用 CORBA 提供的丰富的企业功能套件。而且,代码的灵活性足够大,可以运行在 RMI IIOP 上。这意味着,您的代码可以在纯 Java 环境中运行(当小的资源占用量和灵活性很关键时),或者对代码作少量修改后集成到现有的 CORBA 基础架构中。
RMI-IIOP 很强大的功能之一是,它让您编写纯 Java 客户机/服务器实现而不丧失 RMI 类序列化的灵活性。RMI-IIOP 通过覆盖 Java 序列化并在导线上将 Java 类转换成 IIOP 做到这一点。在另一端,Java 类被作为 IIOP 从导线上读下来,接着创建这个类的一个新实例(使用反射),类的所有成员的值都完整无缺 ― :这就是 IIOP 上的 Java 序列化!
为了让 RMI-IIOP 实现透明的对象定位,ORB 供应商历史上曾经使用 Java CosNaming 服务提供者(或用外行人的话说,是 插件)。该插件在 JNDI API 之下工作,访问 CORBA 命名服务。尽管我没有在这里花篇幅来说明原因,但这种命名解决方案并不理想。其结果是,许多供应商 ― 尤其是应用服务器供应商 ― 为 RMI-IIOP 开发了专门的对象定位机制。
RMI-IIOP 也支持作为 Java CosNaming 服务的一个扩展的 INS。因为我相信 INS 将确定对象定位的未来方向,所以我们在本文将讨论的代码示例使用 INS。
注:因为 Sun 尚未完全遵循 OMG INS 标准,也尚未公开 org.omg.CORBA.ORB 接口的 register_initial_reference ,所以本文提供的源代码将不能与 Sun JDK 一起工作。您将需要 IBM Developer Kit for Java technology,版本 1.3.1 或更高版本。不过,我已经创建了一个使用命名服务的与 Sun 兼容的示例,您可以从 参考资料部分下载它。
说得够多了,让我们来编写代码吧!在以下几部分中,我们将构建一个简单的、基于 Java 的客户机/服务器 RMI-IIOP 应用程序。这个应用程序由三个部分组成:RMI 接口、服务器应用程序和客户机应用程序。示例以在 IIOP 之上的 Java 序列化为特色,所以您可以看到 Java 类如何被客户机实例化,如何传递到服务器,由服务器更改,然后将所有修改完整地回传到客户机。

欲知更多,请查看[url]http://www-128.ibm.com/developerworks/cn/java/j-rmi-iiop/[/url]