用于在多租户应用服务器环境中提供工作管理器的系统和方法与流程

文档序号:12287813阅读:202来源:国知局
用于在多租户应用服务器环境中提供工作管理器的系统和方法与流程

本专利文档的公开内容的一部分包含受版权保护的材料。版权所有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现的那样进行传真复制,但是除此之外在任何情况下都保留所有版权。

技术领域

本发明的实施例一般地涉及应用服务器和云平台环境,并且具体涉及用于提供用在多租户应用服务器环境中的工作管理器的系统和方法。



背景技术:

软件应用服务器(其示例包括Oracle WebLogic Server(WLS)与Glassfish)通常提供用于运行企业软件应用的受管理的环境。近来,允许用户或者租户在云环境内开发和运行它们的应用以及利用由环境提供的分布式资源的技术也已经被研发,以用在云环境中。



技术实现要素:

根据实施例,本文描述了用于提供用在应用服务器环境中的工作管理器的系统和方法。根据实施例,系统管理员可以配置分区工作管理器以向多租户应用服务器环境内的每个分区提供分区工作请求优先级排序(公允份额值(fair share value))。系统管理员可以附加地将分区工作管理器配置为施加最小线程约束限制、分区容量约束、和/或分区最大线程约束,其中所有都制约环境内的分区对线程资源的使用。

附图说明

图1示出了根据实施例的用于在应用服务器、云或者其他环境中支持多租赁的系统。

图2进一步示出了根据实施例的用于在应用服务器、云或者其他环境中支持多租赁的系统。

图3进一步示出了根据实施例的用于在应用服务器、云或者其他环境中支持多租赁的系统。

图4示出了根据实施例的用于示例性多租户环境的域配置。

图5进一步示出了根据实施例的示例性多租户环境。

图6示出了根据实施例的在多租户应用服务器环境中分区工作管理器的使用。

图7示出了根据实施例的在多租户应用服务器环境中分区工作管理器的使用。

图8是用于提供用在多租户应用服务器环境中的工作管理器的示例性方法的流程图。

图9是用于提供用在多租户应用服务器环境中的工作管理器的示例性方法的流程图。

具体实施方式

根据实施例,本文描述了用于提供用在应用服务器环境中的工作管理器的系统和方法。根据实施例,系统管理员可以配置分区工作管理器以向多租户应用服务器环境内的每个分区提供分区工作请求优先级排序(公允份额值)。系统管理员可以附加地将分区工作管理器配置为施加最小线程约束限制、分区容量约束、和/或分区最大线程约束,其中所有都制约环境内的分区对线程资源的使用。

应用服务器(例如,多租户(MT))环境

图1示出了根据实施例的用于在应用服务器、云或者其他环境中支持多租赁的系统。

如图1中所示,根据实施例,应用服务器(例如多租户(MT))环境100或者启用软件应用的部署和执行的其他计算环境可以被配置为包括在运行时被用来定义应用服务器域的域102的配置以及根据域102的配置来操作。

根据实施例,应用服务器可以包括被定义用于在运行时使用的一个或更多分区104。每个分区可以与全局唯一的分区标识符(ID)以及分区配置关联,并且可以进一步包括一个或更多资源组124连同对资源组模板的引用126,和/或分区特定(partition-specific)的应用或资源128。域级别的资源组、应用和/或资源140也可以在域级别上被定义,可选地具有对资源组模板的引用。

每个资源组模板160可以定义一个或更多应用A 162、B 164、资源A 166、B 168和/或其他可部署应用或资源170,并且可以被资源组引用。例如,如图1中所示,分区104中的资源组124可以引用(190)资源组模板160。

通常,系统管理员可以定义分区、域级别的资源组和资源组模板,以及安全性领域;而分区管理员可以定义其自己分区的方面,例如通过创建分区级别资源组、部署应用到该分区、或者引用用于该分区的特定的领域。

图2进一步示出了根据实施例的用于在应用服务器、云或者其他环境中支持多租赁的系统。

