确定性散列识别远程方法的方法和系统的制作方法

文档序号:6418932阅读:228来源:国知局
专利名称:确定性散列识别远程方法的方法和系统的制作方法
技术领域
本发明涉及数据处理系统,尤其涉及在远程服务器上的远程方法启用。更具体来说,本发明涉及使用散列值在服务器上识别远程方法的方法和系统。
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"><![CDATA[public interface Directory {  PhoneNumber lookupPhone{String name);  PhoneNumber lookupPhone(Person person)}]]></pre>如果客户进行搜索而启用这两个方法中的一个方法,则仅靠串名“lookupPhone”不能使该远程对象确定要启用的正确方法,这是因为存在不止一个具有该名称的方法。
识别一远程方法的另一个常规途径是按字母顺序放置这些方法并对它们进行编号。假定一远程对象实现以下两个方法<pre listing-type="program-listing"><![CDATA[public interface Directory {  PhoneNumber lookupPhone(String name);  void storePhone{String name,PhoneNumber phone);}]]></pre>可如下表示这两个方法的编号方式1.lookupPhone2.storePhone在客户想要启用一方法时,它简单地发送相应于该方法启用指令中该方法的号码。然而,如果要把新的方法加到远程对象上,则它表现如下
<pre listing-type="program-listing"><![CDATA[public interface Directory { PhoneNumber lookupPhone(String name); void storaPhone(String name,PhoneNumber phone); Address lookupAddress(String name); void storeAddress(String name,Address addr);}]]></pre>该方法的新编号方式将为1. lookupAddress2. LookupPhone3. storeAddress4. storePhone因而,相应于每一方法的号码已改变。这样,继续使用旧编号方式的旧承接程序将使现有的客户启用错误的方法。
相应地,想要提供一种唯一地识别RMI的远程对象的方法的系统。

发明内容
本发明通过提供一种使用散列值来识别远程对象的方法的方法和系统,它满足了这个和其它需要。
一种数据处理系统中用于启用一远程方法的方法包括以下步骤提供一唯一识别一远程方法的散列值、响应于启用该远程方法的指令发送该散列值以及根据此散列值来启用该远程方法。本方法还包括使用该散列值来进行把该远程方法在一映射表中定位的步骤。
还提供实施依据本发明的方法的设备和系统。
本发明的优点是很多的。例如,符合本发明的方法和系统识别要启用的唯一远程方法,从而避免了对不正确远程方法的错误识别。此外,即使两个或多个方法具有相同的串名或这些方法使用变化的编号方式系统,也能够进行这一识别。
虽然可使用一长串诸如该方法名称结合一参数类型清单等以更精确地识别一远程方法,但这种识别器很不方便。由于不需要使用长的串来更精确地识别远程方法,使用散列值进一步提供了更高的效率。此外,它允许服务器更有效地进行操作,这是因为服务器能更有效地管理和计算不同于串的整数。
因此,想要提供一种使用散列值唯一地识别远程方法的方法和设备。
附图概述引入本说明书并构成其一部分的附图示出本发明的一个实施例,结合这些附图及其描述来说明本发明的优点和原理。图中,

