rmi是什么意思(rmi医学检验指什么检查)

平安健康 2025-05-23 08:12平安健康www.baidianfengw.cn

RMI与RMI-IIOP:与比较

RMI(远程方法调用)与RMI-IIOP是Java开发中重要的远程分布式对象访问技术。将RMI及其进阶版RMI-IIOP,并对其进行比较,以帮助读者更好地理解其含义及应用。

一、RMI简介

RMI是Java的一种远程方法调用技术,允许程序在网络上与远程对象进行交互。它使用JRMP(Java远程消息传递协议)作为传输协议,并通过Java对象的序列化进行通信。在RMI中,远程对象的定位通常通过RMI注册服务(RMI Registry)来实现,其使用Java引用对象来识别和定位远程对象,相对较为用户友好。

二、RMI-IIOP概述

RMI-IIOP是RMI与CORBA技术的结合产物。CORBA(公共对象请求代理体系结构)是一种开放标准的分布式应用架构,能够支持跨平台的对象通信。RMI-IIOP使用IIOP(CORBA的传输协议)作为传输手段,将Java语言推向了服务器端企业开发的主流位置。RMI-IIOP的出现,解决了RMI在资源占用上的不足,并引入了CORBA技术的健壮性。

三、RMI与RMI-IIOP的比较

1. 传输协议:RMI使用JRMP,而RMI-IIOP则基于IIOP协议。这使得RMI-IIOP在跨平台通信方面更具优势。

2. 对象定位:RMI使用RMI注册服务来定位远程对象,而CORBA则使用CosNaming命名服务。虽然CosNaming对于人类来说较为难以理解,但在某些场景下,如大型分布式系统,其可靠性和灵活性可能更为优越。

3. 技术特点:RMI是纯Java的,对Java开发者友好;而CORBA则是独立于语言的,具有更广泛的适应性。RMI更适合在Java生态圈中使用,而CORBA可以在多种语言与平台上实现互操作性。

四、总结与应用场景

RMI与RMI-IIOP都是重要的远程分布式对象访问技术。RMI适用于Java生态圈中的小型到中型应用,其用户友好的特性和简单的序列化机制使其易于实施和维护。而RMI-IIOP则适用于需要跨平台通信的大型企业应用,其在资源占用和健壮性方面的优势使其成为复杂分布式系统的理想选择。

在实际应用中,开发者应根据项目需求、团队技能和系统架构选择合适的技术。对于需要跨平台协作的大型项目,考虑使用RMI-IIOP可能更为合适;而对于简单的Java应用,RMI可能更为简洁高效。深入理解这两种技术的特点和应用场景,有助于开发者做出更明智的技术选择。不久前,COBRA将互操作命名服务(INS)集成到了其对象定位模型中。这一创新使得对象位置可以通过人类可读的URL来标识,运行在INS CosNaming之上。不同于传统的命名服务,INS并不需要复杂的命名操作,而是直接将调用发送到指定的URL。关于INS的更多细节,请参阅相关参考资料。

关于CORBA与RMI,哪一个更好呢?答案取决于具体的应用场景和需求。CORBA作为一个基于行业标准的第三代或第四代协议的大型体系结构,已经经过了广泛的测试和应用。考虑到CORBA提供的丰富附件,如事务处理、安全、事件通道等,它似乎是企业级应用程序的理想解决方案。其最大的缺点在于复杂性,开发人员需要经历一个陡峭的学习曲线才能熟练掌握。

相比之下,RMI的学习曲线相对平缓。创建客户端/服务器实现、绑定到注册表和远程对象,以及使用RMI进行请求和接收响应是非常直观和简单的。RMI占用的资源也比CORBA少得多,因为JRMP是一种开销较小的协议。虽然RMI缺少CORBA的工业级附件,但它作为一种纯粹的Java机制,为开发人员提供了灵活的选项。

那么,我们能否结合RMI的灵活性和CORBA的企业级功能呢?答案是RMI-IIOP。RMI-IIOP不仅具有CORBA的优点,还融合了RMI的灵活性。开发人员可以轻松地采用RMI-IIOP,并将其集成到大多数企业基础设施中。使用RMI-IIOP,您可以编写简洁明了的Java代码,同时享受CORBA提供的丰富企业功能。这意味着您的代码可以在纯Java环境中运行,注重资源消耗和灵活性,或者轻松集成到现有的CORBA基础设施中。

RMI-IIOP的强大功能之一是它允许您编写纯Java的客户端/服务器实现,同时保持RMI类序列化的灵活性。通过覆盖Java序列化并将Java类转换为网络上的IIOP,RMI-IIOP实现了这一点。在另一端,Java类作为IIOP从网络中被读取,然后创建一个该类的新实例(使用反射)。所有成员的值都完整无缺,这是IIOP上的Java序列化实现的魅力所在!