如图2中所示,根据实施例,分区202可以包括:例如,包括对资源组模板210的引用206的资源组205,虚拟目标(例如虚拟主机)信息207,以及可插拔的数据库(PDB)信息208。资源组模板(例如210)可以定义例如多个应用A 211和B 212,以及诸如Java Message Server(JMS)服务器213、存储并转发(SAF)代理215、邮件会话组件216或者Java Database Connectivity(JDBC)资源217之类的资源。

图2中示出的资源组模板是以示例的方式提供的;根据其他实施例,可以提供不同类型的资源组模板和元素。

根据实施例,当分区(例如202)内的资源组引用(220)具体资源组模板(例如210)时,与具体分区关联的信息可以结合被引用的资源组模板使用,以指示分区特定的信息230,例如分区特定的PDB信息。分区特定的信息可以随后被应用服务器使用以配置资源(例如PDB资源)用于被该分区使用。例如,与分区202关联的分区特定的PDB信息可以被应用服务器使用来配置(232)具有适当的PDB 238的容器数据库(CDB)236以被该分区使用。

类似地,根据实施例,与具体分区关联的虚拟目标信息可以被用来定义(239)分区特定的虚拟目标240(例如,baylandurgentcare.com)以被该分区使用,该虚拟目标240随后可以被置为可以经由统一资源定位符(URL)访问,例如http://baylandurgentcare.com

图3进一步示出了根据实施例的用于在应用服务器、云或者其他环境中支持多租赁的系统。

根据实施例,诸如config.xml配置文件的系统配置被用于定义分区,该系统配置包括用于与该分区关联的资源组的配置元素和/或其他分区特性。可以使用特性名/值对来每个分区地指定值。

根据实施例,在受管理的服务器/集群242或者类似的环境内可以执行多个分区,该多个分区可以提供对CDB 243的访问并可以经由网络层244访问。这允许例如域或分区与(CDB中的)PDB中的一个或更多个关联。

根据实施例,多个分区中的每个分区(在此示例中是分区A 250和分区B 260)可以被配置为包括与该分区关联的多个资源。例如,分区A可以被配置为包括资源组251,资源组251包含应用A1 252、应用A2 254和JMS A 256,以及与PDB A 259关联的数据源A 257,其中分区可经由虚拟目标A 258访问。类似地,分区B 260可以被配置为包括资源组261,资源组261包含应用B1 262、应用B2 264和JMS B 266,以及与PDB B 269关联的数据源B 267,其中分区可经由虚拟目标B 268访问。

尽管上述示例中的一些示出了CDB和PDB的使用,但根据其他实施例,其他类型的多租户数据库或者非多租户数据库也能够被支持,其中可以例如通过模式的使用或者不同数据库的使用来为每个分区提供具体配置。

资源

根据实施例,资源是可以被部署到环境的域的系统资源、应用或者其他资源或对象。例如,根据实施例,资源可以是可以被部署到服务器、集群或者其他应用服务器目标的应用、JMS、JDBC、JavaMail、WLDF、数据源、或者其他系统资源或其他类型的对象。

分区

根据实施例,分区是可以与分区标识符(ID)及配置关联的、并且可以包含应用和/或通过资源组和资源组模板的使用来引用(refer to)域范围的资源的、域的运行时和监管性细分或片段。

通常,分区可以包含它自己的应用、经由资源组模板引用域范围的应用、以及具有它自己的配置。可分区的实体可以包括例如JMS、JDBC、JavaMail、WLDF资源的资源,和诸如JNDI命名空间、网络流量、工作管理器的其他部件,以及安全性策略和领域。在多租户环境的上下文中,系统可以被配置为向租户提供对与租户关联的分区的监管性和运行时方面的访问。

根据实施例,分区内的每个资源组可以可选地引用资源组模板。分区可以具有多个资源组,并且它们中的每一个可以引用资源组模板。每个分区可以定义用于在该分区的资源组所引用的资源组模板中未指定的配置数据的特性。这使得分区能够充当在资源组模板中定义的可部署资源到用于该分区的特定的值的绑定。在一些情况下,分区可以超越由资源组模板指定的配置信息。