图1示出可实现依据本发明的系统的网络;图2是可实现本发明的计算机系统的系统体系结构的方框图;图3是示出符合本发明在客户计算机和服务器计算机之间使用散列值的RMI调用的方框图。
图4是符合本发明的散列值映射表的方框图;图5是示出符合本发明用来识别唯一的远程方法的步骤的流程图;以及图6是示出服务器用来创建依据本发明的散列值映射表的步骤的流程图。
详细描述概述符合本发明的方法和系统使用一散列值来识别一远程对象的一个方法。当客户希望启用位于一服务器上的一个远程对象的一个方法时,客户经由RMI连接把识别该特定远程方法的散列值发送到服务器。在一个实现中,此散列值是通过把一散列函数应用于该方法的串名和参数类型清单来创建的。可为此目的使用公知的冲突率低的散列函数。
当服务器接收到此方法启用时,服务器使用接收到的散列值来识别所调用的方法。服务器保持散列值对服务器上与其相关的远程方法的映射并使用该散列值来引用正确的方法。
在一远程对象创建时,服务器动态地创建该映射表。在创建一远程对象时,对该远程对象所实现的每一方法确定散列值。然后,服务器把这些散列值及其相应方法的指针加到该映射表中。在加上散列值和方法指针时,服务器检查该映射表来校验此配对是否是唯一的,即服务器检查散列值的冲突。此进程使得可唯一地识别远程方法,而且还使服务器随着远程方法类的发展而不断地增加方法,从而不必把新方法通知旧承接程序的所有客户。此外,它还使使用旧承接程序的客户能正确地识别服务器上的远程方法。再者,使用散列避免了用长串来识别远程方法的需要。
分布式系统符合本发明的方法和系统在具有各种部件(包括硬件和软件)的分布式系统(“示例的分布式系统”)中进行操作。示例的分布式系统(1)允许系统的用户在一具有许多装置的网络上共享服务和资源;(2)以允许开发稳健而安全的分布式系统的工具和编程方式来提供编程器;以及(3)简化管理分布式系统的任务。为了实现这些目标,示例的分布式系统利用JavaTM编程环境,从而允许以无缝的方式在各装置之间转移代码和数据。相应地,示例的分布式系统处于Java编程环境的顶层,并开发该环境的特性,包括它所提供的安全性及它所提供的强大类型定义。在Jaworski,Java 1.1 Developer’s Guide,Sams.net(1997)中更清楚地描述了Java编程环境,这里通过参考而引入。
在示例的分布式系统中,把不同的计算机和装置结合成为对用户来说表现为单个的系统。通过表现为单个系统,示例的分布式系统提供了单个系统可提供的访问简化和共享能力,而不放弃个人计算机或工作站的灵活性和个人化响应。示例的分布式系统可包含由用户所操作的数千个装置,这些用户在地理上分散,但他们约定了信任、管理和政策等基本概念。在示例的分布式系统内有一个或多个装置所提供的服务的各种逻辑分组,已知每个这样的逻辑分组是Djinn。“服务”指可被用户、程序、装置或其它服务所访问并可以是与计算、存储相关、与通信相关或与提供对另一个用户的访问相关的资源、数据或功能。作为Djinn的一部分所提供的服务的例子包括诸如打印机、显示器和磁盘等装置;诸如应用程序或实用程序等软件;诸如数据库和文件等信息;以及系统的用户。
用户和装置都可加入Djinn。在加入一Djinn时,用户或装置把零个或多个服务加到Djinn并可访问(经历安全性约束)它所包含的任一个服务。因而,装置和用户结合成为一Djinn,以共享对其服务的访问。Djinn的服务在编程方面表现为Java编程环境的对象,此Java编程环境可包括其它对象、以不同的编程语言编写的软件成分或硬件装置。服务具有定义可请求该服务的操作的界面,该服务的类型确定了构成该服务的界面。
图1示出示例的分布式系统100,它包括计算机102、计算机104以及通过网络108互连的装置106。装置106可以是许多装置中的任一个,诸如打印机、传真机、存储装置、计算机或其它装置。网络108可以是局域网、广域网或因特网。虽然把示例的分布式系统100示为仅包括两个计算机和一个装置,但本领域内的技术人员应理解,示例的分布式系统100可包括附加的计算机或装置。
图2更详细地示出计算机102,以示出示例的分布式系统100的许多软件成分。本领域内的技术人员将理解,可类似地构成计算机104或装置106。计算机102包括存储器202、辅助存储装置204、中央处理单元(CPU)206、输入装置208和视频显示器210。存储器202包括查找服务212、发现服务器214和JavaTM运行时间系统216。Java运行时间系统216包括JayaTM远程方法调用系统(RMI)218和JavaTM虚拟机220。辅助存储装置204包括JavaTM空间222。
如上所述,示例的分布式系统100基于Java编程环境从而利用Java运行时间系统216。Java运行时间系统216包括JavaTMAPI,允许程序在Java允许时间系统的顶部运行,从而可以独立于平台的方式访问这种系统功能,包括主操作系统的视窗能力和网络化技术能力。由于Java API为跨移植了Java运行时间系统216的所有操作系统提供了单个公共API,所以在Java运行时间系统顶部运行的程序以独立于平台的方式运行,而不管主平台的操作系统或硬件结构。Java运行时间系统216,作为可从加里福尼亚州Mountain View的Sun Microsystems获得的JavaTM软件开发工具包的一部分而提供。
Java虚拟机220也有利于平台独立性。Java虚拟机220起到类似于抽象计算机器的作用,它接收字节码形式的程序中的指令,并通过把这些字节码动态地转换成诸如对象码等用于执行的形式来解释它们,并执行它们。RMI 218通过允许在一个计算机或装置上执行的对象启用另一计算机或装置上的对象的方法,从而有利于远程方法调用。也提供了RMI和Java虚拟机作为Java软件开发工具包的一部分。
查找服务212定义了特定Djinn可获得的的服务。即,在示例的分布式系统100内可存在不止一个Djinn继而不止一个查找服务。查找服务212包含该Djinnn内的每个服务的一个对象,每个对象包含有助于对相应的系统进行访问的各种方法。在名为“便于查找服务的访问的方法和系统”的___号未决美国专利申请中更详细地描述了查找服务212及其服务,在前文已通过参考而引入。
发现服务214在已知为引导和加入或发现进程中检测何时把一新的装置加到示例的分布式系统100上以及何时检测此新的装置,发现服务器把查找服务212的一个引用传送给新的装置,从而此新装置可把其服务向查找服务登记,并可成为此Djinn的一员。在登记后,新装置变为Djinn的一个成员,结果,它可访问包含在查找服务212中的所有服务。在名为“用于提供在与分布式系统中的装置通信时所使用的可下载代码的设备和方法”的___号未决美国专利申请中更详细地描述了引导和加入的进程,在前文中已通过参考而引入。
Java空间222是由示例的分布式系统100内的程序用来存储对象的对象库。程序使用Java空间222来永久性地存储对象并使得它们可被示例的分布式系统内的其它装置访问。在1997年11月17日提交的名为“利用多形态入口和入口匹配的数据库系统”的08/971,529号未决美国专利申请中更详细地描述了Java空间,该申请已转让给共同的受让人,在这里通过参考而引入。本领域内的技术人员应理解,示例的分布式系统100可包含许多查找服务、发现服务和Java空间。
虽然描述了在示例的分布式系统和Java编程环境中操作的符合本发明的系统和方法,本领域内的技术人员应理解,本发明可在其它系统和其它编程环境中实施。此外,虽然把本发明的方面描述为存储在存储器中,但本领域内的技术人员应理解,还可把这些方面存储在其它类型的计算机可读媒体上或从中读取,诸如辅助存储装置,类似于硬盘、软盘或CD-ROM;来自因特网的载波;或其它形式的RAM或ROM。Sun、Sun Microsystems、SunLogo、Java和基于Java的商标是SunMicrosystems股份有限公司在美国和其它国家的商标或注册商标。
使用散列来识别远程方法图3是示出符合本发明使用散列值的一RMI调用的方框图。它也示出两个计算机,客户302和服务器312,它们可相应于分布式系统100中所示的计算机102和104。虽然也可使用其它RMI机构,但在一远程对象上启用一方法是使用Java RMI来实现的。当客户302希望访问服务器312上的一个远程对象314所实现的方法时,客户302使用引用远程对象314的承接程序304。承接程序304通常是从服务器312下载的,但它也可以是客户302本地的或者是从包括另一服务器的网络100中的其它地方下载的。在名为“有助于动态地装载‘承接程序’信息以使能在一地址空间中的程序操作,从而启用另一地址空间中的远程方法或过程的处理的系统和方法”的08/636,706号未决美国专利中更详细地描述了客户获得一承接程序的方式,在这里通过参考而引入。此外,可以符合名为“远程方法调用的方法和设备”的___号美国专利申请(其律师备案号为06502.0102-00000)的方式来利用“无承接程序”实现,该申请先前已通过参考而引入。
引用远程对象314的承接程序304具有对应于远程对象314所实现的每一远程方法(诸如远程方法316)的本地方法306。客户实现该本地方法306来启用相应的方法316。它执行诸如启动客户与远程方法316之间的通信链路并发送实现该方法的散列值等功能。然而,应注意,虽然在图3中仅示出一个方法316,但该远程对象314可具有不止一个方法。类似地,虽然在图3中为了简化仅示出一个,但承接程序304可具有实现远程方法的不止一个本地方法。
在符合本发明的一个实现中,本地方法306是在承接程序304(它是由服务器312创建的)的编译期间创建的。当用户提供作为一Java类的一个远程对象316(以Java源码的形式)时,服务器312上的Java编译器(未示出)对此Java类进行编译,继而创建一二进制类文件。服务器上的承接程序编译器(未示出)对此二进制类文件进行编译,以创建一承接程序类。客户使用此承接程序类(即,一承接程序)的实例来启用该远程对象316的方法。
在此实现中,在承接程序的编译过程中把此本地方法306编译成承接程序304。承接程序编译器把散列值308编译成为本地方法。结果,本地方法306具有一散列值,它识别该承接程序所引用的远程对象中的相应方法。例如,假定一服务器具有一远程方法int insurancePremium (String state, int age)然后,相应的承接程序可具有一如下实现的本地方法<pre listing-type="program-listing"><![CDATA[   int insurancePremium (String state,iht age) { Stream out=startNewCall ( ); sendLong (out, 4056878021019060934...); sendString(out,state); sendInt(out,age); Stream in=finishCall(out); String result=readString(in); finishResults(in); return result;}]]></pre>这里,sendLong方法调用的长整数是唯一地识别一远程方法的散列值。
在一实现中,散列值308是通过把一标准散列函数应用于远程方法316的方法名称和参数类型清单318的组合而获得的散列值,如下散列(方法名称,参数类型清单)此散列函数返还的散列值可以是整数。使用方法名称和参数类型清单来避免通过仅使用方法名称而引起的冲突。在另一实现中,可把散列函数应用于方法名称、参数类型和返回值类型。然而,在其它实现中,可把散列函数单独应用于冲突可能较少的方法名称。
在符合本发明的另一个实现中,应用于方法名称和参数类型清单的散列函数是“安全散列算法1”(SHA-1)安全散列标准所使用的散列函数。在联邦信息处理标准公告180-1,“安全散列标准”中详细地描述了此标准,该标准也可以在因特网上的http//csrc.nist.gov/fips处找到。SHA-1协议是产生160位散列值的散列函数。在符合本发明的再一个实现中,所使用的散列值仅仅是SHA-1散列值的前64位。在此实现中,散列值308由这64位(完整的SHA-1散列值的缩短版本)来表示。
图3还示出RMI调用310,它是在客户302发送调用一远程服务器(诸如服务器312)上的一个远程方法的消息时所使用的。RMI调用310还包括散列值308。在接收到RMI调用310时,服务器312使用散列值308来引用映射表320并识别选中的远程方法。
图4还示出符合本发明的服务器312上的映射表320的细节。一般,映射表320代表散列值对服务器312上的一远程对象314的各远程方法的映射。这样,映射表320包括一散列值404的配对402的集合以及一远程方法306的指针。这一指向一方法的指针是“标识值”,它识别一方法,从而可通过该标识值计划性地调用该方法。例如,在Java编程语言中,它可以是java.lang.reflect.Method的一个实例。在C++中,它可以是一函数指针(即,该代码的实际机器地址)。结果,每个散列值304引用一远程方法306。
(1)识别远程方法图5示出在符合本发明使用散列值来识别服务器上的唯一远程方法的方法中所使用的步骤。首先,客户302对服务器312进行RMI调用310,以远程地启用服务器312上的一个远程方法316。在此RMI调用310中,客户302发送识别待启用的远程方法316的散列值(步骤500)。在RMI调用310中,客户302还可传送该远程方法316要使用的任何参数自变量来启用该方法。
接着,服务器312接收包含在RMI调用310中的散列值308(步骤502)。然后,服务器312访问远程对象314的服务器类的映射表320,以识别要启用哪一个远程方法(步骤504)。在访问映射表320时,服务器312使用在RMI调用310中所发送的散列值308,以识别在该映射表中识别要启用的远程方法。
此时,服务器312使用RMI调用310中接收到的参数自变量值来启用方法316(步骤506)。最后,服务器312把此方法启用返还客户302(步骤508)。
对于使用符合本发明的方法的这些步骤的一个例子,假定一远程对象实现以下的示例方法集合
<pre listing-type="program-listing"><![CDATA[public interface Directory { PhoneNumber lookupPhone(String name); PhoneNumber lookupPhone(Person person); void storePhone(String name,PhoneNumber phone); void storePhone(Person person,PhoneNumber phone); Address lookupAddress(String name}; Address lookupAddress(Person person); void storeAddress(String name,Address addr); void storeAddress(Person person,Address addr);}]]></pre>由于此远程方法清单包括具有重复串名的方法,所以通过方法名称访问此清单可能导致启用错误的方法。例如,如果客户希望启用本例中所列出的第一个lookupPhone方法,则客户会发送包括该方法名称和参数类型清单的散列Hash(lookupPhone,String)此进程保证了不会启用具有参数Person的第二个lookupPhone方法。除了此散列以外,客户还发送参数String的自变量(即,查找具有串名John的人的电话号码的“John”)。
(2)建立映射表图6示出符合在本发明的方法中服务器在运行时间内动态地建立映射表320所使用的步骤。一般,在创建一远程对象时,服务器312上的Java运行时间系统把该远程对象的每一方法的散列值加到映射表320中。结果,服务器312具有对应于每一远程类的映射表,因为通常同一类的所有远程对象具有相同的远程方法。
首先,在符合本发明的方法中,在服务器312上创建一对象作为诸如对象314等远程对象(步骤600)。在此创建时,服务器312上的Java运行时间系统对对象314所支持的所有远程方法316进行定位(步骤602)。Java运行时间系统计算远程对象314的每一远程方法316的散列值。在一实现中,它获得方法名称和参数类型清单318(步骤604)并计算该方法名称和参数类型清单的散列(步骤606)。服务器312上的Java运行时间系统把获得的散列值404和方法406的指针加到映射表320中(步骤608)。在加上散列值时,Java运行时间系统检查该映射表,以保证在该映射表中未曾有过该散列值,即相对于散列值不发生冲突。虽然散列函数实际上保证了一散列值将唯一地识别一远程方法,但检查该表校验了没有散列值的冲突。
为了说明图6中所使用的步骤的一个例子,假定创建包含以下方法的一个远程方法
<pre listing-type="program-listing"><![CDATA[public interface Directory { Address lookupAddress(String name); Address lookupAddress(Person person}}]]></pre>服务器312上的Java运行时间系统创建每一远程方法的散列。在本例中,它创建两个散列Hash(lookupAddress,String),以及Hash(lookupAddress,Person)。每一散列值是唯一的,且它们将用来唯一地识别该远程方法。把每一散列值同一指向其相应方法的指针加到映射表320中,从而在映射表320中创建了一方法和散列值配对402。以后,服务器312可使用来自客户302的散列值308访问映射表320,以识别待启用的远程方法316。
使用散列来识别远程服务器上的远程方法的进程有利地使客户唯一地识别该远程方法,而不会识别不正确的方法。此外,使用散列避免了用长码来识别远程方法的需要,从而能进行更有效的处理。错误地识别服务器上的远程方法通常是由于远程方法具有对不止一个方法共同的串名或改变方法的编号方式而未通知使用号码变化的旧承接程序的客户而引起的。符合本发明使用散列来识别一远程服务器上的远程方法的方法和系统避免了这些和有关的问题。
本领域内的技术人员将理解,可对这里所述的符合本发明的远程方法识别策略进行各种修改和改变,而不背离本发明的精神和范围。通过考虑这里所揭示的本发明的说明书和实践,将使本发明的其它实施例对本领域内的技术人员变得明显起来。本说明书和例子只是示例,本发明的真实范围和精神将由以下的权利要求书来表示。
权利要求
1.一种数据处理系统中用于启用远程方法的方法,其特征在于,包括以下步骤提供一唯一地识别一远程方法的标识符;响应于启用该远程方法的指令发送该标识符;以及根据此标识符来启用该远程方法。
2.如权利要求1所述的方法,其特征在于启用步骤包括以下步骤把该远程方法在一指示散列值和相应远程方法的表中定位。
3.如权利要求1所述的方法,其特征在于还包括以下步骤返还该远程方法的启用的结果。
4.如权利要求1所述的方法,其特征在于提供步骤包括把一散列函数应用于该远程方法的标识符和参数集合。
5.如权利要求4所述的方法,其特征在于应用步骤包括以下步骤应用SHA-1散列函数。
6.如权利要求1所述的方法,其特征在于启用步骤包括以下步骤访问包含散列值和对远程方法的引用的散列表。
7.一种数据处理系统中用于启用远程方法的方法,其特征在于,包括以下步骤提供一唯一地识别一远程方法的散列值;响应于启用该远程方法的指令发送该散列值;以及根据此散列值来启用该远程方法。
8.一种数据处理系统中用于使用一散列值来识别一服务器上的一个远程方法的方法,其特征在于,包括以下步骤提供一唯一地识别一远程方法的散列值;响应于启用该远程方法的指令发送该散列值;以及接收该远程方法的启用的结果。
9.如权利要求8所述的方法,其特征在于提供步骤包括以下步骤把一散列函数应用于该远程方法的标识符和一相应参数清单以创建该散列值。
10.如权利要求9所述的方法,其特征在于应用步骤包括以下步骤应用SHA-1散列函数。
11.一种数据处理系统中用于识别包括多个机器的分布式系统中的远程方法的方法,其特征在于,该方法包括通过这些机器之一来执行的以下步骤接收一识别一待启用方法的散列值;根据该散列值来识别该方法;以及执行所述识别的方法。
12.如权利要求11所述的方法,其特征在于执行步骤包括以下步骤启用所述识别的方法;以及返还所述识别方法的启用的结果;
13.如权利要求11所述的方法,其特征在于识别步骤包括以下步骤把此方法在一使用该散列值的表中定位。
14.一种用于使用一散列值来识别一方法并响应于此启用该方法的系统,其特征在于,该系统包括一存储器,包括一用于把散列值映射到方法的映射表;以及一处理器,用于接收一启用一选中方法的请求,该请求包括一识别此选中方法的散列值;访问此映射表,以根据该请求的散列值来识别该选中方法;以及启用该选中方法。
15.一种用于创建一映射表的方法,该映射表存储了散列值与远程方法之间的联系,其特征在于,所述方法包括以下步骤创建一远程对象;识别一由该远程对象所实现的远程方法;计算一代表该远程方法的散列值;以及把此散列值和此远程方法加到此映射表中。
16.如权利要求15所述的方法,其特征在于识别步骤包括以下步骤识别该远程对象所实现的所有远程方法。
17.如权利要求15所述的方法,其特征在于计算步骤包括以下步骤把一散列函数应用于此方法名称和参数类型清单以计算此散列值。
18.一种包括一计算机可读媒体的计算机程序产品,其特征在于,在该计算机可读媒体中包含用于如下启用远程方法的计算机可读代码提供一唯一地识别一远程方法的标识符;响应于启用该远程方法的指令发送该标识符;以及根据此标识符来启用该远程方法。
19.如权利要求18所述的产品,其特征在于启用步骤包括以下步骤把该远程方法在一指示散列值和相应远程方法的表中定位。
20.如权利要求18所述的产品,其特征在于还包括以下步骤返还该远程方法的启用的结果。
21.如权利要求18所述的产品,其特征在于提供步骤包括把一散列函数应用于该远程方法的标识符和参数集合。
22.一种包括一计算机可读媒体的计算机程序产品,其特征在于,在该计算机可读媒体中包含用于如下启用远程方法的计算机可读代码提供一唯一地识别一远程方法的散列值;响应于启用该远程方法的指令发送该散列值;以及接收该远程方法的启用的结果。
23.一种包括一计算机可读媒体的计算机程序产品,其特征在于,在该计算机可读媒体中包含用于如下启用远程方法的计算机可读代码接收一识别一待启用方法的散列值;根据该散列值来识别该方法;以及执行所识别的方法。
24.一种包括一计算机可读媒体的计算机程序产品,其特征在于,在该计算机可读媒体中包含用于如下启用远程方法的计算机可读代码创建一远程对象;识别一由该远程对象所实现的远程方法;计算一代表该远程方法的散列值;以及把此散列值和此远程方法加到此映射表中。
25.一种数据处理系统中用于启用远程方法的设备,其特征在于,包括用于提供一唯一地识别一远程方法的标识符的装置;用于响应于启用该远程方法的指令发送该标识符的装置;以及用于根据此标识符来启用该远程方法的装置。
全文摘要
提供了一种方法和系统,使用从客户以调用请求发送给服务器的方法署名中计算得到的散列值,唯一地识别一远程方法以在服务器上启用。当客户希望启用位于一服务器上的远程方法时,客户把识别该远程方法的散列值发送给“远程方法启用”RMI调用中的该服务器。在一实现中,该散列值是通过把一散列函数应用于方法串名和参数类型清单以及可能的返还类型而创建的。当服务器接收到此RMI调用时,服务器使用接收到的散列值识别要启用哪一个方法。服务器保持散列值与服务器上其相关远程方法的映射并使用此散列值引用正确的方法。此外,在一实现中,服务器在创建一远程对象时动态地创建此映射表。服务器识别该对象所实现的方法并对每一方法创建散列值。把这些散列值存储在用来引用该远程方法的映射表中。
文档编号G06F12/02GK1298514SQ99805491
公开日2001年6月6日 申请日期1999年2月25日 优先权日1998年2月26日
发明者R·谢夫勒, A·M·沃尔蕾斯, P·C·琼斯 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1