确定性散列识别远程方法的方法和系统技术方案

技术编号:2884696 阅读:265 留言:0更新日期:2012-04-11 18:40
提供了一种方法和系统,使用从客户以调用请求发送给服务器的方法署名中计算得到的散列值,唯一地识别一远程方法以在服务器上启用。当客户希望启用位于一服务器上的远程方法时,客户把识别该远程方法的散列值发送给“远程方法启用”RMI调用中的该服务器。在一实现中,该散列值是通过把一散列函数应用于方法串名和参数类型清单以及可能的返还类型而创建的。当服务器接收到此RMI调用时,服务器使用接收到的散列值识别要启用哪一个方法。服务器保持散列值与服务器上其相关远程方法的映射并使用此散列值引用正确的方法。此外,在一实现中,服务器在创建一远程对象时动态地创建此映射表。服务器识别该对象所实现的方法并对每一方法创建散列值。把这些散列值存储在用来引用该远程方法的映射表中。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及数据处理系统,尤其涉及在远程服务器上的远程方法启用。更具体来说,本专利技术涉及使用散列值在服务器上识别远程方法的方法和系统。B.相关技术分布式系统通常包括连接在一网络(例如,局域网(LAN)、广域网(WAN)或因特网)中的诸如计算机及有关外围设备等多个机器。分布式系统一般需要在不同地址空间(可能位于不同机器上)中运行的计算实体(例如,应用程序、程序、小应用程序等)能进行通信。对于一基本的通信机构,分布式面向对象的系统利用远程过程调用(RPC)机构,它叫做远程方法启用(RMI)。RMI有助于属于不同地址空间的“对象”之间的应用程序级通信。在面向对象的系统中,“类(class)”提供了创建具有这一类的特征的“对象”(它们代表该系统所管理的项目和实例)所用的模板。术语模板代表每一类中的对象(即,数据项),共享由这一类所确定的某些特性或属性,诸如其方法。对象通常是在系统操作期间动态创建的。一般,在同一类的对象上启用(即,引起操作)与这一类相关的方法。RMI是启用一远程对象的一个方法的动作。响应于使用RMI的启用一远程对象的一个方法,较低级的通信进程(process)使得在该远程对象上执行所启用的方法。JayaTM运行时间系统(被设计成实现以JavaTM面向对象的编程语言所编写的应用程序)支持专用的JavaTMRMI应用程序接口(API)。例如,在Sun Microsystems,Inc.的名为“远程方法启用规范”(1997)的文档说明了此API,这一文章可通过全球资源定位器(URL)http//www.javasoft.com/products/jdk/1.1/docs/guide/rmi/spec/rmiTOC.doc.html而获得,在这里通过参考而引入。在许多文章中描述了JavaTM语言,包括Jamies Gosling、Bill Joy和Guy Steele、Addison-Wesley在1996年的“Java语言规范”的文章。Java和所有基于Java的商标都是Sun Microsystems,Inc.在美国和其它国家的商标或注册商标。Java RMI假定了一种专用的Java运行时间系统的同构环境,因此Java RMI尽可能地利用Java语言的专用对象模型。在JavaTM分布式对象模型中,远程对象是具有可从另一运行时间系统(可能位于不同的机器上)启用的方法的对象。通过以规定此远程对象的方法的Java语言所编写的一个或多个远程接口码来描述这种类型的对象。Java运行时间系统跟踪通过本地虚拟机(VM)来执行的计算实体所引用(reference)的所有远程对象。JavaTMVM(JVM)是运行时间系统的一个抽象的计算器,它接收来自字节码形式的程序的指令并解释这些字节码(这是通过把这些字节码转换成诸如对象码等执行形式并执行它们来实现的)。在Tim Lindholm和FrankYellin、Addison Wesley在1996年的名为“Java虚拟机规范”的文章中详细地描述此JVM。在Java RMI中,客户在处理一程序时可通过与该客户所提供的某些“参数”信息相关联的方法的服务器计算机来远程地启动处理。在服务器已处理了此过程后,它将把其处理结果提供给该客户,其后该客户可在其处理操作中使用该结果。通常,在这样的RMI调用中,客户将利用本地“承接程序(stub)”,该承接程序在被调用时把此请求传递给实现此特定方法的服务器、获得结果并把这些结果返还给客户。通常,在客户对一包含一方法清单的远程对象调用一方法时,由识别选中方法的串名或序号来识别该方法。然而,通过其串名来识别一方法可能会错误地识别一远程方法,因为该远程方法可能具有带相同串名的不止一个方法。这种方法叫做“过载(overloaded)”。虽然,方法可具有相同的串名,但具有重复的相同串名的过载方法通常具有不同的参数类型。例如,假定使用Java编程语言的一个远程方法具有以下两个方法<pre listing-type="program-listing"><!]></pre>如果客户进行搜索而启用这两个方法中的一个方法,则仅靠串名“lookupPhone”不能使该远程对象确定要启用的正确方法,这是因为存在不止一个具有该名称的方法。识别一远程方法的另一个常规途径是按字母顺序放置这些方法并对它们进行编号。假定一远程对象实现以下两个方法<pre listing-type="program-listing"><!]></pre>可如下表示这两个方法的编号方式1.lookupPhone2.storePhone在客户想要启用一方法时,它简单地发送相应于该方法启用指令中该方法的号码。然而,如果要把新的方法加到远程对象上,则它表现如下<pre listing-type="program-listing"><!]></pre>该方法的新编号方式将为1. lookupAddress2. LookupPhone3. storeAddress4. storePhone因而,相应于每一方法的号码已改变。这样,继续使用旧编号方式的旧承接程序将使现有的客户启用错误的方法。相应地,想要提供一种唯一地识别RMI的远程对象的方法的系统。
技术实现思路
本专利技术通过提供一种使用散列值来识别远程对象的方法的方法和系统,它满足了这个和其它需要。一种数据处理系统中用于启用一远程方法的方法包括以下步骤提供一唯一识别一远程方法的散列值、响应于启用该远程方法的指令发送该散列值以及根据此散列值来启用该远程方法。本方法还包括使用该散列值来进行把该远程方法在一映射表中定位的步骤。还提供实施依据本专利技术的方法的设备和系统。本专利技术的优点是很多的。例如,符合本专利技术的方法和系统识别要启用的唯一远程方法,从而避免了对不正确远程方法的错误识别。此外,即使两个或多个方法具有相同的串名或这些方法使用变化的编号方式系统,也能够进行这一识别。虽然可使用一长串诸如该方法名称结合一参数类型清单等以更精确地识别一远程方法,但这种识别器很不方便。由于不需要使用长的串来更精确地识别远程方法,使用散列值进一步提供了更高的效率。此外,它允许服务器更有效地进行操作,这是因为服务器能更有效地管理和计算不同于串的整数。因此,想要提供一种使用散列值唯一地识别远程方法的方法和设备。附图概述引入本说明书并构成其一部分的附图示出本专利技术的一个实施例,结合这些附图及其描述来说明本专利技术的优点和原理。图中,附图说明图1示出可实现依据本专利技术的系统的网络;图2是可实现本专利技术的计算机系统的系统体系结构的方框图;图3是示出符合本专利技术在客户计算机和服务器计算机之间使用散列值的RMI调用的方框图。图4是符合本专利技术的散列值映射表的方框图;图5是示出符合本专利技术用来识别唯一的远程方法的步骤的流程图;以及图6是示出服务器用来创建依据本专利技术的散列值映射表的步骤的流程图。详细描述概述符合本专利技术的方法和系统使用一散列值来识别一远程对象的一个方法。当客户希望启用位于一服务器上的一个远程对象的一个方法时,客户经由RMI连接把识别该特定远程方法的散列值发送到服务器。在一个实现中,本文档来自技高网
...

【技术保护点】
一种数据处理系统中用于启用远程方法的方法,其特征在于,包括以下步骤: 提供一唯一地识别一远程方法的标识符; 响应于启用该远程方法的指令发送该标识符;以及 根据此标识符来启用该远程方法。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:R谢夫勒AM沃尔蕾斯PC琼斯
申请(专利权)人:太阳微系统公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1