根据实施例,分区配置(如例如通过config.xml配置文件定义的)可以包括多个配置元素,例如:“分区”,包含定义分区的属性和子元素;“资源组”,包含部署到分区的应用和资源;“资源组模板”,包含由该模板定义的应用和资源;“JDBC系统资源超越”,包含数据库特定的服务名、用户名以及密码;以及“分区特性”,包含可以被用于资源组模板中的宏替换的特性键值。

在启动时,系统可以使用由配置文件提供的信息以为来自资源组模板的每个资源生成分区特定的配置元素。

资源组

根据实施例,资源组是可部署资源的已命名的、完全限定的集合,资源组可以被在或者域级别或者分区级别上定义,并且可以引用资源组模板。资源组中的资源被认为是完全限定的,因为管理员已经提供了启动或者连接到那些资源的全部信息,例如用于连接到数据源的凭证、或者用于应用的定向信息。

系统管理员可以在域级别上或在分区级别上声明资源组。在域级别上,资源组提供了将相关资源分组的便利方式。系统可以与未组织的资源同样地管理域级别的资源组中的已声明的资源,使得资源可以在系统启动期间启动,并在系统关闭期间停止。管理员也可以分别地停止、启动或者移除组中的资源,并且可以通过对组操作而隐式地作用在组中的全部资源上。例如,停止资源组停止组中全部尚未停止的资源;启动资源组启动组中尚未启动的任意资源;而移除资源组移除组中包含的全部资源。

在分区级别上,受控于任意安全性制约,系统管理员或者分区管理员可以在分区中配置零个或者更多个资源组。例如,在SaaS使用情况下,各种分区级别的资源组可以引用域级别的资源组模板;而在PaaS使用情况下,可以创建不引用资源组模板而是表示要被置为只在该分区内可用的应用及其相关资源的、分区级别的资源组。

根据实施例,资源分组可以被用来将应用和它们使用的资源一起分组为域内有区别的监管性单元。例如,在以下描述的医疗记录(MedRec)应用中,资源分组定义MedRec应用及其资源。多个分区可以运行同一MedRec资源组,每个分区使用分区特定的配置信息,使得作为每个MedRec实例的一部分的应用被置为特定于每个分区。

资源组模板

根据实施例,资源组模板是可以从资源组被引用的、在域级别上定义的可部署资源的集合,并且激活其资源所要求的信息中的一些可以不作为模板本身的一部分而存储,使得它支持分区级别配置的指定。域可以包含任意数量的资源组模板,其中每个资源组模板可以包括例如一个或更多相关的Java应用以及那些应用所依赖的资源。关于这些资源的信息中的一些可以是跨全部分区相同的,而其他信息可以从一个分区到下一个分区变化。并非所有配置都需要在域级别上指定——代之以可以通过宏或者特性名/值对的使用在资源组模板中指定分区级别的配置。

根据实施例,具体资源组模板可以被一个或更多资源组引用。通常,在任意给定的分区内,在一个时刻资源组模板只可以被一个资源组引用,即它不能被同一分区内的多个资源组同时引用;然而,它可以在同一时刻被不同分区中的另一个资源组引用。包含资源组的对象(例如域或者分区)可以使用特性名/值分配来设置资源组模板中任意令牌的值。当系统使用引用资源组来激活资源组模板时,它可以使用在资源组的包含对象中设置的值来替换那些令牌。在一些情况下,系统也可以使用静态配置的资源组模板和分区来生成用于每个分区/模板组合的运行时配置。

例如,在SaaS使用情况下,系统可以多次激活同一应用和资源,包括为使用它们的每个分区激活一次。当管理员定义资源组模板时,它们可以使用令牌来表示将在其他地方被提供的信息。例如,要用在连接到CRM相关的数据源中的用户名在资源组模板中可以被指示为\${CRMDataUsername}。

租户

