不要求进程重启地动态更新代码的方法和系统的制作方法

文档序号:6520901阅读:137来源:国知局
不要求进程重启地动态更新代码的方法和系统的制作方法
【专利摘要】一种动态更新授权代理管理的代码的方法、系统和计算机程序。所述方法包括执行系统存储器中的代理代码的多个版本。代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本。将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中。在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本。当没有客户端实例绑定到代理代码的无效版本时,释放代理代码的无效版本使用的系统存储器的部分。
【专利说明】不要求进程重启地动态更新代码的方法和系统
【技术领域】
[0001]本发明涉及动态更新授权代理管理的代码,更具体地,涉及更新授权代理管理的代码而不要求代理进程或未授权进程重启的方法、系统和计算机程序。
【背景技术】
[0002]在软件产品中,该软件产品可能在给定系统或系统集合上同时具有若干有效实例,通常使用集中的代理进程来管理各个实例。该代理进程可以跟踪各个实例,并且还可能提供一些服务的集合给实例。在包括授权(信任)和未授权(不信任)代码的系统中,代理将经常提供授权服务的集合给未授权实例。在代理提供服务给实例的情况下,实例将绑定到代理,可能交换关于代理提供哪种服务以及如何访问服务的细节。
[0003]如果系统管理员想要将服务应用于代理,则实例典型地必须用对新代理代码提供的服务的任何改变更新。通常,代理停止以便应用服务,然后重新启动,要求实例重新启动并绑定到新代理。结果,实例一段时间不可用,并且停用(outage)出现。在要求服务连续可用的系统中,该停用是不可接受的,并且要求更新代理代码的替代方式。
[0004]在当前系统中,代理代码使用锁定以指示未授权实例在接受代理之前应当等待。这允许代理有机会更新,知道在该时间不会有允许代码的实例。这导致工作在它们不能使用代理的同时在实例中备份,可能导致对用户的错误消息和/或不可接受的等待时间。

【发明内容】

[0005]相应地,本发明的一个示例是一种动态更新授权代理管理的代码的方法。该方法包括在系统存储器中执行代理代码的多个版本。代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本。该方法还包括将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中。该方法还包括在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本。当该方法还包括没有客户端实例绑定到代理代码的无效版本时,释放代理代码的无效版本使用的系统存储器的部分。
[0006]本发明的一个示例是一种动态更新授权代理管理的代码的系统。所述系统包括系统存储器和耦合到系统存储器的计算机处理器。该系统还包括也耦合到计算机处理器的执行单元。该执行单元在系统存储器中执行代理代码的多个版本。代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本。该系统还包括存储单元。该存储器单元将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中。该系统还包括绑定单元。该绑定单元在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本。该系统还包括释放单元。当没有客户端实例绑定到代理代码的无效版本时,该释放单元释放代理代码的无效版本使用的系统存储器的部分。
[0007]本发明的一个示例是一种动态更新授权代理管理的代码的计算机程序产品。该计算机程序产品包括计算机可读程序代码,其配置为:在系统存储器中执行代理代码的多个版本,其中代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本;将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中;在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本;以及当没有客户端实例绑定到代理代码的无效版本时,释放代理代码的无效版本使用的系统存储器的部分。
【专利附图】

