当前位置: 首页 > 专利查询>SAP股份公司专利>正文

运行时系统的鲁棒共享技术方案

技术编号:2841211 阅读:180 留言:0更新日期:2012-04-11 18:40
用于以可扩展的方式在运行时系统中共享对象并在用户会话之间提供隔离的方法和装置,包括计算机系统和程序产品。相应于用户会话的用户上下文被存储在共享存储器区域中。在接收到相应于用户会话的请求时,从操作系统进程的集合中选择进程,并从运行时系统的集合中选择运行时系统。所述运行时系统被绑定到所述进程,并且,所述用户上下文被与所述运行时系统相关联,以便处理所述请求。在某些实施方案中,共享用户上下文使得虚拟机能够被以共享但是隔离的方式使用。每一个用户上下文均可以被排它地与来自固定的虚拟机集合的可用虚拟机相关联,并且每一个虚拟机均可以在来自固定的进程集合的可用进程中被排它地执行。

【技术实现步骤摘要】
【国外来华专利技术】
本申请涉及数据处理。
技术介绍
某些服务器,例如企业服务器或者其他的大型服务器,一般可以被刻画为请求处理引擎,因为它们处理大量通常较小的用户请求,这些用户请求属于用户会话。处理请求通常涉及在服务器上执行的运行时系统(例如Java虚拟机)中运行用户代码(例如Java服务器小程序(servlet)或企业Java Bean)。在这种服务器中的可扩展性(scalability)传统上是通过使用线程来实现的——例如使用多线程虚拟机(virtual machine,VM)来处理相应于许多个用户会话的请求。但是系统鲁棒性要求用户会话之间有很强的隔离,当大量用户会话运行于单个VM中时,这可能很难实现。操作系统能够为进程提供近乎完美的隔离。在某些操作系统中,崩溃的进程(crashed process)将不会影响其他的进程,并且将不泄漏或遗留被分配的资源。在概念上,有可能通过为每一个用户会话分配一个操作系统(OS)进程并在所分配的进程内为该用户会话运行VM来隔离用户会话,并从而提高服务器的鲁棒性。但是,在某些情形下(例如在存在大量用户会话的情形下),由于在相应大量的进程之间切换将导致的OS调度开销以及由于这种方法将消耗的资源所致,这种方法可能并不实用。OS进程一般未被设计成像用户会话那样细致地对实体建模。
技术实现思路
本专利技术提供了方法和装置,包括计算机程序产品,它们实施了用于共享数据并在用户会话之间提供隔离的技术。在一个总体方面,这些技术的特征是一种计算机程序产品,所述计算机程序产品可运行,以便使得数据处理装置接收第一数据对象的标识,该第一数据对象是第一运行时类的实例;确定所述第一运行时类是否可共享;以及,确定所述第一数据对象是否引用一个或更多个被引用的数据对象。如果所述第一数据对象确实引用了一个或更多个被引用的数据对象,则所述计算机程序产品还可运行,以便使得所述数据处理装置遍历所述一个或更多个被引用的数据对象,并且针对每一个被遍历的数据对象,确定所述被遍历的数据对象是其实例的运行时类是否可共享。有益的实施方案可能包括下列特征中的一个或更多个。遍历所述一个或更多个被引用的数据对象可以包括递归地遍历所述一个或更多个被引用的数据对象的传递闭包(transitive closure)中的每一个数据对象。如果所述第一运行时类可共享,并且每一个被遍历的数据对象的运行时类均可共享,则所述第一数据对象和每一个被遍历的数据对象均能够被分组到一个对象组中,并且所述对象组可以被复制到共享存储器区域中。如果第一运行时类不可共享,或者如果至少一个被遍历的数据对象的运行时类不可共享,则可以产生否定状态指示。确定所述第一运行时类是否可共享可以包括确定所述第一运行时类先前是否已被声明为可共享。所述第一运行时类可以从一个或更多个基类被派生,并且可以包括一个或更多个域。确定所述第一运行时类是否可共享可以包括确定所述第一运行时类是否实施了串行化接口;确定在所述第一运行时类的对象实例的串行化或者解串行化期间是否执行了定制代码(custom code);确定是否所有基类都是可串行化的;确定是否所有域都被串行化;以及,确定第一运行时类的对象实例是否影响垃圾回收。所述第一运行时类可以是Java类,并且串行化接口可以是java.io.Serializable。确定是否执行了定制代码可以包括确定第一运行时类是否包括预先确定的方法集合中的一种方法。预先确定的方法集合可以包括readObject()、wirteObject()、readExternal()、writeExternal()、readResolve()和writeReplace()方法。确定是否所有基类都可串行化可以包括确定基类中的每一个类是否均实施了串行化接口,并且,如果基类中的类未实施串行化接口,则确定该类是否包括平凡缺省构造器(trivial default constructor)。确定是否所有域都被串行化可以包括确定是否任一个域均为瞬态域。确定所有域是否都被串行化还可以包括确定是否任一个域均是serialPersisitentFields域。确定第一运行时类的对象实例是否影响垃圾回收可以包括确定第一运行时类是否包含平凡终结器(trivial finalizer)。在第一运行时类是Java类的情况下,确定第一运行时类的对象实例是否影响垃圾回收还可以包括确定第一运行时类是否被从java.lang.ref.Reference类派生。确定第一运行时类是否可共享还可以包括确定第一运行时类的运行时表示是否可共享,和确定第一运行时类的类加载器是否可共享。确定第一运行时类的运行时表示是否可共享可以包括确定所述运行时表示是否被存储在第一预先确定的位置。确定第一运行时类的类加载器是否可共享可以包括确定所述类加载器是否被存储在第二预先确定的位置。在另一个方面,这些技术的特征是一种计算机程序产品,所述计算机程序产品可运行,以便使得数据处理装置接收第一运行时系统中的第一数据对象的标识,所述第一数据对象引用零个或更多个被引用的数据对象;标识由第一数据对象和被引用的数据对象的传递闭包组成的数据对象共享闭包;以及,确定数据对象的所述共享闭包是否可在第二运行时系统中使用。有益的实施方案可以包括下列特征中的一个或更多个。第一和第二运行时系统可以是虚拟机,包括Java虚拟机或者公共语言运行时虚拟机。数据对象的共享闭包可以包括用户上下文信息。确定共享闭包是否可在第二运行时系统中使用可以包括确定数据对象的共享闭包中的每一个数据对象是否均是无需执行定制代码就可串行化的。确定共享闭包是否可在第二运行时系统中使用可以包括确定所述共享闭包中的每一个数据对象的运行时类是否是可共享的。每一个数据对象均是其实例的运行时类可以被从一个或更多个基类派生,并且可以具有一个或更多个域,并且确定运行时类是否可共享可以包括确定所述运行时类是否实施了串行化接口;确定在所述运行时类的对象实例的串行化或者解串行化期间是否执行了定制代码;确定是否所有基类都是可串行化的;确定是否所有域都被串行化;以及,确定所述运行时类的对象实例是否影响垃圾回收。如果数据对象的共享闭包不可在第二运行时系统中使用,则可以产生否定状态指示。数据对象的共享闭包可以被复制到共享存储器区域。所述计算机程序产品还可运行,以便使得数据处理装置确定在共享存储器区域中是否存在数据对象的共享闭包的先前版本,并将版本号和数据对象的共享闭包相关联。在又一个方面,这些技术的特征是一种计算机程序产品,所述计算机程序产品可运行,以便使得数据处理装置接收标识符、标识与所述标识符相关联的共享闭包、以及将所述共享闭包与运行时系统相关联。所述共享闭包被置于共享存储器区域中,并由第一数据对象和被所述第一数据对象引用的数据对象的传递闭包组成。有益的实施方案可以包括下列特征中的一个或更多个。所述运行时系统可以是Java虚拟机或者公共语言运行时虚拟机。标识共享闭包可以包括标识所述共享闭包的当前版本。通过将所述共享闭包映射或者复制到与所述运行时系统相关联的地址空间,可以将所述共享闭包与所述运行时系统相关联。在所述共享闭包被映射到和所述运行时系统相关联的地址空间中的情况下,将所述共享闭包与所述运行时系统相关联还可以包括防止对所本文档来自技高网...