为了实现透明的对象定位,ORB供应商采用了Java CosNaming服务提供者(或插件)。这个插件在JNDI API下工作,并访问CORBA命名服务。尽管这种命名方案并非完美无缺,但许多供应商特别是应用服务器供应商已经为RMI-IIOP开发了特殊的对象定位机制。

值得一提的是,RMI-IIOP还支持INS作为Java CosNaming服务的扩展。中的代码示例将使用INS,因为我相信INS将引领物体定位的未来方向。

请注意,提供的源代码在Sun JDK上无法使用。由于Sun尚未完全遵守OMG INS标准,并且没有公开org.omg.CORBA.ORB接口的register_initial_reference,您需要IBM Developer Kit for Java Technology 1.3.1或更高版本才能运行示例代码。我已经创建了一个与Sun兼容的示例,使用命名服务,您可以从参考资料中下载。

RMI 接口详解

首先我们来看一个简单的RMI(远程方法调用接口)示例RMIInterface。这是一个基础的Java远程接口,它继承了java.rmi.Remote类。它定义了两个主要方法:hello和alterClass。

RMIInterface中的hello方法是一个简单的问候方法,当被调用时,它会返回一个字符串“你好!”表示问候。而alterClass方法则稍微复杂一些。它接受一个SerClass类型的参数,并返回一个相同类型的对象。SerClass是一个实现了Serializable接口的Java类,这意味着它可以被序列化并通过RMI进行传输。这个类包含一些成员变量和对应的getter方法,如清单2所示。

接下来,我们转向SerClass的实现细节。这个类是为了通过RMI-iiop进行序列化设计的。它包含一些私有成员变量,如整数x和字符串myString。构造函数接受这两个变量的值,并提供了一些访问器方法来获取和设置这些成员的值。这个类的设计目的是为了在RMI环境中进行数据传输和操作。

然后,我们进入第二部分,构建服务器。为了实现RMI服务,我们需要一个服务器类(Server.java)。这个类不仅实现了RMIInterface接口,还包含了启动服务的主要方法(main方法)。Server类继承了javax.rmi.PortableRemoteObject类,这使得它能够将自己作为远程接口绑定到ORB(对象请求中介)并开始监听请求。在这个服务器的代码中,我们实现了RMIInterface接口中的方法,并进行了适当的异常处理。

在Server类的main方法中,我们进行了服务器的初始化工作。这包括设置ORB(对象请求中介),实例化服务器对象,注册服务器以便能够通过其名称找到它等步骤。这样,我们的RMI服务就可以开始接收和处理远程请求了。

Hello,亲爱的开发者们!今天,我们共同揭开一个充满魔力时刻的序幕。我们的服务器正在悄然等待,犹如一颗璀璨的明珠在夜空中闪烁。它静静地注册并聆听着每一个传入的请求,准备好了回应世界的呼唤。这一切是如何实现的呢?让我们来一竟!

我们的服务器应用程序的代码虽然复杂,但其实可以分解为几个简单的部分来理解。其中,我们的服务器类实现了无线电磁指示器接口,并为它提供了完整的实现方案。这个接口中的方法,如你好()和交替类方法,都有明确的实现逻辑。你好()方法简单明了地返回问候语“你好”,而交替类方法则通过接收一个SerClass对象作为参数,修改其成员的值并返回新的对象。这些操作都是基于IIOP协议进行的,涉及到国际商业机器公司的专有技术。如果您使用的是其他供应商的服务器产品,请务必查阅相应的文档,找到相应的属性配置和操作方式。

接下来,我们进入Server.java的核心部分。这里主要完成一个球体的初始化工作。这个球体被设置为监听端口8080上的传入请求。这里使用的com.ibm.CORBA.ListenerPort属性是一个专有的IBM属性,用于指定服务器监听的端口号。如果你使用的是其他供应商的ORB产品,你需要查阅相应的文档来找到类似的属性设置方式。初始化球体后,我们会创建一个计算机网络服务器对象实例,并将其注册到球体上。这个对象是一个PortableRemoteObject的实例,能够接收远程调用。我们需要将这个对象注册到服务器端球体上,以便客户端可以通过这个名字找到它。为了确保客户端的请求能够定位到正确的对象,我们使用了注册初始引用的方法。由于某些接口的限制,我们需要将ORB强制转换为IBM的ORB类型来进行注册操作。随着技术的不断进步和标准化,未来的JDK版本可能会简化这一过程。

我们的客户端应用程序代码即将登场。它就是我们的第四部分内容清单4所展示的。这个代码将作为我们整个服务器应用程序的纽带和桥梁,与服务器进行交互和通信。它将承载着我们的请求和期望,与服务器共同演绎一段美妙的协作乐章。