根据实施例,在诸如多租户(MT)应用服务器环境的多租户环境中,租户是能够被一个或更多分区和/或一个或更多感知租户的应用所表示的、或者以其他方式与之关联的实体。

例如,租户可以表示有区别的用户组织,诸如不同的外部公司,或者具体企业内不同的部门(例如,人事和财务部门),其中每一个用户组织可以与不同的分区关联。租户全局唯一身份(租户ID)是在具体时刻具体用户与具体租户的关联。系统可以例如通过参考用户身份存储器来从用户身份推知具体用户属于哪一个租户。用户身份使得系统能够实施用户被授权执行的那些动作,包括但不限于用户可以属于哪一个租户。

根据实施例,系统启用不同租户相互间的监管和运行时隔离。例如,租户可以配置其应用的一些行为,以及配置它们能够访问的资源。系统可以确保具体租户不能监管属于另一个租户的产物(artifact);并且可以确保在运行时代表具体租户工作的应用只引用与该租户关联的资源,而不引用与其他租户关联的资源。

根据实施例,不感知租户的应用是不包含显式地处理租户的逻辑的应用,使得无论什么用户提交了该应用正在响应的请求,应用所使用的任何资源都可以被访问。相反地,感知租户的应用包括显式地处理租户的逻辑。例如,基于用户的身份,应用可以推知用户所属的租户并且可以使用该信息来访问租户特定的资源。

根据实施例,系统使得用户能够部署被显式地写为感知租户以使得应用开发者可以获得当前租户的租户ID的应用。感知租户的应用于是可以使用租户ID来处置正在使用应用的单个实例的多个租户。

例如,支持单个医生的办公室或者医院的MedRec应用可以暴露于两个不同的分区或者租户(例如Bayland Urgent Care租户以及Valley Health租户),其中的每一个能够在不改变底层应用代码的情况下访问单独的租户特定的资源,诸如单独的PDB。

示例性域配置与多租户环境

根据实施例,应用可以被部署到在域级别上的资源组模板,或者被部署到受分区限制或受域限制的资源组。可以使用每应用或每分区地指定的部署计划来超越应用配置。部署计划也可以作为资源组的一部分被指定。

图4示出了根据实施例的用于示例性多租户环境的域配置。

根据实施例,当系统启动分区时,它根据所提供的配置创建虚拟目标(例如,虚拟主机)和到各自数据库实例的连接池,包括每个分区一个。

典型地,每个资源组模板可以包括一个或更多相关的应用以及那些应用所依赖的资源。每个分区可以通过提供资源组模板中的可部署资源到与该分区关联的特定值的绑定,来提供在它所引用的资源组模板中未指定的配置数据;在一些情况下,包括超越由资源组模板指定的某些配置信息。这使得系统能够使用每个分区已经定义的特性值来为每个分区不同地激活由资源组模板表示的应用。

在一些实例中,分区可以包含不引用资源组模板的、或者直接定义其自己的受分区限制的可部署资源的资源组。在分区内定义的应用和数据源通常只对该分区可用。可以部署资源,使得可以通过使用partition:<partitionName>/<resource JNDI name>或者domain:<resource JNDI name>来从跨分区访问它们。

例如,MedRec应用可以包括多个Java应用、数据源、JMS服务器以及邮件会话。为了为多个租户运行MedRec应用,系统管理员可以定义单个MedRec资源组模板286,同时在模板中声明那些可部署资源。

与域级别的可部署资源相比,在资源组模板中声明的可部署资源可能在模板中未完全配置或者不能原样激活,因为它们缺少一些配置信息。

例如,MedRec资源组模板可以声明由应用使用的数据源,但是它可能未指定用于连接到数据库的URL。与不同租户关联的分区,例如分区BUC-A 290(Bayland Urgent Care,BUC)和分区VH-A 292(Valley Health,VH),可以通过各自包括引用(296、297)MedRec资源组模板的MedRec资源组293、294来引用一个或更多资源组模板。该引用于是可以被用来为每个租户创建(302、306)虚拟目标/虚拟主机,包括与BUC-A分区关联的、用于被Bayland Urgent Care租户使用的虚拟主机baylandurgentcare.com 304;以及与VH-A分区关联的、用于被Valley Health租户使用的虚拟主机valleyhealth.com 308。