【技术保护点】
一种计算机程序产品,存储在机器可读介质上,所述计算机程序产品可运行,以便使得数据处理装置:为用户会话初始化运行时系统;在共享存储器区域中创建数据对象的共享闭包,数据对象的所述共享闭包由第一数据对象和一个或更多个被引用的数据对象的传递闭包组成,每一个被引用的数据对象均被所述第一数据对象引用;接收相应于所述用户会话的请求;从操作系统进程的集合中选择第一进程;将所述运行时系统绑定到所述第一进程;以及将数据对象的所述共享闭包与所述运行时系统相关联。

【技术特征摘要】
【国外来华专利技术】US 2004-5-20 10/851,7941.一种计算机程序产品,存储在机器可读介质上,所述计算机程序产品可运行,以便使得数据处理装置为用户会话初始化运行时系统;在共享存储器区域中创建数据对象的共享闭包,数据对象的所述共享闭包由第一数据对象和一个或更多个被引用的数据对象的传递闭包组成,每一个被引用的数据对象均被所述第一数据对象引用;接收相应于所述用户会话的请求;从操作系统进程的集合中选择第一进程;将所述运行时系统绑定到所述第一进程;以及将数据对象的所述共享闭包与所述运行时系统相关联。2.如权利要求1所述的计算机程序产品,其中,所述运行时系统包含虚拟机。3.如权利要求2所述的计算机程序产品,其中,所述虚拟机是Java虚拟机或公共语言运行时虚拟机。4.如权利要求1到3中的任何一个所述的计算机程序产品,其中,数据对象的所述共享闭包包括相应于所述用户会话的用户上下文信息。5.如权利要求1到4中的任何一个所述的计算机程序产品,其中,将所述共享闭包与所述运行时系统相关联包含将所述共享闭包绑定到所述第一进程。6.如权利要求5所述的计算机程序产品,其中,将所述共享闭包绑定到所述第一进程包含将所述共享闭包映射到所述第一进程的地址空间中。7.如权利要求5或6所述的计算机程序产品,其中,绑定所述共享闭包包含防止对所述共享闭包的写访问。8.如权利要求6或权利要求6和7所述的计算机程序产品,其中,所述计算机程序产品还可运行,以便使得所述数据处理装置在检测到对所述共享闭包中的所述数据对象之一的首次写访问时,将所述共享闭包复制到所述第一进程的地址空间中。9.如权利要求5到8中的任何一个所述的计算机程序产品,其中,将所述共享闭包绑定到所述第一进程包含将所述共享闭包复制到所述第一进程的地址空间中。10.如前面的权利要求中的任何一个所述的计算机程序产品,其中,所述指令还可运行,以便使得所述数据处理装置为第二用户会话初始化第二运行时系统;接收相应于所述第二用户会话的第二请求;从所述操作系统进程的集合中选择第二进程;将所述第二运行时系统绑定到所述第二进程;以及将数据对象的所述共享闭包与所述第二运行时系统相关联。11.一种计算机程序产品,存储在机器可读介质上,所述计算机程序产品可运行,以便使得数据处理装置将相应于用户会话的用户上下文存储在共享存储器区域中;接收相应于所述用户会话的请求;从操作系统进程的集合中选择进程,该进程包含地址空间;从运行时系统的集合中选择运行时系统;将所述运行时系统绑定到所述进程;以及将所述用户上下文与所述运行时系统相关联。12.如权利要求11所述的计算机程序产品,其中,所述运行时系统的集合中的每一个运行时系统均包含虚拟机。13.如权利要求12所述的计算机程序产品,其中,所述虚拟机是Java虚拟机或公共语言运行时虚拟机。14.如权利要求11到13中的任何一个所述的计算机程序产品,其中,所述用户上下文包含共享闭包,所述共享闭包由第一数据对象和被所述第一数据对象引用的数据对象的传递闭包组成。15.如权利要求11到14中的任何一个所述的计算机程序产品,其中,所述运行时系统被存储在共享存储器区域中,并且其中,将所述运行时系统绑定到所述进程包含将所述共享存储器区域的相应于所述运行时系统的部分映射到所述进程的地址空间中。16.如权利要求11到15中的任何一个所述的计算机程序产品,其中,将所述用户上下文与所述运行时系统相关联包含将所述用户上下文绑定到所述进程。17.如权利要求16所述的计算机程序产品,其中,将所述用户上下文绑定到所述进程包含将所述用户上下文映射到所述进程的地址空间中。18.如权利要求11到17中的任何一个所述的计算机程序产品,其中,所述计算机程序产品还可运行,以便使得所述数据处理装置在检测到对所述用户上下文的首次写访问时,将所述用户上下文复制到所述进程的地址空间中。19.如权利要求11到18中的任何一个和权利要求16所述的计算机程序产品,其中,将所述用户上下文绑定到所述进程包含将所述用户上下文复制到所述进程的地址空间中。20.如权利要求11到19中的任何一个和权利要求16所述的计算机程序产品,其中,所述指令还可运行,以便使得所述数据处理装置将所述用户上下文从所述进程解除绑定。21.如权利要求20所述的计算机程序产品,其中,将所述用户上下文从所述进程解除绑定包含将所述用户上下文复制到所述共享存储器区域。22.如权利要求20或21所述的计算机程序产品,其中,将所述用户上下文从所述进程解除绑定包含确定在所述共享存储器区域中是否存在所述用户上下文的先前版本;和如果在所述共享存储器区域中存在所述用户上下文的先前版本,则在所述共享存储器区域中创建所述用户上下文的新版本。23.如权利要求11到22中的任何一个和权利要求16所述的计算机程序产品,其中,所述指令还可运行,以便使得所述数据处理装置在检测到所述进程被阻塞时将所述运行时系统从所述进程解除绑定;以及将所述用户上下文从所述进程解除绑定。24.如权利要求23所述的计算机程序产品,其中,检测所述进程被阻...

【专利技术属性】
技术研发人员:奥利弗施米特诺伯特库克埃德加洛特马丁斯特拉斯伯格阿尔诺希尔根伯格拉尔夫施梅尔特
申请(专利权)人:SAP股份公司
类型:发明
国别省市:DE[德国]

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

1