构建和更新运行时刻环境的系统和方法

文档序号:6349201阅读:225来源:国知局
专利名称:构建和更新运行时刻环境的系统和方法
技术领域
本发明一般涉及数据处理领域,且更具体地,涉及用于构建包含至少一个软件组件的多个不同版本的系统的运行时刻环境的计算机实现的方法、装置和计算机程序产品。
背景技术
当产品系统中的企业应用服务器(EAS)被更新时,大多数修复包安装软件将把企业应用服务器作为整体整个升级。具体地,所有简档或服务器运行时刻被升级到最新修复包版本,且它们都将在相同企业应用服务器修复包级别处运行。不提供在相同机器中安装和维护不同修复包版本。假设,例如,正在系统上安装企业应用服务器基本版本,例如IBM WebSphere 应用服务器(WAQ版本6. 1。还假设在企业应用服务器上存在三个不同的运行时刻环境(RE), 例如WAS简档X,Y和Z,且还存在三个不同应用部署在X,Y和Z简档上,例如在简档X上的TEST1、在简档Y上的TEST2和在简档Z上的TEST3。还假设,需要将EAS从一个版本升级到另一个版本,例如仅对于在运行时刻环境Y上部署的应用TEST2从WAS版本6. 1升级到WAS版本6. 1.0. 25,且不需要对于其他应用升级EAS。实际上,该升级可能甚至对应用 TESTl和TEST3中的一个或两者有负面影响。例如,应用TESTl已经被特别开发来使用由 IBM WebSphere 应用服务器版本6.1提供的接口。对于企业应用的当前补丁升级通常升级整个企业应用服务器。不提供仅升级企业应用服务器的一个或多个特定运行时刻环境、以便不同运行时刻环境可以运行在与部署在运行时刻环境上的应用相关的不同修复包级别。当前运行时刻环境还需要运行基本企业应用服务器且完全依赖于基本企业应用服务器文件。它们不具有选择感兴趣的版本的选择, 例如存在于系统si上的简档X可能想要在IBM WebSphere 应用服务器6.1上运行,而在相同系统Sl上的简档Y可能想要在IBM WebSphere 应用服务器6.1. 5上运行。

发明内容
根据本发明的一个实施例,提供用于构建系统的运行时刻环境的计算机实现的方法、有形存储介质和数据处理系统。简档管理器接收包含简档标识符的服务请求。简档标识符指定至少一个软件组件的所需版本。简档管理器标识软件组件的完整安装和至少一个增量文件。简档管理器通过优选地利用来自至少一个增量文件的文件、然后利用来自完整安装的文件,来构造所需版本的类路径。然后,利用类路径来构建运行时刻环境。


现在仅通过例子参考附图来描述本发明的实施例,在附图中图1描述了可以实施例示实施例的数据处理系统的网络的图示;图2是可以实现例示实施例的数据处理系统的方框图;图3是图示在可以实现本发明的计算机系统内操作的软件组件的关系的方框图4是根据例示实施例的Java 虚拟机的方框图;图5是用于向数据处理系统的Java 虚拟机提供简档的当前已知数据流图;图6是用于向根据例示实施例的数据处理系统的java 虚拟机提供简档的数据流图;图7是示意地图示根据现有技术的企业应用服务器文件系统的方框图;图8是示意地图示根据例示实施例的企业应用服务器文件系统的方框图;图9是示意地图示根据例示实施例的企业应用服务器升级、补丁或修复包的安装的方框图;以及图10是示意地图示根据例示实施例的由运行时刻环境选择系统版本的方法的流程图。
具体实施例方式如本领域技术人员将认识到的,本发明可以被实现为系统、方法或计算机程序产品。因此,本发明可以采取以下形式全硬件实施例、全软件实施例(包括固件、驻留软件、 微代码等)或者组合了软件和硬件方面的通常都可以被称为“电路”、“模块”或“系统”的实施例。此外,本发明可以采取嵌入在计算机可用程序代码嵌入在介质中的表示的任何有形介质中的计算机程序产品的形式。可以使用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读存储介质例如可以是但不限于电子、磁、光、电磁、红外或半导体系统、装置、设备或者传播介质。计算机可读介质的更具体的示例(非穷尽性列举)包括以下各项具有一条或多条线的电连接;便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、 可擦除可编程只读存储器(EPR0M或闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储设备、诸如支持因特网或内联网的那些的传输介质、或磁存储设备。注意,计算机可用或计算机可读介质甚至可以是在其上打印了程序的纸或另一适当的介质,因为该程序可以经由例如纸或其他介质的光扫描、然后被编译、解释或如果需要的话另外以适当的方式处理、 然后存储在计算机存储器中来电子的捕获。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或关于它们而使用的程序的任何介质。计算机可用介质可以包括在基带中的或者作为载波的一部分的传播数据信号,在该传播数据信号中嵌入计算机可用程序代码。可以使用任何适当的介质来传送在计算机可用程序代码,所述介质包括但不限于无线、有线、光纤光缆、RF等。可以用一种或多种编程语言的任何组合来编写用于执行本发明的操作的计算机程序代码,所述编程语言包括但不限于面向对象的编程语言,例如Java 、Smalltalk.C++ 等;以及传统的过程编程语言。程序代码可以完全在用户的计算机上执行、部分地在用户的计算机上执行、作为单独的软件包执行、部分地在用户的计算机上并且部分地远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一场景中,远程计算机可以通过任何类型的网络连接到用户的计算机,所述网络包括但不限于局域网(LAN)或广域网(WAN)、或者可以进行到外部计算机(例如,使用因特网服务供应商通过因特网)的连接。下面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和 /或框图来描述本发明。将理解,所述流程图和/或框图的每个块、以及所述流程图和/或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以便产生机器,使得经由所述计算机或其它可编程数据处理装置的处理器执行的指令产生用于实现在一个或多个流程图和/或框图的块中指定的功能/动作的部件。这些计算机程序指令也可以被存储在计算机可读介质中,所述计算机可读介质可以指示计算机或其它可编程数据处理装置按照特定的方式运行,使得存储在计算机可读介质中的指令产生包括实现在一个或多个流程图和/或框图的块中指定的功能/动作的指令部件的制造产品。所述计算机程序指令也可以被加载到计算机或其他可编程数据处理装置上,以便使得在计算机或其他可编程装置上执行一系列操作步骤,从而产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个块中指定的功能/动作的过程。现在参考附图,且具体地参考图1-2,提供数据处理环境的示例图,其中可以实现例示实施例。应该理解,图1-2仅是示例,且不意图针对可以实现不同实施例的环境断言或暗示任何限制。可以对描述的环境进行许多修改。图1描述了可以实施例示实施例的数据处理系统的网络的图示。网络数据处理系统100是可以实现例示实施例的计算机的网络。网络数据处理系统100包含网络102,其是用于提供在网络数据处理系统100内连接在一起的在各种设备和计算机之间的通信的介质。网络102可以包括连接,诸如有线、无线通信链接或光纤电缆。在所描述的例子中,服务器104和服务器106与存储单元108 —起连接到网络 102。另外,客户端110,112和114连接到网络102。客户端110,112和114可以是例如个人计算机或网络计算机。在所描述的例子中,服务器104向客户端110,112和114提供信息,诸如引导文件、操作系统映像和应用。客户端110,112和114在该例子中是服务器104 的客户端。网络数据处理系统100可以包括另外的服务器、客户端和未示出的其他设备。位于网络数据处理系统100中的程序代码可以被存储在计算机可记录存储介质上,且被下载到数据处理系统或其他设备用于使用。例如,程序代码可以被存储在计算机可记录存储介质或服务器104上,且通过网络102被下载到客户端110用于在客户端110上使用。在所示示例中,网络数据处理系统100是因特网,网络102表示使用协议的传输控制协议/因特网协议(TCP/IP)组来彼此通信的网络和网关的全球集合。在因特网的中心处是在由路由数据和消息的数千商业、政府、教育和其他计算机系统组成的主节点或主机计算机之间的高速数据通信线的主干。当然,网络数据处理系统100还可以被实现作为多个不同类型的网络,诸如内联网、局域网(LAN)或广域网(WAN)。图1意图作为例子,而不是作为对不同例示实施例的结构限制。现在参考图2,示出可以实现例示实施例的数据处理系统的方框图。数据处理系统 200是诸如图1中的服务器104或客户端110的计算机的例子,其中,可以放置实现处理的计算机可用程序代码或指令用于例示实施例。在该例示例子中,数据处理系统200包括通信结构(fabric) 202,其提供在处理单元204、存储器206、永久存储器208、通信单元210、输入/输出(I/O)单元212和显示器214之间的通信。
处理单元204用于执行可以被加载到存储器206中的软件的指令。处理单元204 取决于具体实施方式
可以是一个或多个处理器的组,或可以是微处理器核。另外,可以使用一个或多个不同种的处理器系统来实现处理单元204,其中,主处理器与次级处理器存在于单个芯片上。作为另一例示例子,处理器单元204可以是包含相同类型的多个处理器的对称的多处理器系统。存储器206和永久存储器208是存储设备216的例子。存储设备是能够临时和/ 或永久地存储信息的任何硬件,所述信息诸如(示例而不是限制)数据、功能形式的程序代码、和/或其他适当的信息。在这些例子中,存储器206可以是例如随机存取存储器或任何其他适当的易失性或非易失性存储设备。永久存储器208可以取决于具体实施方式
而采取各种形式。例如,永久存储器208可以包含一个或多个组件或设备。例如,永久存储器208 可以是硬盘、闪存、可重写光盘、可重写磁带或上述的一些组合。由永久存储器208使用的介质还可以是可移除的。例如,可以对永久存储器208使用可移除硬盘。在这些例子中,通信单元210提供与其他数据处理系统或设备的通信。在这些例子中,通信单元210是网络接口卡。通信单元210可以通过使用物理和无线通信链接之一或两者来提供通信。输入/输出单元212允许与可以连接到数据处理系统200的其他设备输入和输出数据。例如,输入/输出单元212可以通过键盘、鼠标、和/或一些其他适当的输入设备为用户输入提供连接。另外,输入/输出单元212可以向打印机发送输出。显示器214提供向用户显示信息的机构。操作系统、应用和/或程序的指令可以位于存储设备216中,该存储设备216通过通信结构202与处理器单元204通信。在这些示例例子中,这些指令以功能形式位于永久存储器208上。这些指令可以被加载到存储器206中,用于由处理器单元204执行。可以通过处理器单元204,使用可以位于诸如存储器206的存储器中的计算机实现的指令,来进行不同实施例的处理。这些指令被称为可以由处理器单元204中的处理器读取和执行的程序代码、计算机可用程序代码或计算机可读程序代码。在不同实施例中的程序代码可以被实现在不同物理或有形计算机可读介质上,诸如存储器206或永久存储器208。程序代码218以功能形式位于可选择性地移除的计算机可读介质220上,且可以被加载或传输到数据处理系统200,用于由处理器单元204执行。程序代码218和计算机可读介质220在这些例子中形成计算机程序产品222。在一个例子中,计算机可读介质220 可以处于有形形式,诸如光盘或磁盘,其被插入或放入驱动器或作为永久存储器208的一部分的其他设备中,用于传输到诸如作为永久存储器208的一部分的硬盘驱动器的存储设备上。以有形形式,计算机可读介质218还可以采取永久存储器的形式,诸如连接到数据处理系统200的硬盘驱动器、拇指盘驱动器、或闪存。计算机可读介质220的有形形式也称为计算机可记录存储介质。在一些例子中,计算机可读介质220可以不是可移除的。或者,程序代码218可以从计算机可读介质220通过到通信单元210的通信链接和/或通过到输入/输出单元212的连接而被传输到数据处理系统200。通信链接和/或连接在例示例子中可以是物理或无线的。计算机可读介质还可以采取非有形介质的形式, 诸如包含程序代码的通信链接或无线传输。
在一些示例实施例中,程序代码218可以通过网络从另一设备或数据处理系统下载到永久存储器208,用于在数据处理系统200内使用。例如,在服务器数据处理系统中的计算机可读存储介质中存储的程序代码可以通过网络从服务器下载到数据处理系统200。 提供程序代码218的数据处理系统可以是服务器计算机、客户端计算机、或能够存储和传输程序代码218的一些其他设备。为数据处理系统200图示的不同组件不是想要向可以实现不同实施例的方式提供结构限制。不同例示实施例可以在包括除了对于数据处理系统200所示的那些以外的组件或包括代替对数据处理系统200所示的组件的组件的数据处理系统中实现。图2所示的其他组件可以与所示的例示例子不同。可以使用能够执行程序代码的任何硬件设备或系统来实现不同实施例。作为一个例子,数据处理系统可以包括与无机组件集成的有机组件,和 /或可以完全由除了人类以外的有机组件来构成。例如,存储设备可以由有机半导体构成。作为另一例子,在数据处理系统200中的存储设备是可以存储数据的任何硬件装置。存储器206、永久存储器208和计算机可读介质220是有形形式的存储设备的例子。在另一例子中,可以使用总线系统来实现通信结构202,且可以由一个或多个总线 (诸如系统总线或输入/输出总线)构成。当然,可以使用提供在附接到总线系统的不同组件或设备之间的数据传输的任何适当类型的架构来实现总线系统。另外,通信单元可以包括用于发送和接收数据的一个或多个设备,诸如调制解调器或网络适配器。另外,存储器可以是例如存储器206或诸如可以在通信结构202中存在的在接口和存储器控制器集线器中找到的高速缓存。现在参考图3,方框示在可以实现本发明的计算机系统内操作的软件组件的关系。基于Java 的系统300包含向在特定硬件平台上执行的软件提供硬件和系统支持的特定平台操作系统302。java 虚拟机(JVM)304是可以与操作系统结合执行的一个软件应用。Java 虚拟机304给java 运行时刻环境提供执行作为以java 编程语言写的程序、 servlet或软件组件的Java 应用/小程序306的能力。Java 虚拟机304在其中操作的计算机系统可以类似于上述数据处理系统200或计算机100。但是,可以在所谓Java 芯片、硅上Java 或具有嵌入的Picojava核的Java 处理器上的专用硬件中实现Java 虚拟机 304。在java 运行时刻环境的中心是Java 虚拟机,其支持Java 的环境的所有方面,包括其架构、安全特征和网络上的移动性和平台独立性。Java 虚拟机是例如抽象地指定的计算机的虚拟计算机。说明书定义每个Java 虚拟机必须实现的某些特征,和可以取决于Java 虚拟机被设计为在其上执行的平台的设计选择的一些范围。例如,所有Java 虚拟机必须执行Java 字节码,且可以使用一定范围的技术来执行由字节码表示的指令。 可以完全以软件或稍微以硬件实现Java 虚拟机。该灵活性允许不同的Java 虚拟机被设计用于主机计算机和PDA。java 虚拟机是实际执行java 程序的虚拟计算机组件的名称。Java 程序不直接由中央处理器运行,而是由Java 虚拟机运行,Java 虚拟机本身是在处理器上运行的软件。与仅对于其编译代码的一个平台相对,Java 虛拟机允许在不同平台上执行Java程序。Java 程序对于Java 虚拟机进行编译。以此方式,Java 能够支持许多类型的数据处理系统的应用,其可以包含各种中央处理单元和操作系统架构。为了使得Java 应用能够在不同类型的数据处理系统上执行,编译器通常生成架构中性文件格式。在存在Java 运行时刻系统的情况下,该编译的代码可在许多处理器上执行。Java 编译器生成非专用于特定计算机架构的字节码指令。字节码是由Java 编译器生成且由Java 解释器执行的机器独立码。Java 解释器是交替地解码和解释一个字节码或多个字节码的Java 虚拟机的一部分。这些字节码指令被设计为容易在任意计算机上解释,且容易地即时翻译为本地机器码。字节码可以通过即时(just-in-time (JIT))编译器被翻译为本地码。java 虚拟机加载类文件,且执行它们中的字节码。由Java 虚拟机中的类加载器来加载类文件。类加载器加载来自应用的类文件和来自应用需要的Java 应用编程接口 (API)的类文件。执行字节码的执行引擎可以在平台和实施方式上变化。一种类型的基于软件的执行引擎是即时编译器。利用这种类型的执行,一种方法的字节码在成功满足用于即时编译一种方法的某种类型的标准时被编译为本地机器码。然后,在下一次调用方法时,该方法的本地机器码被高速缓存和重用。执行引擎还可以以硬件实现,且嵌入在芯片上,以便本地地执行Java 字节码。Java 虚拟机通常解释字节码,但 Java 虚拟机还可以使用其他技术,诸如即时编译,来执行字节码。当由在特定平台操作系统上以软件实现的java 虚拟机上执行应用时,java 应用可以通过调用本地方法来与主机操作系统交互。以Java 语言来写Java 方法,将其编译为字节码,且将其存储在类文件中。以某些其他语言来写本地方法,将其编译为特定处理器的本地机器码。在其精确形式是特定平台的动态链接库中存储本地方法。现在参考图4,根据例示实施例描述Java .虚拟机的方框图。Java .虚拟机 (JVM) 400包括类加载器子系统402,其是用于加载诸如类和接口的给出了合格的名称的类型的机构。Java 虚拟机400还包含运行时刻数据域404、执行引擎406、本地方法接口 408 和存储器管理410。执行引擎406是用于执行在由类加载器子系统402加载的类的方法中包含的指令的机构。执行引擎406可以是例如Java 解释器412或即时编译器414。本地方法接口 408允许对底层操作系统中的资源的访问。本地方法接口 408可以是例如java 本地接口(JNI)。运行时刻数据域404包含本地方法栈416、Java 栈418、PC寄存器420、方法域 422和堆(heap)4M。这些不同的数据域表示由Java 虚拟机400执行程序所需的存储器的组织。Java .栈418被用于存储Java 方法调用的状态。当启动新线程时,Java 虚拟机为该线程构建新Java 栈。Java 虚拟机仅对Java 栈直接进行两个操作。其推入和弹出帧。线程的Java 栈存储该线程的Java 方法调用的状态。Java 方法调用的状态包括其本地变量、其被调用的参数、其返回的值、以及(如果有的话)中间计算。Java 栈由栈帧组成。栈帧包含单个Java 方法调用的状态。当线程调用方法时,Java 虚拟机将新帧推入线程的Java 栈。当该方法完成时,Java 虚拟机弹出用于该方法的帧,并丢弃它。Java 虚拟机不具有用于保持中间值的任何寄存器;需要或产生中间值的任何Java 指令使用栈来保持中间值。以此方式,为各种平台架构很好地定义了Java 指令集。程序计数器(PC)寄存器420被用于指示要执行的下一指令。每个实例化的线程得到其自己的PC寄存器和Java 栈。如果该线程正执行Java 虚拟机方法,则PC寄存器的值指示要执行的下一指令。如果该线程正执行本地方法,则不定义PC寄存器的内容。
本地方法栈416存储本地方法的调用的状态。以依赖于实现的方式,在本地方法栈、寄存器或其他依赖于实现的存储器域中存储本地方法调用的状态。在一些Java 虚拟机实施方式中,本地方法栈416和Java 栈418被组合。方法域422包含类数据,而堆4M包含所有实例化的对象。在这些例子中,常数池位于方法域422中。java 虚拟机规定严格地定义数据类型和操作。大多数Java 虚拟机选择具有一个方法域和一个堆,其每个由在Java 虚拟机(诸如Java 虚拟机400)内部运行的所有线程共享。当Java 虚拟机400加载类文件时,其从类文件中包含的二进制数据解析关于类型的信息。Java 虚拟机400将这一类型信息放入方法域中。每次构建类实例或阵列时,从堆4 分配用于新对象的存储器。Java 虚拟机400包括分配堆424的存储器内的存储器空间的指令,但不包括用于释放该存储器内的空间的指令。在所描述的例子中的存储器管理410管理被分配给堆似4的存储器内的存储器空间。存储器管理410可以包括垃圾收集器,其自动回收由不再被引用的对象使用的存储器。另外,垃圾收集器也可以移动对象来减少堆碎片。在此的例示实施例描述用于构建系统的运行时刻环境的计算机实现的方法、有形存储介质和数据处理系统。简档管理器接收包含简档标识符的服务请求。简档标识符指定至少一个软件组件的所需版本。简档管理器标识软件组件的完整安装和至少一个增量文件。简档管理器通过优选地利用来自至少一个增量文件的文件、然后来自完整安装的文件, 来构造所需版本的类路径。然后,利用类路径来构建运行时刻环境。例示实施例提供应用/简档在运行时刻期间选择运行时刻环境版本的计算机实现的方法、系统和计算机程序产品。根据例示实施例,企业应用服务器修复包升级类似于虚拟安装的功能,且不整体升级企业应用服务器版本。相反,在升级之后在系统中应该存在当前版本和新的版本两者,以便在应用启动或简档启动阶段期间可以选择任一版本。根据另一例示实施例,包括基本版本和升级的版本的不同运行时刻版本被保持在系统中,且基于运行时刻选择而动态地加载。现在参考图5,描述用于向数据处理系统的java 虚拟机提供简档的已知数据流图。Java 虚拟机510是诸如图4的Java 虚拟机400的Java 虚拟机。Java 虚拟机510 通过维持每个分离的简档的完整安装,在相同机器的分离的简档中安装并维持企业应用服务器的不同版本。Java 虚拟机510包含应用服务器512-516。应用服务器512-516是其中Java 虚拟机510的应用实际执行的主要运行时刻组件。应用服务器512-516的每个执行Java .虚拟机机器实例518-522之一。Java 虚拟机实例518-522是Java 虚拟机510内的类实例。Java 虚拟机实例518-522的若干可以在Java 虛拟机510内分离地执行,只要那些实例每个被包含在分离的应用服务器(诸如应用服务器512-516)内。使用在简档数据库530中存储的简档5对-5观之一来构建Java .虚拟机实例 518-522。简档数据库5 是在诸如图1的存储单元108的存储单元上实现的数据结构,其包含或引用简档524-528的位置。简档524-5 是分离的数据分区,其包括定义应用服务器处理(诸如部署管理器或应用服务器)的运行时刻环境的文件。每个运行时刻环境具有其自己的配置文件、日志、特性和其他属性。简档524-5 可以使得应用服务器512-516的每个运行时刻唯一且与服务器二进制(binary)和与其他简档分离。简档5对_5观的每个是完整的企业应用服务器安装,包括在创建简档时可用的任何软件补丁和更新。每次简档524-5 之一被打补丁或更新时,构建新的、单独的简档。因此,在一个例示实施例中,简档5M是企业应用服务器的里程碑式发布的完整安装。简档 5 是企业应用服务器的完整安装。简档5 也是简档524的修补版本。简档5 是企业应用服务器的完整安装。简档528也是简档526的修补的版本。当Java 虚拟机510接收服务请求530时,简档管理器532识别简档标识符534。 简档标识符534是应该使用企业应用服务器的哪个版本来满足请求以及因此应该使用简档524-528中的哪个来创建诸如Java 虚拟机实例518-522的具体实例的指示。然后,简档管理器532提取简档5对-5观中所指示的一个,且向正执行实例的应用服务器512-516 中的特定的一个分配所提取的简档。现在参考图6,示出了根据例示实施例向数据处理系统的Java虚拟机提供简档的数据流图。Java 虚拟机610是诸如图4的Java 虚拟机400的Java 虚拟机。Java 虚拟机610通过维持每个分离的简档的增量文件,在相同机器的分离的简档中安装并维持企业应用服务器的不同版本。Java 虚拟机610包含应用服务器612-616。应用服务器612-616是其中Java 虚拟机610的应用实际执行的主要运行时刻组件。应用服务器612-616中的每个执行Java 虚拟机实例618-622之一。Java 虚拟机实例618-622是Java 虚拟机610内的类实例。Java 虚拟机实例618-622中的若干可以分离地在Java 虚拟机610内执行,只要那些实例的每个被包含在单独的应用服务器 (诸如应用服务器612-616)内。使用在简档数据库631中存储的简档拟4和一个或多个增量(delta)文件 626-630中的一个来创建Java 虚拟机实例618-622。简档数据库631是在诸如图1的存储单元108的存储单元上实现的数据结构,其包含或引用简档624的位置。简档6M是分离的数据分区,其包括定义应用服务器处理(诸如部署管理器或应用服务器)的运行时刻环境的文件。每个运行时刻环境具有其自己的配置文件、日志、特性和其他属性。简档拟4 可以使得应用服务器612-616的每个运行时刻唯一且与服务器二进制和与其他简档分离。简档6M是完整的企业应用服务器安装。不像图5的简档524-528,简档6M不包括在构建简档时可用的任何软件补丁和更新。在一个例示实施例中,简档6 是企业应用服务器的里程碑式发布的完整安装。增量文件626-630是包含对诸如简档6M的基本简档的改变或对诸如其他增量文件626-630的先前增量文件的改变的文件。对于要应用到简档624的任何软件补丁或更新,要对简档6 颁布的改变不初始地应用于简档624,而是被保存作为增量文件626-630之一。在一个例示实施例中,增量文件626-630中的每个是包含要对简档6M颁布的改变的软件补丁或更新。当动态地将简档6M加载到应用服务器612-616之一中时,首先用来自所标识的增量文件626-630的文件、然后用来自基本简档624的文件来构造类路径。在一个例示实施例中,增量文件626-630中的每个是顺序的软件补丁或更新,其包含要对如由前一个增量文件6沈-630修改的简档6M颁布的改变。例如,但不限于,增量文件6 可以是对简档624的第一更新,使得将直接对简档6M应用增量文件626的软件补丁或更新。增量文件6 可以是对简档624的随后更新,使得将对如由增量文件6 修改的简档6M应用增量文件628的软件补丁或更新。增量文件630可以是对简档624的另一随后更新,使得将对如由增量文件6 和增量文件6 两者修改的简档6M应用增量文件628的软件补丁或更新。因此,如果服务请求632标识包括增量文件626-630中的每个的简档版本,首先用来自增量文件630的文件、然后用来自增量文件628的文件、然后用来自增量文件626的文件、然后用来自基本简档624的文件来构造类路径。当Java 虚拟机610接收服务请求632时,简档管理器634识别简档标识符636。 简档标识符636是应该使用企业应用服务器的哪个版本来满足请求以及因此应该使用简档626-630中的哪个和简档6M —起来创建诸如Java 虚拟机实例618-622之一的具体实例的指示。然后,简档管理器634提取增量文件626-630中所指示的一个以及简档624,且向应用服务器612-616中正执行实例的特定的一个分配所提取的简档。例示实施例提供应用/简档在运行时刻期间选择运行时刻环境版本的计算机实现的方法、系统和计算机程序产品。根据例示实施例,企业应用服务器修复包升级类似于虚拟安装的功能,且不整体升级企业应用服务器版本。相反,在升级之后在系统中应该存在当前版本和新的版本,以便在应用启动或简档启动阶段期间可以选择任一版本。根据另一例示实施例,包括基本版本和升级的版本的不同运行时刻版本被保持在系统中,且基于运行时刻选择而动态地被加载。现在参考图7,根据现有技术示出示意性地示出企业应用服务器文件系统的方框图。文件结构700是EAS的文件系统结构的组织,以便可以在企业应用服务器主目录(home directory)中保持运行时刻文件的基本版本和多个其他完整安装。文件结构700是包含诸如图5的简档524-528的简档的文件系统的示意表示。文件结构700包括主目录702。当企业应用服务器是WebSphere 应用服务器时, 主目录 702 可以是例如(但不限于)\WebSphere\AppServer WAS_H0ME 目录。Websphere 是国际商业机器公司的注册商标。\profiles目录列出了各种简档,但是WebSphere的其他目录和文件,例如Java 目录704、库目录706、插件目录708和特性文件710都在WAS_H0ME 级别处。当对企业应用服务器进行升级,例如从版本6. 1. 0. 0升级到版本6. 1. 0. 25时,例如Java 目录704、库目录706、插件目录708和特性文件710内的文件的每个文件都将被改变以反映该升级。如果对企业应用服务器的升级保存为不同文件名,则文件结构700可以维持升级的企业应用服务器和原始企业应用服务器两者的完整拷贝。如果对企业应用服务器的升级不保存为不同文件名,则企业应用服务器的原始版本的文件将被替换并丢失。现在参考图8,根据例示实施例示出示意地图示企业应用服务器文件系统结构的方框图。文件结构800是企业应用服务器的文件系统结构的组织,以便可以在企业应用服务器主目录中保持运行时刻文件的基本版本和多个其他完整安装。文件结构800是包含诸如图6的简档6M和增量文件626-630的简档和增量文件的文件系统的示意表示。文件结构800包括主目录802。当企业应用服务器是WebSphere 应用服务器时, 主目录 802 可以是例如(但不限于)\WebSphere\AppServer WAS_H0ME 目录。Websphere 是国际商业机器公司的注册商标。
主目录802初始地包含版本子目录804。对于安装的企业应用服务器的每个补丁或软件升级,向主目录802添加新版本子目录。主目录802列出各种简档。各种简档中的每个包括企业应用服务器的其他文件,例如Java 目录806、库目录808、插件目录810和特性文件812。其他文件安装在WAS_H0ME\Version_base_6. 1. 0. 0级别处。当对企业应用服务器进行升级时,构建新的版本子目录814。例如,从版本 6. 1.0. 0升级到版本6. 1.0. 25,添加\Version_base_6. 1.0.0目录以包含运行时刻目录文件,诸如例如但不限于Java 目录816、库目录818、插件目录820和特性文件822,使得在文件系统内存储版本6. 1. 0. 0和版本6. 1. 0. 25两者。在一个示例实施例中,诸如例如但不限于Java 目录816、库目录818、插件目录 820和特性文件822的运行时刻目录文件是增量文件,诸如图6的增量文件624-6 之一。 诸如例如但不限于Java 目录816、库目录818、插件目录820和特性文件822的运行时刻目录文件是企业应用服务器从先前的Java 目录806、库目录808、插件目录810和特性文件812的改变。当向企业应用服务器应用修复包、补丁或升级时,修复包、补丁或升级可以是"里程碑式升级"或"非里程碑式"升级。如果选择"里程碑式"升级,构建包含升级文件组的新的\version_delta_6. 1. 0. 25。例如,为了从版本6. 1. 0. 0升级到版本6. 1. 0. 25,版本 6. 1.0.0的运行时刻目录文件的增量文件,例如Java 目录816、库目录818、插件目录820 和特性文件822将被存储在新版本子目录814中。非里程碑式安装是包含企业应用服务器的所有文件和目录的完整版本级别的完整安装。在非里程碑式安装中,将整个企业应用服务器系统升级到较新的版本。相反,里程碑式安装是取决于一个或多个其他安装目录的版本级别的部分安装,且大概是至少一个完整的基本简档/安装目录。在里程碑式安装中,保存旧的和新的文件版本。新文件版本被存储作为增量文件、诸如图6的增量文件6沈-630之一。如果选择"非里程碑式"升级,当发生升级时,运行时刻目录文件被简单地重写从而在文件结构中仅存在升级的版本。当启动诸如图6的应用服务器612-616之一的应用服务器时,用适当的简档来启动Java 虚拟机实例。构建虚拟机实例的类路径,该类路径首先包含来自version delta_6. 1. 0. 25的文件、然后是来自version_delta_6. 1. 0. 0.的文件。如果需要的话,一些状态数据文件,例如在特性子目录中的那些可以整体被复制,使得它们是一致的。可以结合特定增量文件来开始具体简档。用基本简档,或可能的用另一增量文件,来回填企业应用服务器运行时刻。以此方式,保存了在企业应用服务器的先前版本上以及在后的版本上运行简档的能力,而不必完整地复制所有文件。图9是示意地图示根据例示实施例的企业应用服务器升级、补丁或修复包的安装的方框图。处理900是在诸如图6的简档管理器634的软件组件上执行的软件处理。处理900通过启动用于安装升级的版本的安装器而开始(步骤902)。确定升级是否是里程碑式升级(步骤904)。响应于确定该升级是里程碑式升级(步骤904中的是), 安装该升级,同时维持由该升级更新的所有先前版本的文件(步骤906)。响应于确定该升级不是里程碑式升级(步骤904中的”否”输出),安装该升级,以便通过用升级版本的文件来替换先前版本的文件来升级WAS的整个系统(步骤908)。图10是示意地图示根据例示实施例的由运行时刻环境选择系统版本的方法的流程图。处理1000是软件方法,在诸如图6的简档管理器634的软件处理上执行。处理1000 假设在簇中的每个节点已安装了相同更新安装器包,且以一致的方式安装了那些包。因此, 如果现有的简档工具被增强以更新在简档和运行时刻之间的关联,且使用节点代理向所有节点推出,则可以容易地进行该关联。例如在简档\AppSrv01\config\cells\cellName\ nodes\nodeName\runtime version, xml 巾白勺f 牛^1 弓I入处理1000通过启动该简档而开始(步骤100 。处理1000使得用户接口能够在特定版本级别处设置在简档和运行时刻服务器实例之间的关联(步骤1004)。处理1000标识应该使用企业应用服务器的哪个版本来满足请求(步骤1006)。处理1000基于诸如图6的简档标识符636的简档标识符来进行标识。构造包含来自所选版本的文件的类路径,并用来自先前版本的任何需要文件来回填它(步骤1008)。例如,由简档标识符指示版本6. 1. 0. 25。然后,使用版本-基本-6. 1. 0. 0用未包含在版本6. 1. 0. 25 中的任意需要文件来回填版本6. 1. 0. 25。启动所需的版本(步骤1010),然后该处理终止。因此例示实施例提供用于构建系统的运行时刻环境的计算机实现的方法、有形存储介质和数据处理系统。简档管理器接收包含简档标识符的服务请求。简档标识符指定至少一个软件组件的所需版本。简档管理器标识软件组件的完整安装和至少一个增量文件。简档管理器通过优选地利用来自至少一个增量文件的文件、然后利用来自完整安装的文件,来动态地构造所需版本的类路径。然后,利用类路径来构建运行时刻环境。例示实施例提供应用/简档在运行时刻期间选择运行时刻环境版本的计算机实现的方法、系统和计算机程序产品。根据例示实施例,企业应用服务器修复包升级类似于虚拟安装的功能,且不整体升级企业应用服务器版本。相反,在升级之后在系统中应该存在当前版本和新的版本两者,以便在应用启动或简档启动阶段期间可以选择任一版本。根据另一例示实施例,包括基本版本和升级的版本的不同运行时刻版本被保持在系统中,且基于运行时刻选择而动态地被加载。可以通过简档管理器工具,或通过编辑在简档的顶部处的某一部署描述符,来进行简档与运行时刻环境的匹配。在节点簇的每个节点上的对应简档可能需要匹配在簇的每个节点上的对应的运行时刻版本。附图中的流程图和框示了根据本发明各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这一点上,所述流程图或框图中的每个块可以代表包括用于实现指定逻辑功能的一个或多个可执行指令的模块、片段或部分代码。还应当注意在某些替换实现中,在块中标注的功能可以不按照图中标注的顺序进行。例如,连续示出的两个块实际上可以基本上同时执行,或者根据所涉及的功能,所述块有时候可以按照相反的顺序执行。还将注意,所述框图和/或流程图示的每个块、以及所述框图和/或流程图示中的块的组合可以通过执行指定的功能或动作的基于专用硬件的系统、或者专用硬件和计算机指令的组合来实现。在这里使用的术语仅仅是为了描述特定实施例的目的,并且并非意图限制本发明。如在这里使用的,单数形式“一”意图是也包括复数形式,除非上下文明确指出其它情形。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组的存在或附加。下面的权利要求中的对应结构、材料、动作和所有部件或步骤加功能元素的等效物意图是包括与如具体要求保护的其它要求保护的元素组合而执行所述功能的任何结构、 材料或动作。对本发明的描述被提供用于说明和描述的目的,而并非意图穷尽性的或者以所公开的形式限制于本发明。很多修改和变化对于本领域普通技术人员来说将是显而易见的,而不背离本发明的范围和精神。选择和描述所述实施例,以便最佳地解释本发明的原理和实际应用,并且使得本领域其他普通技术人员能够对于适合于所构想的特定用途的具有各种修改的各种实施例而理解本发明。本发明可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在优选实施例中,本发明以软件实现,其包括但不限于固件、驻留软件、微代码等。另外,本发明可以采取可从提供程序代码用于由或结合计算机或任何指令执行系统使用的计算机可用或计算机可读介质存取的计算机程序产品的形式。为了描述的目的, 计算机可用或计算机可读介质可以是可以包含、存储、通信、传播或传输由或结合指令执行系统、装置或设备使用的程序的任意有形装置。介质可以是电、磁、光、电磁、红外或半导体系统(装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移除计算机碟、随机存取存储器 (RAM)、只读存储器(ROM)、固态磁盘和光盘。光盘的当前例子包括紧致盘-只读存储器 (CD-ROM)、紧致盘-读 / 写(CD-R/W)和 DVD。适用于存储和/或执行程序代码的数据处理系统将包括直接或通过系统总线而间接耦合于存储器元件的至少一个处理器。存储器元件可以包括在实际执行程序代码期间使用的本地存储器、大容量存储器和提供至少一些程序代码的临时存储以便在执行期间减少必须从大容量存储器提取代码的次数的高速缓存存储器。输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接耦合于该系统,或通过中间的I/O控制器而耦合于该系统。网络适配器还可以耦合于该系统以使得数据处理系统能够变得通过中间的私人或公共网络而耦合于其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是当前可用的网络适配器类型中的一些。已经为了图示和描述的目的而呈现了本发明的描述,但不意图穷举或将本发明限制为所公开的形式。许多修改和改变对于本领域技术人员将是显然的。选择并描述实施例以便最佳地说明本发明的原理和实际的应用,以从而使得本领域其他技术人员能够理解本发明的具有适合于所构思的特定用途的各种修改的各个实施例。
权利要求
1.一种用于构建系统的运行时刻环境的计算机实现的方法,该方法包括通过处理器接收包含简档标识符的服务请求,其中,所述简档标识符指定至少一个软件组件的所需版本;通过处理器标识软件组件的完整安装和至少一个增量文件;通过处理器,通过优选地利用来自至少一个增量文件的文件、然后利用来自完整安装的文件,来构造所需版本的类路径;以及通过处理器来构建利用类路径的运行时刻环境。
2.根据权利要求1的方法,其中,至少一个增量文件进一步包括第一增量文件和第二增量文件,其中,所述第一增量文件是对完整安装的较早更新,且其中,所述第二增量文件是对完整安装的随后更新,其中,通过优选地利用来自至少一个增量文件的文件、然后利用来自完整安装的文件来动态地构造所需版本的类路径的步骤还包括通过处理器应用在第二增量文件中的文件和目录;通过处理器,响应于应用在第二增量文件中的文件和目录,应用在第一增量文件中的文件和目录;以及响应于应用在第一增量文件中的文件和目录,通过处理器应用在完整安装中的文件和目录。
3.根据权利要求1的方法,其中,所述运行时刻环境包括系统中的多个运行时刻环境之一,在面向对象程序虚拟机的分离实例中实现每个运行时刻环境。
4.根据权利要求3的方法,其中,多个运行时刻环境之一使用至少一个增量文件中的不同文件,以便多个运行时刻环境中的运行时刻环境具有其自己的配置文件、日志和特性。
5.根据权利要求1的方法,其中,运行时刻环境包括面向对象的程序代码运行时刻环境,并且其中,通过逻辑地将多个面向对象的程序代码软件组件中的任意软件组件与在所需的版本的用户简档中指定的面向对象的程序代码类重叠来指定类路径,并且其中,在服务请求中的简档标识符指定所需的面向对象的程序代码类版本。
6.根据权利要求1的方法,其中,所述简档标识符指定用于逻辑地重叠软件组件的完整安装和至少一个增量文件的安排层次。
7.根据权利要求1的方法,其中,软件组件的完整安装是企业应用服务器的完整安装。
8.一种用于升级软件组件的计算机实现的方法,该方法包括通过处理器来接收软件组件的升级;响应于接收软件组件的升级,通过处理器来标识该升级是里程碑式升级还是非里程碑式升级;响应于标识该升级是非里程碑式升级,通过处理器用非里程碑式升级的新文件和目录来替换软件组件的文件和目录;以及响应于标识该升级是里程碑式升级,通过处理器来安装包括非里程碑式升级的新文件和目录的里程碑式升级,并维持软件组件的文件和目录的先前版本,包括由非里程碑式升级的新文件和目录替换的文件和目录。
9.根据权利要求8的方法,其中,所述里程碑式更新被存储为增量文件,其中,所述增量文件是软件补丁或更新,其包含要对软件组件颁布的至少一个改变。
10.根据权利要求8的方法,还包括通过处理器接收包含简档标识符的服务请求,其中,所述简档标识符指定软件组件的所需版本;通过处理器,通过优选地利用来自增量文件的文件、然后利用来自软件组件的完整安装的文件,来构造所需版本的类路径;以及通过处理器利用类路径来构建软件组件的运行时刻环境。
11.根据权利要求10的方法,其中,所述软件组件是企业应用服务器。
12.—种计算机程序,包括程序代码,可存储在计算机可记录存储介质上,该程序代码在由处理器执行时进行权利要求1到11中的任一的步骤。
13.一种数据处理系统,包括存储单元,具有用于构建在其上编码的系统的运行时刻环境的指令; 总线系统,将所述存储单元连接到处理器;以及处理器,其中,所述处理器执行指令以进行权利要求1到11的任一个的步骤。
全文摘要
一种构建系统的运行时刻环境的计算机实现的方法、有形存储介质和数据处理系统。简档管理器接收包含简档标识符的服务请求。简档标识符指定至少一个软件组件的所需版本。简档管理器标识软件组件的完整安装和至少一个增量文件。简档管理器通过优选地利用来自至少一个增量文件的文件、然后利用来自完整安装的文件,来动态地构造所需版本的类路径。然后,利用类路径来构建运行时刻环境。
文档编号G06F9/445GK102422266SQ201080020706
公开日2012年4月18日 申请日期2010年5月11日 优先权日2009年5月13日
发明者D.尚穆加姆, P.D.加拉加里, S.布罗萨德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1