图5进一步示出了根据实施例的示例性多租户环境。如图5中所示,并且继续来自以上的示例(其中两个分区引用MedRec资源组模板),根据实施例,小服务程序(servlet)引擎310可以被用来支持多个租户环境,在此示例中是Bayland Urgent Care Physician租户环境320和Valley Health Physician租户环境330。

根据实施例,每个分区321、331可以定义不同的虚拟目标以在其上接受用于该租户环境的进入流量,并且可以定义用于连接到分区及其资源324、334(在本示例中分别包括或者Bayland Urgent Care数据库或者Valley Health数据库)的不同的URL 322、332。数据库实例可以使用兼容模式,因为同一应用代码将针对两种数据库执行。当系统启动分区时,它可以创建虚拟目标和到各自数据库实例的连接池。

工作管理器

如以上所述,根据实施例,分区是在以多租户模式运行应用服务器时为租户或多个租户创建的应用服务器(例如,WebLogic Server)域的片段。

根据实施例,调节分区间的线程使用以便是公允的,并且它们的相对优先级可以被系统管理员配置。根据实施例,工作管理器可被用于在运行于同一WLS实例中的分区间提供公允性和优先级排序。

根据实施例,工作管理器对由应用服务器自调整线程池提供的线程资源的相对线程使用进行调节,以在共享同一应用服务器实例(例如,多租户应用服务器环境)的各种分区之间提供恰当的服务质量(QoS)和公允性。没有它的情况下,来自一个分区和/或分区管理员的应用可能潜在地耗尽用于其他分区的线程资源,进而妨碍它们恰当地运作。

根据实施例,工作管理器可以将共享的线程资源分摊到各种分区所依照的公允性可以基于若干因素,诸如例如各种分区为服务支付的各种量、每个分区的重要性、以及每个分区对共享线程的需求。

分区工作管理器——每分区的相对线程资源使用

图6示出了根据实施例的在多租户应用服务器环境中分区工作管理器的使用。

图6中描绘的实施例显示了应用服务器环境600,应用服务器环境600包括分区工作管理器610以及域620。图6中的实施例附加地包括系统管理员630。分区工作管理器610包括分区A工作管理器615和分区B工作管理器616。域620包括分区A 640、分区B 650、虚拟目标A 660以及虚拟目标B 670。在分区A和分区B内分别是分区A线程使用645和分区B线程使用655。此外在分区A和分区B内分别定义了资源组646和资源组656。

根据实施例,在应用服务器环境600内,系统管理员630配置分区工作管理器610以调节每个分区对线程池(诸如WLS自调整线程池)的访问。系统管理员的工作管理器的配置调节线程资源的相对线程使用,以在共享同一应用服务器实例的各种分区之间提供恰当的QoS和公允性。例如,当配置分区工作管理器610时,通常有系统管理员可以使用的若干配置(或者分别地使用或者互相组合地使用),包括但不限于分区工作请求优先级排序(或者公允份额值)、分区最小线程约束、以及分区容量约束。

根据实施例,系统管理员630可以使用分区工作请求优先级排序或者公允份额值来配置分区工作管理器610。系统管理员630经由通信路径635在分区工作管理器610内指定用于在应用服务器环境600内配置的每个分区(例如分区A 640和分区B 650)的公允份额值。此公允份额值可以被包含在例如包含于分区工作管理器610内的分区特定的工作管理器内。公允份额值是该分区的线程使用对比于全部分区的线程使用的百分比。此外,由系统管理员630初始分配给分区的公允份额值可以被系统管理员630更新和/或编辑。

根据实施例,分配给分区的公允份额值是1与99之间的数。推荐域中运行的全部分区的这些值之和加起来为100。假如它们加起来不为100,应用服务器环境600可以基于不同分区的相对值给不同分区分配线程使用时间和线程队列位置。