【附图说明】
[0008]仅通过示例的方式,现在将参考以下附图描述本发明的实施例,附图中:
[0009]图1示出根据本发明一个实施例的、动态更新授权代理管理的代码的系统。
[0010]图2A和2B示出根据本发明一个实施例的、动态更新授权代理管理的代码的方法。
【具体实施方式】
[0011]参考本发明的各实施例描述本发明。贯穿本发明的描述,参考图1到2B。当参考附图时,贯穿全文所示的相似结构和元件用相似参考标号指示。
[0012]在一个实施例中,更新管理未授权进程的授权代理进程的更新软件的方法,更新软件而不要求代理进程或未授权进程重启。该方法管理存储器中的代理代码的多个版本,并且管理它的生命周期而不中断由未授权进程提供给终端用户的服务的可用性。
[0013]图1示出根据本发明一个实施例的、动态更新授权代理管理的代码的系统102。该系统可以包括系统存储器104、计算机处理器106、执行单元108、存储单元114、绑定单元120和释放单元122。
[0014]执行单元108耦合到计算机处理器106,并且执行单元108在系统存储器104中执行代理代码的多个版本。代理代码的一个版本被执行为有效版本110,并且代理代码的其他版本被执行为无效版本112。
[0015]存储器单元114将代理代码的有效版本110和代理代码的无效版本112的版本号存储在可再加载模块矢量(reloadable module vector)118中。绑定单元120在比较代理代码的有效版本110和代理代码的无效版本112的版本号之后,将之前绑定到代理代码的无效版本112的客户端实例绑定到代理代码的有效版本110。
[0016]当没有客户端实例绑定到代理代码的无效版本112时,释放单元122释放代理代码的无效版本112使用的系统存储器104的部分。
[0017]在本发明的一个实施例中,计算机处理器106可以配置为将代理代码的核心组件124存储在系统存储器104的私有存储126中,并且将代理代码的动态组件存储在系统存储器104的公共存储128中。代理代码的核心组件124可以配置为更新代理代码的动态组件。
[0018]系统存储器104的私有存储126配置为被单个运行进程使用。系统存储器的公共存储128配置为被多个运行进程使用。计算机处理器106可以通过代理代码的核心组件124加载公共存储128中存储的代理代码的新版本。
[0019]在一个实施例中,计算机处理器106可以配置为当客户端实例绑定到代理代码的新版本时,递增与代理代码的新版本相关联的代理计数130。[0020]在一个实施例中,计算机处理器106可以配置为将指向代理代码的动态组件的指针132存储在可再加载模块矢量118中。计算机处理器106配置为通过可再加载模块矢量118,将接口 134暴露给客户端实例,以便通过代理代码的动态组件执行操作系统功能。代理代码具有操作系统的用于执行操作系统功能的授权,并且客户端实例不具有操作系统的用于执行操作系统功能的授权。
[0021]在一个实施例中,计算机处理器106可以配置为登记出口点136。所述出口点136在客户端实例的无效版本112终止时被驱动。位于出口点的代码对于代理计数130连接到的任何可再加载模块矢量118递减代理计数130。当所述代理计数130递减到零时,释放代理代码的无效版本112。
[0022]在一个实施例中,计算机处理器106可以配置为通过比较代理代码的新版本和代理代码的有效版本110的版本号,指定代理代码的新版本为有效。如果版本号不同,则可以设置与代理代码的新版本相关联的有效标志138为真,并且设置与代理代码的有效版本110相关联的有效标志138为假。
[0023]图2A和2B示出根据本发明一个实施例的、动态更新授权代理202管理的代码的方法。该方法包括存储步骤204。在存储步骤204期间,将代理代码的核心组件存储在系统存储器的私有存储中,并且将代理代码的动态组件存储在系统存储器的公共存储中。
[0024]代理代码的核心组件可以配置为更新代理代码的动态组件。系统存储器的私有存储可以配置为被单个运行进程使用。系统存储器的公共存储可以配置为被多个运行进程使用。在一个实施例中,包括代理的软件可以划分为两块:加载到私有存储中的部分和加载到公共存储中的部分。
[0025]加载到私有存储中的代码(核心)负责初始化地址空间和加载被加载到公共存储中的部分。核心还可以听取由系统管理员发送的操作者命令。加载到公共存储的代码(动态扩展)提供未授权进程可以使用的服务。核心的大小与动态扩展的大小相比非常小。核心不能在没有重启代理的情况下被替代。在完成存储步骤204之后,方法继续到执行步骤206。
[0026]在执行步骤206,可以在系统存储器中执行代理代码的多个版本。代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本。在执行步骤206完成之后,方法继续到存储步骤208。
[0027]在存储步骤208,将指向代理代码的动态组件的指针存储在可再加载模块矢量中。可再加载模块矢量包含动态扩展的入口点地址、动态扩展的版本信息、实例号、有效/无效标志、和正在使用该动态扩展的其他地址空间的计数。在存储步骤208完成之后,方法继续到存储步骤210。
[0028]在存储步骤210,可以将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中。在存储步骤210完成之后,方法继续到暴露步骤212。
[0029]在暴露步骤212,通过可再加载模块矢量,将接口暴露给客户端实例,以便通过代理代码的动态组件执行操作系统功能。代理代码具有操作系统的用于执行操作系统功能的授权,并且客户端实例不具有操作系统的用于执行操作系统功能的授权。在暴露步骤212完成之后,方法继续到登记步骤214。
[0030]在登记步骤214,登记出口点。该出口点在客户端实例终止时被驱动。在本发明的另一实施例中,该出口点在代理代码的无效版本终止时被驱动。在一个实施例中,当未授权进程调用登记入口点时,登记进程的部分创建出口,该出口在未授权进程终止时被驱动。在z/OS操作系统上,例如,这可以通过将资源管理器向z/OS登记来实现。
[0031]登记代码将当前可再加载模块矢量定位在众所周知的位置,并且如果它是有效的,则尝试递增正在使用动态扩展的地址空间的计数。有效检查和递增应当自动进行,并且这在z/OS上可以使用compare-and-swap指令来进行。如果计数成功递增,则该未授权进程连接到代理,并且可以使用代理提供的服务,等待代理可能施加的任何额外授权检查。登记代码通过记录矢量的实例号,记录未授权进程连接到该特定可再加载模块矢量的事实。在z/OS上,这可以通过登记系统级别名称令牌,记录未授权进程的STOKEN和来自矢量的实例号来进行。在登记步骤214完成之后,方法继续到加载步骤216。
[0032]在加载步骤216,通过代理代码的核心组件加载公共存储中存储的代理代码的新版本。在一个实施例中,如果系统管理员希望提供服务给代理,则将新代理代码加载到系统上的存储,并且针对代理发出操作者命令,指示它再加载。代理将加载新代理代码,并且加载动态扩展到公共存储中。如果动态扩展中的版本号不同于当前动态扩展的版本号,则当前动态扩展将变为旧动态扩展,并且新动态扩展将变为当前动态扩展。创建新的可再加载模块矢量。该新的可再加载模块矢量的实例号比当前可再加载模块矢量大1,并且在新的可再加载模块矢量中设置新的动态扩展地址。在加载步骤216完成之后,方法继续到释放步骤 218。
[0033]在释放步骤218,指定代理代码的新版本作为代理代码的有效版本。在一个实施例中,通过比较代理代码的新版本和代理代码的有效版本的版本号,指定代理代码的新版本作为代理代码的有效版本。如果版本号不同,则设置与代理代码的新版本相关联的有效标志为真,并且设置与代理代码的有效版本相关联的有效标志为假。在指定步骤218完成之后,方法继续到递增步骤220。
[0034]在递增步骤220,当客户端实例绑定到代理代码的新版本时,递增与代理代码的新版本相关联的代理计数。在一个实施例中,当没有地址空间连接时,计数从零开始。每次为代理矢量创建可再加载模块矢量时,实例号递增。核心向系统登记入口点,这允许未授权进程向授权代理登记。在一个实施例中,这在ζ/OS上可以使用PC例程实现。可再加载模块矢量的地址存储在存储中众所周知的位置。在递增步骤220完成之后,方法继续到绑定步骤 222。
[0035]在绑定步骤222,在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本。在一个实施例中,当未授权进程调用代理提供的任何服务时,当前可再加载模块矢量中的实例号与未授权进程所绑定的可再加载模块矢量的实例号比较。如果实例号不同,则未授权进程必须与该新可再加载模块矢量绑定。该第二绑定进程要求可再加载模块矢量中的计数递增,并且创建使用该可再加载模块矢量的该未授权进程的新记录。该进程现在将具有绑定到两个或更多可再加载模块矢量的两个或更多记录。未授权进程现在使用更新的代理代码。在绑定步骤222完成之后,方法继续到递减步骤224。
[0036]在递减步骤224,当出口点被驱动时,递减与代理代码的无效版本相关联的代理计数。在一个实施例中,所述代理计数由可再加载模块矢量管理。出口递减它所绑定的所有可再加载模块矢量的计数。这可以通过对当绑定到可再加载模块矢量时进程创建的记录迭代来实现。在z/OS上,这可以通过为进程可能已经绑定到的每个可再加载模块矢量构造名称令牌来实现,其中通过获得当前可再加载模块矢量实例号并使用实例号来建立名称令牌,并且持续向下到实例号零。如果名称令牌存在,则进程需要为该可再加载模块矢量递减计数。
[0037]可再加载模块矢量实例的地址通过找到当可再加载模块矢量被刷新时存储的地址来定位。在z/OS上,这通过找到当矢量被更新时创建的名称令牌来完成。出口必须递减矢量中的计数,并且检查矢量中的有效位。这应当自动进行。当所述代理计数递减到零时,释放代理代码的无效版本。在递减步骤224完成之后,方法继续到释放步骤226。
[0038]在释放步骤226,当没有客户端实例绑定到代理代码的无效版本时,释放代理代码的无效版本使用的系统存储器的部分。在一个实施例中,如果计数已经到达零,并且未设置有效位,则动态扩展可以从公共存储卸载(unload)。当登记的地址空间终止时从公共存储卸载动态模块防止代码在它仍然在使用时被删除,并且可以允许多次更新代理代码而不用完公共存储。
[0039]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0040]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0041]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0042]体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
[0043]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0044]本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0045]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
[0046]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0047]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、
[0048]程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0049]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本【技术领域】的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本【技术领域】的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1.一种动态更新授权代理管理的代码的方法,所述方法包括: 在系统存储器中执行代理代码的多个版本,其中代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本; 将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中; 在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本;以及 当没有客户端实例绑定到代理代码的无效版本时,释放代理代码的无效版本使用的系统存储器的部分。
2.根据权利要求1所述的方法,还包括: 将代理代码的核心组件存储在系统存储器的私有存储中,并且将代理代码的动态组件存储在系统存储器的公共存储中;以及 其中,代理代码的核心组件配置为更新代理代码的动态组件; 其中,系统存储器的私有存储配置为被单个运行进程使用;以及 其中,系统存储器的公共存储配置为被多个运行进程使用。
3.根据权利要求2所述的方法,还包括通过代理代码的核心组件加载公共存储中存储的代理代码的新版本。
4.根据权利要求3所述的方法,还包括当客户端实例绑定到代理代码的新版本时,递增与代理代码的新版本相关联的代理计数。
5.根据权利要求2所述的方法,还包括将指向代理代码的动态组件的指针存储在可再加载模块矢量中。
6.根据权利要求5所述的方法,还包括: 通过可再加载模块矢量,将接口暴露给客户端实例,以便通过代理代码的动态组件执行操作系统功能;以及 其中,代理代码具有操作系统的用于执行操作系统功能的授权,并且客户端实例不具有操作系统的用于执行操作系统功能的授权。
7.根据权利要求1所述的方法,还包括登记出口点,该出口点在代理代码的无效版本终止时被驱动。
8.根据权利要求7所述的方法,还包括: 当出口点被驱动时,递减与代理代码的无效版本相关联的代理计数,所述代理计数由可再加载模块矢量管理;以及 其中,当所述代理计数递减到零时,释放代理代码的无效版本。
9.根据权利要求3所述的方法,还包括: 通过比较代理代码的新版本和代理代码的有效版本的版本号,指定代理代码的新版本作为代理代码的有效版本;以及 其中,如果版本号不同,则设置与代理代码的新版本相关联的有效标志为真,并且设置与代理代码的有效版本相关联的有效标志为假。
10.一种动态更新授权代理管理的代码的系统,所述系统包括: 系统存储器;耦合到系统存储器的计算机处理器; 耦合到计算机处理器的执行单元,所述执行单元用于在系统存储器中执行代理代码的多个版本,其中代理代码的一个版本被执行为有效版本,并且代理代码的其他版本被执行为无效版本; 存储器单元,用于将代理代码的有效版本和代理代码的无效版本的版本号存储在可再加载模块矢量中; 绑定单元,用于在比较代理代码的有效版本和代理代码的无效版本的版本号之后,将之前绑定到代理代码的无效版本的客户端实例绑定到代理代码的有效版本;以及 释放单元,用于当没有客户端实例绑定到代理代码的无效版本时,释放代理代码的无效版本使用的系统存储器的部分。
11.根据权利要求10所述的系统,还包括: 其中,所述计算机处理器配置为将代理代码的核心组件存储在系统存储器的私有存储中,并且将代理代码的动态组件存储在系统存储器的公共存储中;以及其中,代理代码的核心组件配置为更新代理代码的动态组件; 其中,系统存储器的私有存储配置为被单个运行进程使用;以及 其中,系统存储器的公共存储配置为被多个运行进程使用。
12.根据权利要求11所述的系统,其中所述计算机处理器配置为通过代理代码的核心组件加载公共存储中存储的代理代码的新版本。
13.根据权利要求12所述的系统,其中所述计算机处理器配置为当客户端实例绑定到代理代码的新版本时,递增与代理代码的新版本相关联的代理计数。
14.根据权利要求11所述的系统`,其中所述计算机处理器配置为将指向代理代码的动态组件的指针存储在可再加载模块矢量中。
15.根据权利要求14所述的系统,还包括: 其中,所述计算机处理器配置为通过可再加载模块矢量,将接口暴露给客户端实例,以便通过代理代码的动态组件执行操作系统功能;以及 其中,代理代码具有操作系统的用于执行操作系统功能的授权,并且客户端实例不具有操作系统的用于执行操作系统功能的授权。
16.根据权利要求10所述的系统,所述计算机处理器配置为登记出口点,该出口点在代理代码的无效版本终止时被驱动。
17.根据权利要求16所述的系统,还包括: 其中,所述计算机处理器配置为当出口点被驱动时,递减与代理代码的无效版本相关联的代理计数,所述代理计数由可再加载模块矢量管理;以及 其中,当所述代理计数递减到零时,释放代理代码的无效版本。
18.根据权利要求12所述的系统,还包括: 其中,所述计算机处理器配置为通过比较代理代码的新版本和代理代码的有效版本的版本号,指定代理代码的新版本作为代理代码的有效版本;以及 其中,如果版本号不同,则设置与代理代码的新版本相关联的有效标志为真,并且设置与代理代码的有效版本相关联的有效标志为假。
【文档编号】G06F9/445GK103870300SQ201310613126
【公开日】2014年6月18日 申请日期:2013年11月27日 优先权日:2012年12月13日
【发明者】D.A.福利斯, T.D.凯辛斯基, M.J.赛克斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1