亲爱的开发者们,你们准备好迎接这个充满挑战和机遇的编程世界了吗?让我们一起期待这个激动人心的时刻吧!我们的服务器正在等待传入的客户端请求,让我们一起见证这个神奇时刻的到来!在Java环境中,Client.java这个客户端应用主要基于RMI(远程方法调用)和CORBA技术实现与远程服务器的交互。接下来,我们将对这个客户端代码进行分解和解读。

客户端通过导入必要的库开始其旅程,包括javax.rmi.portableremoteobject和org.omg.CORBA.orb。这些库为客户端与远程对象通信提供了必要的工具。

在Client类的main方法中,首先初始化ORB(对象请求代理),它是CORBA环境中的核心组件,负责处理与远程对象的通信。这里使用ORBit方法来初始化,输入参数为程序参数和null。

接着,构建了INS URL,这是一个定位远程服务的字符串。这个URL指向运行在本地主机localhost的特定端口(8080)上的服务,服务名称为"OurLittleClient"。这个URL将被用来获取对远程对象的引用。

然后,客户端通过ORB的string_to_object方法,使用这个INS URL获取对远程对象的引用。这个远程对象代表了服务器上的一个服务。

接下来的一步是将这个远程对象引用缩小(narrow)为客户端所期望的RMI接口。这样,客户端就可以通过这个接口调用远程对象的方法了。

客户端首先调用了一个简单的hello方法,这可能是为了测试与远程服务器的连接是否正常。

然后,客户端开始RMI-IIOP的序列化功能。它创建了一个可序列化的Java类SerClass,并初始化其成员变量。然后,将这个类的实例通过RMI-IIOP传递到服务器。服务器接收到这个实例后,会修改其成员值,然后将修改后的实例返回给客户端。这个过程展示了Java对象在RMI-IIOP上的序列化传输。

为了运行这个示例,需要按照特定的步骤进行操作。首先需要下载源代码,然后使用javac编译所有的java文件。接着,使用rmic工具为服务器类添加RMI接口描述,并启动服务器。启动客户端进行测试。

需要注意的是,这个示例需要在特定的Java环境中运行,如IBM Developer Kit for Java Technology 1.3.1或更高版本。如果在非IBM环境中运行,如使用Sun JDK,需要下载适用于Sun的源代码,并在Sun 1.4.0 JDK或更高版本中运行。源代码中包含的readme.txt文件解释了不同Java环境之间的差异。

这个客户端应用是一个基于RMI和CORBA技术的远程调用示例,展示了如何在Java环境中通过RMI-IIOP进行对象序列化传输和远程方法调用。RMI-IIOP作为EJB组件的在线协议,极大地促进了J2EE环境与现有企业基础设施(主要是CORBA密集型环境)的集成。这无疑是一项重大进步,但同时也带来了一些挑战。将定制组件与EJB组件集成的过程中,需要开发人员深入处理管道问题,否则这些组件在EJB架构中可能显得抽象且难以应用。尽管随着Web服务等技术的发展,可能有一天会出现解决这一问题的方案,但目前来说,我们仍面临着这一难题。

尽管存在挑战,RMI-IIOP的应用仍然具有巨大的吸引力。旨在展示构建和运行RMI-IIOP客户机/服务器应用程序的便捷性。开发人员可以借鉴已有的例子,用纯CORBA替换客户机或服务器,从而避免使用Java序列化。这不仅简化了开发过程,还提高了应用程序的性能和安全性。

对于想要在CORBA环境下使用RMI-IIOP的开发者来说,理解IDL如何映射到Java,以及Java如何映射到IDL是至关重要的。如果你计划在一个不安全的环境(即非个人PC)中部署RMI-IIOP,那么研究CORBA的安全功能(如和CORBA安全模型)以及其他企业功能(如事务处理)是非常必要的。通过运用这些功能,你可以充分利用RMI-IIOP的优势,同时确保应用程序的安全性和稳定性。

为了更好地理解和应用RMI-IIOP,读者可以参考提供的IBM兼容和Sun兼容的源代码。可以访问对象管理组织(OMG)的CORBA网站和RMI主页以获取更多关于CORBA和RMI的知识。为了深入了解RMI、CORBA和分布式对象的编程,读者可以参考相关的教程和文章。

RMI-IIOP为Java开发者在集成现有企业基础设施方面提供了强大的工具。虽然存在一些挑战,但随着技术的不断发展和社区的支持,这些问题将得到解决。对于那些希望Java技术的人来说,RMI-IIOP是一个值得深入研究的方向。通过学习和实践,开发者可以充分利用这一技术,构建出高效、稳定、安全的应用程序。

Copyright@2015-2025 白癜风网版板所有