例如,根据实施例,系统管理员630向分区A 640分配公允份额值20,并向分区B 650分配公允份额值30。这些公允份额值被分别记录在分区工作管理器610内的分区A工作管理器615和分区B工作管理器616中。在运行时,如果发生线程池中没有足够的线程资源来处置全部请求,并且有来自分区A和分区B的排队等待处理的待处理工作请求,则工作管理器将分派线程使用时间的40%给来自于分区A640中的应用的工作请求(和已排队的请求),并且分派线程使用时间的60%给来自于分区B 650中的应用的工作请求(和已排队的请求)。线程使用(例如,分区A线程使用645和分区B线程使用655)的此分派是系统管理员在分区工作管理器610内设置公允份额值的结果。

根据实施例,系统管理员630可以使用最小线程约束来配置分区工作管理器610。最小线程约束保证将被分派给每个分区或者分区内应用的、来自线程池的指定数量的线程,以避免死锁。

根据实施例,系统管理员630可以可选地在应用服务器环境600内的每个分区的最小线程约束值上设置限制。如果系统管理员630配置这样的限制,则这将在每个分区的最小线程约束值上施加上限。在分区中全部最小线程约束的配置值之和超出此配置值的情况下,可以记载警告消息,并且应用服务器环境600可以针对这些约束自动地减少线程池将分派的线程的数量。

例如,根据实施例,系统管理员630给分区A 640配置最小线程约束为5个线程。在部署到分区A的应用中存在2个被定义的最小线程约束;一个具有配置值3,而另一个具有配置值7。自调整线程池将只保证将给这2个最小线程约束分派5个线程而不是组合的配置值10。

在某些实施例中,当除应用服务器环境中每个分区具有公允份额值集合之外,还由系统管理员630在分区工作管理器610内配置有分区最小线程约束限制时,这将导致分区接收多于其公允份额的线程,因为分区最小线程约束可以压倒公允份额值。

根据实施例,系统管理员630使用分区共享容量来配置分区工作管理器610。分区共享容量在来自分区的工作请求的数量上设有限制。此限制可以包括或者正在运行或者正在排队并等待可用线程的工作请求。当超出所配置的限制时,应用服务器环境600可以拒绝从受限制的分区提交的更多请求。该限制的值可以被表达为应用服务器环境600的容量的百分比,诸如1%和100%之间。

例如,根据实施例,系统管理员可以设置分区A上的分区共享容量为50%。针对工作管理器配置,使用值65536配置应用程序服务器环境的共享容量。因为分区A上的分区共享容量,所以如果工作请求的数量超出32738(它是总容量65535的50%),则工作管理器将开始拒绝来自分区A的请求。

根据实施例,系统管理员630使用分区最大线程约束来配置分区工作管理器610。此约束可以限制在自调整线程池中同时工作于来自分区的请求上的线程的最大数量。这可以用于防止分区使用多于其公允份额的线程资源,尤其是在异常环境中,诸如当线程被阻塞在I/Q上等待来自未响应的远程服务器的响应时。在这种情景中设置最大线程约束将有助于确保一些线程可用于处理来自系统中其他分区的请求。

根据实施例,除给分区分配可用线程的公允份额值之外,公允份额值还可以在全部可用线程当前都在使用中时,将来自分区的请求在要被运行的优先级队列中排序。例如,系统管理员经由分区工作管理器为分区X分配公允份额值60、为分区Y分配公允份额值40。当分区在它们之间已经使用了源池中全部可用线程时,则来自分区的后续请求被放置在队列中。分配给分区X和分区Y的公允份额值可以确定在队列中来自分区X的请求相对于来自分区Y的请求将被放置的位置。在所示例的情况下,来自分区X的请求将被放置在队列中在来自分区Y的请求之前,因为分区X具有比分区Y高的公允份额值。

根据实施例,应用服务器环境600可以包括多租户应用服务器(MT)环境。

分区级别的工作管理器

图7示出了根据实施例的在多租户应用服务器环境中工作管理器的使用。

图7中描绘的实施例显示了应用服务器环境700,应用服务器环境700包括分区工作管理器790以及源域720。图7中的实施例附加地包括分区A管理员730、分区B管理员735、以及系统管理员780。分区工作管理器790包括分区A工作管理器795和分区B工作管理器796。源域720包括分区A 740、分区B 750、虚拟目标A 760和虚拟目标B 770。分区A 740包括工作管理器A 745和分区A线程使用746。分区B 760包括工作管理器B 755和分区B线程使用756。

在实施例中,类似于系统管理员780是如何能够配置分区工作管理器790以为分区A和分区B配置公允份额值的,分区管理员730和735可以就它们自己的分区配置分区级别的工作管理器,该分区级别的工作管理器管理它们各自分区内的工作。当配置它们各自的分区工作管理器时,通常存在分区管理员可以使用的若干配置(或者单独使用或者互相组合使用),包括但不限于工作请求优先级排序(或者公允份额值)、最小线程约束、最大线程约束。

例如,在实施例中,分区管理员可以使用公允份额值来配置它们各自的分区工作管理器。分区A管理员可以在运行于分区A内的应用之间分配用于分区A 740的总线程使用的公允份额值。分区A管理员730将通过经由通信路径731配置工作管理器A 745来做到这一点,以给运行于分区A 740内的各种应用分配公允份额值(类似地,分区B管理员可以经由通信路径736配置工作管理器B)。然而,对分区A 740可用的、来自全局线程池的线程仍然是由分区工作管理器790设置的,并且对于对分区B 750可用的线程也是如此。分区工作管理器790是由系统管理员780经由通信路径785配置的,并且用于分区A和分区B的配置(如以上所述)被分别存储在分区A工作管理器795和分区B工作管理器796中。

在实施例中,分区工作管理器充当为每个已部署的应用创建的每个已配置的工作管理器的模板和实例。例如,分区工作管理器可以是默认工作管理器。可以为每个已部署的应用创建默认工作管理器的一个实例,并且除非指定另一种调度策略,该实例可被用于处置来自该应用的工作请求。

在实施例中,分区管理员可以可选地为它们自己各自的分区覆写分区工作管理器。该分区内的每个应用可以被赋予使用针对该工作管理器的分区特定的配置而创建的分区工作管理器的实例。对于在分区级别中未被超越的分区工作管理器,当为分区中每个已部署的应用创建这种工作管理器的实例时,将使用config.xml级别中的模板配置,该配置受控于由系统管理员设定的任何分区特定的限制,如以上就分区工作管理器所阐述的那样。

例如,在实施例中,默认工作管理器被配置为不具有最小线程约束或者最大线程约束,并且附加地给分区分配公允份额请求类值50。分区管理员可以使用最小线程约束1来超越它们各自分区中的默认工作管理器。作为结果,分区内的每个已部署的应用于是将具有使用配置值为1的最小线程约束创建的默认工作管理器。

根据实施例,尽管分区管理员可以重写分配给它们的具体分区的公允份额值,但是这不改变在分区工作管理器处分配给分区的公允份额。例如,在分区工作管理器的配置中,分区X和分区Y各自被系统管理员分配公允份额值50。然而,分区X的分区管理员在它们的工作管理器中设置它们的公允份额值为90。尽管分区管理员尝试索取多于它们的公允份额的线程,但是分区工作管理器可以确保分区X只收到池中线程的一半。

在实施例中,在系统级别(例如,在config.xml中的自调整区段)定义的约束是共享的。例如,分区工作管理器被创建,并且定义最小线程约束,称为min-ThreadConstraint-1。每个分区将得到min-ThreadConstraint-1的副本。如以上讨论的,如有需要分区管理员可以超越min-ThreadConstraint-1。

根据实施例,应用服务器环境700可以包括多租户应用服务器(MT)环境。

图8是用于提供用在应用服务器环境中的工作管理器的示例性方法800的流程图。方法800可以在步骤801处开始,在包括执行于其上的应用服务器环境的一个或多个计算机处,提供可以在应用服务器环境内使用的多个可部署资源、定义域内可部署资源的分组的一个或多个资源组模板、以及一个或多个分区,其中每个分区提供域的监管性和运行时细分。方法800可以在步骤802处继续,提供分区工作管理器,分区工作管理器可被系统管理员配置。示例性方法800可以在步骤803处结束,配置分区工作管理器以给应用服务器环境内的一个或多个分区中的每一个分区分配公允份额值,每个公允份额值被配置为被系统用于控制与一个或多个分区关联的线程使用。

根据实施例,且未在图8中示出,方法可以继续配置分区工作管理器以除了公允份额值以外提供以下中的一个或多个:分区容量约束、分区最小线程约束限制、以及分区最大线程约束。

图9是用于提供用在应用服务器环境中的工作管理器的示例性方法900的流程图。方法900可以在步骤901处开始,在包括执行于其上的应用服务器环境的一个或多个计算机处,提供可以在应用服务器环境内使用的多个可部署资源、定义域内可部署资源的分组的一个或多个资源组模板、以及一个或多个分区,其中每个分区提供域的监管性和运行时细分。方法900可以在步骤902处继续,提供分区工作管理器,分区工作管理器可被系统管理员配置。示例性方法900可以在步骤903处继续,配置分区工作管理器以给应用服务器环境内的一个或多个分区中的每一个分区分配公允份额值,每个公允份额值被配置为被系统用于控制与一个或多个分区关联的线程使用。在步骤904处,方法900提供一个或多个分区级别的工作管理器,一个或多个分区中的每个分区包括一个或多个分区级别的工作管理器中的一个。最后,方法900以配置一个或多个分区级别的工作管理器中的每一个以给在各自分区内执行的一个或多个应用分配分区公允份额值而结束,每个分区公允份额值被配置为被系统用于控制与在各自分区内执行的一个或多个应用关联的线程使用。

应用工作管理器

在实施例中,工作管理器及其产物(artifact)(诸如约束)可以从应用内定义。当这样的应用定义工作管理器和/或其约束时,这样的工作管理器可以被部署于分区内。然而,所定义的工作管理器和/或其约束可以由系统管理员经由分区工作管理器或者由分区管理员经由已定义的分区级别的工作管理器基于已经施加的任何已配置的限制或工作管理器(例如,公允份额值)而调整。

分区ID传播

在实施例中,从其调度和/或请求工作请求的分区ID可以被传播到其中正运行工作请求的自调整线程池。分区ID可以从部件调用上下文(component invocation context,CIC)取得。这允许工作请求在请求所来源的分区的上下文之下运行。这可以允许对错误记载及诊断的支持和/或对安全性的支持。

本发明可以使用一个或更多传统通用数字计算机或专用数字计算机、计算设备、机器、或者微处理器(包括一个或更多处理器、存储器和/或根据本公开的教导编程的计算机可读存储介质)方便地实现。如软件领域技术人员清晰的,熟练的编程者基于本公开的教导可以容易地准备适当的软件编码。

在一些实施例中,本发明包括计算机程序产品,该产品是具有存储于其上/中的指令的非暂时性存储介质或者计算机可读介质,该指令可被用来编程计算机以执行本发明的任何处理。存储介质可以包括但不限于任意类型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁卡或光学卡、纳米系统(包括分子记忆IC)或者适于存储指令和/或数据的任意类型的介质或设备。

为了示意和描述的目的,已经提供了本发明的以上描述。它不旨在穷举或者限制本发明为所公开的确切形式。对本领域技术人员而言,许多修改和变形是显而易见的。实施例是为了最好地解释本发明的原理及其实际应用而选择和描述的,从而使得其他本领域技术人员能够理解各种实施例的本发明以及理解带有适于所预期的具体用途的各种修改的本发明。本发明的范围旨在由以下权利要求及其等价物定义。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1