CN107077383B - 用于在多租户应用服务器环境中确定分区标识符的系统和方法 - Google Patents

用于在多租户应用服务器环境中确定分区标识符的系统和方法 Download PDF

Info

Publication number
CN107077383B
CN107077383B CN201580051392.7A CN201580051392A CN107077383B CN 107077383 B CN107077383 B CN 107077383B CN 201580051392 A CN201580051392 A CN 201580051392A CN 107077383 B CN107077383 B CN 107077383B
Authority
CN
China
Prior art keywords
partition
component
call context
target
component call
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580051392.7A
Other languages
English (en)
Other versions
CN107077383A (zh
Inventor
S·萨胡
S·赛亚加拉詹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN107077383A publication Critical patent/CN107077383A/zh
Application granted granted Critical
Publication of CN107077383B publication Critical patent/CN107077383B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • H04L47/762Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions triggered by the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

根据一个实施例,这里描述了一种用于在应用服务器环境中确定分区标识符的系统和方法。一种示例性方法可以开始于在包括在其上执行的应用服务器环境的一台或多台计算机处一同提供:可以在所述应用服务器环境内使用的多项可部署资源;一个或多个分区,其中每一个分区提供域的管理和运行时间细分;以及组件调用情境管理器,所述组件调用情境管理器包括堆栈。所述方法可以设定一个或多个组件调用情境。分区知晓容器可以实施在组件调用情境管理器处登记或查找当前组件调用情境的其中之一。当前组件调用情境可以与当前分区相关联。所述方法和系统可以被利用在多租户以及非多租户应用服务器环境中。

Description

用于在多租户应用服务器环境中确定分区标识符的系统和 方法
版权提醒
本专利文献的公开内容的一部分包含受到版权保护的资料。版权所有人不反对任何人按照其在专利商标局专利文件或记录中所出现的那样对专利文献或专利公开内容进行复制再现,但是在其他方面保留所涉及的所有版权权利。
技术领域
本发明的实施例总体上涉及应用服务器和云端环境,并且特别涉及一种用于在多租户应用服务器环境中确定分区标识符的系统和方法。
背景技术
应用服务器通常提供受到管理的环境,软件应用可以在其中部署并且运行。基于云端的环境允许应用在由云端提供的分布式资源内运行并且利用所述分布式资源。这样的环境可以支持大量的用户或租户,其中一些用户或租户可能具有特定于该用户或租户的具体需求。
发明内容
根据一个实施例,这里描述了一种用于在应用服务器环境中确定分区标识符的系统和方法。一种示例性方法可以开始于在包括在其上执行的应用服务器环境的一台或多台计算机处一同提供:可以在所述应用服务器环境内使用的多项可部署资源;一个或多个分区,其中每一个分区提供一个域的管理和运行时间细分;以及组件调用情境管理器,所述组件调用情境管理器包括堆栈。所述方法可以在分区知晓容器(partition-awarecontainer)处设定一个或多个组件调用情境。分区知晓容器可以实施在组件调用情境管理器处登记或查找当前组件调用情境的其中之一。当前组件调用情境可以与当前分区相关联。
根据一个实施例,这里在多租户操作环境的情境中描述的方法和系统也可以被使用在非多租户操作环境内,正如后面在其中小服务程序调用EJB容器的实例中所描述的那样。
根据一个实施例,分区(比如WebLogic环境中的一个域内的分区)可以被定位成一个域内的租户。本发明的系统和方法可以允许按照通用的方式对租户请求进行早期识别(也就是说,通用意味着所述系统和方法可以在多租户应用服务器环境以及非多租户应用服务器环境内识别租户请求)。
附图说明
图1示出了根据一个实施例的用于在应用服务器、云端或其他环境中支持多租户的系统。
图2进一步示出了根据一个实施例的用于在应用服务器、云端或其他环境中支持多租户的系统。
图3进一步示出了根据一个实施例的用于在应用服务器、云端或其他环境中支持多租户的系统。
图4示出了根据一个实施例的用于与示例性多租户环境一起使用的域配置。
图5进一步示出了根据一个实施例的示例性多租户环境。
图6示出了根据一个实施例在多租户应用服务器环境中确定分区标识符。
图7示出了根据一个实施例在多租户应用服务器环境中确定分区标识符。
图8示出了根据一个实施例在多租户应用服务器环境中确定分区标识符。
图9通过流程图示出了根据一个实施例的用于在多租户应用服务器环境中确定分区标识符的一种方法。
具体实施方式
根据一个实施例,这里描述了一种用于在应用服务器环境中确定分区标识符的系统和方法。一种示例性方法可以开始于在包括在其上执行的应用服务器环境的一台或多台计算机处一同提供:可以在所述应用服务器环境内使用的多项可部署资源;一个或多个分区,其中每一个分区提供一个域的管理和运行时间细分;以及组件调用情境管理器,所述组件调用情境管理器包括堆栈。所述方法可以在分区知晓容器处设定一个或多个组件调用情境。分区知晓容器可以实施在组件调用情境管理器处登记或查找当前组件调用情境的其中之一。当前组件调用情境可以与当前分区相关联。
根据一个实施例,这里在多租户操作环境的情境中描述的方法和系统也可以被使用在非多租户操作环境内,正如后面在其中小服务程序调用EJB容器的实例中所描述的那样。
根据一个实施例,分区(比如WebLogic环境中的一个域内的分区)可以被定位成一个域内的租户。本发明的系统和方法可以允许按照通用的方式对租户请求进行早期识别(也就是说,通用意味着所述系统和方法可以在多租户应用服务器环境以及非多租户应用服务器环境内识别租户请求)。
应用服务器(例如多租户MT)环境
图1示出了根据一个实施例的用于在应用服务器、云端或其他环境中支持多租户的系统。
如图1中所示,根据一个实施例,应用服务器(例如多租户MT)环境100或者允许部署和执行软件应用的其他计算环境可以被配置成包括域102配置并且根据域102配置进行操作,在运行时间使用域102配置来定义应用服务器域。
根据一个实施例,应用服务器可以包括被定义成用于在运行时间使用的一个或多个分区104。每一个分区可以与全局唯一分区标识符(ID)和分区配置相关联,并且还可以包括一个或多个资源组124,连同针对资源组模板126和/或分区特定应用或资源128的参考。还可以在域层级定义域层级资源组、应用和/或资源140,并且可选地具有针对资源组模板的参考。
每一个资源组模板160可以定义一个或多个应用A 162、B 164、资源A 166、B 168以及/或者其他可部署应用或资源170,并且可以通过资源组被参考。举例来说,如图1中所示,分区104中的资源组124可以参考190资源组模板160。
通常来说,系统管理员可以定义分区、域层级资源组和资源组模板以及安全性领域;分区管理员则可以定义其自身的分区的各个方面,比如通过创建分区层级资源组、把应用部署到分区或者参考针对分区的特定领域。
图2进一步示出了根据一个实施例的用于在应用服务器、云端或其他环境中支持多租户的系统。
如图2中所示,根据一个实施例,分区202例如可以包括资源组205(其包括针对资源组模板210的参考206)、虚拟目标(例如虚拟主机)信息207以及可插拔数据库(PDB)或其他数据源信息208。资源组模板(例如210)例如可以定义多个应用A 211和B 212,连同例如Java消息服务器(JMS)服务器213、存储和转发(SAF)代理215、邮件会话组件216或者Java数据库连接(JDBC)资源217之类的资源。
图2中示出的资源组模板是作为举例而提供的;根据其他实施例,可以提供不同类型的资源组模板和单元。
根据一个实施例,当一个分区(例如202)内的资源组参考220特定资源组模板(例如210)时,与特定分区相关联的信息可以与所参考的资源组模板被组合使用来表明分区特定信息230,例如分区特定PDB信息。所述分区特定信息随后可以由应用服务器使用来配置供所述分区使用的资源,例如PDB资源。举例来说,与分区202相关联的分区特定PDB信息可以由应用服务器使用来利用适当的PDB 238或其他数据源配置232容器数据库(CDB)236,以供该分区使用。
类似地,根据一个实施例,与特定分区相关联的虚拟目标信息可以被用来定义239供所述分区使用的分区特定虚拟目标240,例如baylandurgentcare.com,随后可以通过统一资源定位符(URL)使其可访问,例如http://baylandurgentcare.com。
图3进一步示出了根据一个实施例的用于在应用服务器、云端或其他环境中支持多租户的系统。
根据一个实施例,系统配置(比如config.xml配置文件)被用来定义分区,其中包括用于与该分区相关联的资源组的配置单元和/或其他分区属性。可以利用属性名称/数值对对于每个分区规定数值。
根据一个实施例,在受到管理的服务器/集群242或者可以提供对于CDB 243的访问并且可以通过web层244访问的类似环境内可以执行多个分区。这样例如允许把一个域或分区与(CDB的)其中一个或多个PDB相关联。
根据一个实施例,所述多个分区当中的每一个(在该例中是分区A 250和分区B260)可以被配置成包括与该分区相关联的多项资源。举例来说,分区A可以被配置成包括资源组251,其包含应用A1 252、应用A2 254和JMS A 256连同与PDB A 259相关联的数据源A257,其中所述分区可以通过虚拟目标A 258访问。类似地,分区B 260可以被配置成包括资源组261,其包含应用B1 262、应用B2 264和JMS B 266连同与PDB B 269相关联的数据源B267,其中所述分区可以通过虚拟目标B 268访问。
虽然前面的其中几个实例说明了CDB和PDB的使用,但是根据其他实施例,可以支持其他类型的多租户或非多租户数据库,其中例如通过模式(schema)的使用或者不同数据库的使用可以对于每一个分区提供特定的配置。
资源
根据一个实施例,资源可以是系统资源、应用或者可以被部署到环境的一个域的其他资源或对象。例如根据一个实施例,资源可以是应用、JMS、JDBC、JavaMail、WLDF、数据源或者可以被部署到服务器、集群或其他应用服务器目标的其他系统资源或其他类型的对象。
分区
根据一个实施例,分区是一个域的运行时间和管理细分或切片,其可以与分区标识符(ID)和配置相关联,并且可以包含应用以及/或者通过资源组和资源组模板的使用涉及全域范围的资源。分区还可以与租户或平台租户相关联。
根据一个实施例,分区可以包含应用,通过资源组模板涉及全域范围的应用,并且具有其自身的配置。
根据一个实施例,分区内的资源组可以可选地参考资源组模板。一个分区可以具有多个资源组,并且其中每一个资源组可以参考资源组模板。每一个分区可以定义对应于未在该分区的资源组所涉及的资源组模板中规定的配置数据的属性。这样就允许分区充当定义在资源组模板中的可部署资源到用于该分区的特定数值的绑定。在某些情况下,分区可以超越(override)由资源组模板规定的配置信息。
根据一个实施例,例如由config.xml配置文件定义的分区配置可以包括多个配置单元,例如:“partition(分区)”,其包含定义所述分区的属性和子代单元;“resource-group(资源组)”,其包含被部署到所述分区的应用和资源;“resource-group-template(资源组模板)”,其包含由该模板定义的应用和资源;“jdbc-system-resource-override(jdbc系统资源超越)”,其包含数据库特定服务名称、用户名和口令;以及“partition-properties(分区属性)”,其包含可以被用于资源组模板中的宏替换的属性键数值。
在启动时,系统可以使用由所述配置文件提供的信息从资源组模板生成针对每一项资源的分区特定配置单元。
资源组
根据一个实施例,资源组是可以在域或分区层级定义并且可以参考资源组模板的可部署资源的经过命名的完全具备资格的总集。资源组中的资源被认为是完全具备资格的,这是在于管理员已经提供了对于启动或连接到这些资源所需的全部信息,例如用于连接到数据源的凭证或者针对应用的目标化信息。
在分区层级,管理员可以把零个或多个资源组配置在分区中并且受到任何安全性限制。例如在SaaS使用情况中,各种分区层级资源组可以涉及域层级资源组模板;而在PaaS使用情况中,可以创建不涉及资源组模板的分区层级资源组,相反地所述分区层级资源组表示将仅在该分区内可用的应用及其有关资源。
资源组模板
根据一个实施例,域可以可选地包括资源组模板。资源组模板是可以从资源组参考的在域层级定义的可部署资源的总集,并且对于激活其资源所需的其中一些信息可以不作为模板本身的一部分被存储,从而使其支持分区层级配置的规定。域可以包含任意数目的资源组模板,其中每一个资源组模板例如可以包括一个或多个有关的Java应用以及这些应用所依赖的资源。
根据一个实施例,特定的资源组模板可以由一个或多个资源组参考。通常来说,在任何给定的分区内,资源组模板每次可以由一个资源组参考,也就是说不会由相同分区内的多个资源组同时参考;但是其可以同时由不同分区中的另一个资源组参考。包含资源组的对象(例如域或分区)可以使用属性名称/数值指派来设定资源组模板中的任何令牌的数值。当系统利用参考资源组激活资源组模板时,其可以利用在该资源组的包含对象中设定的数值来替换这些令牌。在某些情况下,系统还可以使用静态配置的资源组模板和分区以对于每一种分区/模板组合生成运行时间配置。
租户
根据一个实施例,租户可以与分区ID相关联。举例来说,租户可以与不同的用户组织相关联,比如不同的外部公司或者特定企业内的不同部门(例如人力资源部门和财务部门)。
根据一个实施例,系统允许将不同租户(即分区)的管理和运行时间彼此隔离。举例来说,(例如分区用户组织的)经过授权的用户可以配置相关联的分区中的应用以及其能够访问的资源的一些行为。系统可以确保租户之间的隔离;并且在运行时间确保代表特定租户工作的应用仅涉及与该租户相关联的资源,并且不涉及与其他租户相关联的资源。
示例性域配置和多租户环境
根据一个实施例,应用可以在域层级被部署到资源组模板,或者被部署到以分区为范围或者以域为范围的资源组。可以使用对于每个应用或者每个分区规定的部署计划来超越应用配置。还可以作为资源组的一部分来规定部署计划。
图4示出了根据一个实施例的用于与示例性多租户环境一起使用的域配置。
根据一个实施例,当系统启动分区时,其根据所提供的配置创建虚拟目标(例如虚拟主机)以及到对应的数据库实例的连接池(pool)(对于每一个分区包括一个连接)。
通常来说,每一个资源组模板可以包括一个或多个有关的应用以及这些应用所依赖的资源。通过提供资源组模板中的可部署资源到与所述分区相关联的特定数值的绑定,每一个分区可以提供未在其所涉及的资源组模板中规定的配置数据;其中包括在某些情况下超越由资源组模板规定的特定配置信息。这样就允许系统利用每一个分区已定义的属性数值对于每一个分区不同地激活由资源组模板表示的应用。
在一些实例中,分区可以包含不涉及资源组模板或者直接定义其自身的分区范围可部署资源的资源组。在分区内定义的应用和数据源通常仅对于该分区可用。资源可以被部署成使得可以利用分区:<分区名称>/<资源JNDI名称>或者域:<资源JNDI名称>从各个分区对其进行访问。
举例来说,MedRec应用可以包括多个Java应用、数据源、JMS服务器和邮件会话。为了对于多个租户运行MedRec应用,系统管理员可以定义单个MedRec资源组模板286,从而在模板中声明这些可部署资源。
与域层级可部署资源不同,由于缺乏一些配置信息,在资源组模板中声明的可部署资源可能无法在模板中被完全配置,或者无法被原样激活。
举例来说,MedRec资源组模板可以声明由应用使用的数据源,但是可能不会规定用于连接到数据库的URL。通过分别包括参考296、297MedRec资源组模板的MedRec资源组293、294,与不同租户相关联的分区(例如分区BUC-A 290(Bayland Urgent Care,BUC)和分区VH-A 292(Valley Health,VH))可以参考一个或多个资源组模板。所述参考随后可以被用来创建302、306针对每一个租户的虚拟目标/虚拟主机,其中包括供Bayland UrgentCare租户使用的与BUC-A分区相关联的虚拟主机baylandurgentcare.com 304;以及供Valley Health租户使用的与VH-A分区相关联的虚拟主机valleyhealth.com 308。
图5进一步示出了根据一个实施例的示例性多租户环境。如图5中所示并且继续前面的实例,其中两个分区参考MedRec资源组模板,根据一个实施例,小服务程序引擎310可以被用来支持多个租户环境,在该例中是Bayland Urgent Care Physician租户环境320和Valley Health Physician租户环境330。
根据一个实施例,每一个分区321、331可以定义将在其上接受针对该租户环境的传入通信量的不同虚拟目标,以及用于连接到所述分区并且连接到其资源324、334的不同URL 322、332,这在该例中分别包括Bayland Urgent Care数据库或Valley Health数据库。所述数据库实例可以使用兼容的模式,这是因为将针对两个数据库执行相同的应用代码。当系统启动分区时,其可以创建虚拟目标以及到对应的数据库实例的连接池。
分区标识符
根据一个实施例,在应用服务器环境内,容器(比如JNDI(Java命名和目录接口)、JMX(Java管理扩展)、Logging、Web容器和RCM(资源消费管理))可以确定当前的或运行中的请求的分区ID,以便将其用于分区特定处理、登录以及隔离需求。
根据一个实施例,对于组件调用请求或者一般来说在应用服务器处接收到的任何其他请求,所述请求的目标资源可驻留在域中的分区内。目标资源驻留在其中的分区(也就是所述请求的目标资源)可以确定针对所述请求的分区情境。
根据一个实施例,内部服务器活动可以被不同地对待。举例来说,可以特别对于域内的特定/单独的分区实施内部服务器活动(例如属于分区的日志文件的旋转)。对于这样的内部服务器活动,分区情境可以是正在为之实施活动的分区而不是目标资源驻留在其内的分区。
根据一个实施例,其他内部服务器活动不可归于任何单独/特定的分区。这样的内部服务器活动包括而不限于服务器运行时间的初始化和/或关停、容器的加载等等。对于不可归于特定分区的此类活动,分区情境可以被设定到通用数值。
图6示出了根据一个实施例在应用服务器环境中确定分区标识符。在图6所描绘的实施例中,应用服务器环境600包括域620。域620可以与前端组件630相关联,并且可以包含容器640、CIC(组件调用情境)API 645、组件调用情境管理器(CIC管理器)650、分区A 660、分区B 670、虚拟目标A 662以及虚拟目标B 672。前端组件可以是能够应对传入请求的任何前端组件,比如OracleTM Traffic Director(通信量引导器)。容器640可以是分区知晓容器,比如JNDI、JMX、Logging、RCM等等。分区A和B可以分别包含资源组661和671。资源组661和671可以分别与虚拟目标A和B、662和672相关联。CIC管理器650可以包含堆栈,比如线程本地(local)堆栈651。
根据一个实施例,用户或处理610可以发起请求615,其中所述请求包括用于域620内的请求的目标的目标信息。举例来说,分区A 660的经过授权的用户可以请求运行分区A内的特定应用。在这种情况下,与请求615相关联的目标信息将至少把分区A标识成请求的目标。
根据一个实施例,当请求(比如包括目标信息的请求615)是针对域620时,其可以被路由到前端组件630(比如通信量引导器)。一旦在前端组件630处被接收到,容器640可以确定所述请求的目标组件/资源的各种细节。这些细节例如可以通过检查包含在请求内的目标信息而获得。一旦容器640确定了请求的目标组件/资源,所述容器可以创建组件调用情境652,其可以作为表示所述调用的对象被返回。根据一个实施例,取决于请求,所确定的组件调用情境652可以与分区标识符665或675相关联。
作为确定传入请求的细节并且创建组件调用情境对象的容器的一个实例,假设传入请求615是HTTP请求。通过传入HTTP请求的URI,web(HTTP)容器可以确定HTTP请求所针对的分区ID、应用ID、模块和组件ID。这一确定例如可以在从请求读取了足够的信息之后由HTTP协议处理程序(handler)在套接字读取器线程中发生,从而使得可以区分请求的目标。基于该信息,所述容器可以对于传入HTTP请求创建对象,即组件调用情境。
根据一个实施例,当请求是针对域620时,其可以被路由到前端组件630(比如通信量引导器)。一旦在前端组件630处被接收到,容器640可以确定所述请求的目标组件/资源的各种细节。这些细节例如可以通过检查包含在请求内的目标信息而获得。一旦容器640确定了请求的目标组件/资源,所述容器可以创建组件调用情境652,其可以是用以表示所述调用的对象。根据一个实施例,所确定的组件调用情境652可以与分区标识符665或675相关联。
根据一个实施例,一旦容器作出确定并且创建传入请求的组件调用情境(也就是所述对象),容器随后可以把组件调用情境登记在组件调用情境管理器650中,所述组件调用情境管理器650可以包含堆栈,例如线程本地堆栈651,所述堆栈又包括各种组件调用情境,例如组件调用情境(A)-(D)652-655。应当提到的是,线程本地堆栈651可以包含任意数目的组件调用情境,并且不限于图6中所描绘的四个组件调用情境。组件调用情境管理器650可以允许对于当前组件调用情境的查找、登记以及解除登记。
根据一个实施例,容器可以把组件调用情境对象通过CIC API 645直接登记到组件调用情境管理器中。容器可以利用命令(比如pushComponentInvocationContext)实现组件调用情境的这一直接登记,以便推送对于请求确定的组件调用情境。一旦与请求相关联的调用完成,利用这样的方法把新的组件调用情境登记在组件调用情境管理器处的容器还可以应对组件调用情境的取消设定/取消登记。并不要求容器只有在调用成功完成之后才在组件调用情境管理器处取消登记/取消设定组件调用情境。不成功的调用(比如导致抛出异常的调用)也可以导致容器在组件调用情境管理器处取消设定/取消登记组件调用情境。在组件调用情境管理器处取消设定/取消登记组件调用情境可以通过组件调用情境管理器上的命令比如popComponentInvocationContext)来实施。
根据一个实施例,容器可以把组件调用情境对象通过CIC API 645直接登记到组件调用情境管理器中。容器可以通过传递callable以执行来使用runAs方法。在这种情况下,组件调用情境管理器可以建立组件调用情境。这样就允许容器在组件调用情境的情境中运行动作,执行动作,并且在调用完成之后取消设定组件调用情境。
根据一个实施例,容器可以把组件调用情境对象通过CIC API 645直接登记到组件调用情境管理器中。容器可以在try-with-resources风格块内使用通过setCurrentComponentInvocationContext方法返回的AutoCloseable。在这种情况下,CIC管理器可以通过AutoCloseable在try块的末尾自动取消设定调用情境。这种方法可以提供一些优点,比如调用者无需修改进入到Runnable或Closeable中的工作,但是仍然具有由CIC管理器在执行工作的同时建立正确的CIC情境的优点。
图7示出了根据一个实施例在应用服务器环境中确定分区标识符。在图7所描绘的实施例中,应用服务器环境600包括域620。域620可以与前端组件630相关联,并且可以包括容器640,所述容器640可以包括服务提供商接口720。所述域还可以包括工作管理器730、组件调用情境管理器(CIC管理器)650、分区A 660、分区B 670、虚拟目标A 662以及虚拟目标B672。所述前端组件可以是能够应对传入请求的任何前端组件,比如OracleTM TrafficDirector(通信量引导器)。容器640可以是分区知晓容器,比如JNDI、JMX、Logging、RCM等等。分区A和B可以分别包含资源组661和671。资源组661和671可以分别与虚拟目标A和B、662和672相关联。CIC管理器650可以包含堆栈,比如线程本地堆栈651。
根据一个实施例,用户可以发起请求615,其中所述请求包括用于域620内的请求的目标的目标信息。举例来说,能够访问分区A 660的用户、处理器或其他应用可以请求运行分区A内的特定应用。在这种情况下,与请求615相关联的目标信息将至少部分地把分区A标识成请求的目标。在其中请求是源自另一个分区(其处在相同的域内或者来自另一个域)的情况下,起源分区的组件调用情境不与请求包括在一起。
根据一个实施例,当请求(比如包括目标信息的请求615)是针对域620时,其可以被路由到前端组件630(比如通信量引导器)。一旦在前端组件630处被接收到,容器640可以确定所述请求的目标组件/资源的各种细节。这些细节例如可以通过检查包含在请求内的目标信息而获得。一旦容器640确定了请求的目标组件/资源,所述容器可以创建组件调用情境652,其可以是用以表示所述调用的对象。根据一个实施例,取决于请求,所确定的组件调用情境652可以与分区标识符665或675相关联。
根据一个实施例,一旦容器作出确定并且创建传入请求的组件调用情境(也就是所述对象),容器可以间接导致把组件调用情境登记在组件调用情境管理器650中,所述组件调用情境管理器650可以包含堆栈,比如线程本地堆栈651,所述堆栈又包括各种组件调用情境,例如组件调用情境(A)-(D)652-655。线程本地堆栈651可以包含任意数目的组件调用情境,并且不限于图7中所描绘的四个组件调用情境。组件调用情境管理器650可以允许对于当前组件调用情境的查找、登记以及取消登记。
根据一个实施例,可以由工作管理器730实施组件调用情境的间接登记。举例来说,容器640可以通过工作管理器730在单独的线程中异步地调遣对于请求的下一层级的处理。SPI可以促进所述线程中的组件情境设定。组件请求接口710可以由容器640提供,其可以允许根据其自身的组件调用情境执行与请求相关联的工作。组件请求接口710还可以包括用于使得容器提供目标组件细节(也就是组件调用情境返回数值)的命令,比如getComponentInvocationContext。在执行组件请求710实例之前,工作管理器730可以利用由getComponentInvocationContext命令提供的组件调用情境对组件调用情境管理器650进行查找并且登记新的组件调用情境。一旦组件请求710实例的执行完成,工作管理器730可以从组件调用情境管理器自动移除组件调用情境。
根据一个实施例,由于请求通常与单个线程相关联,CIC管理器可以通过对于当前调用请求使用线程本地堆栈而在每个线程的基础上保持CIC状态。在其中针对请求的工作由多个线程应对的情况下,在不同的线程中执行工作的容器可以利用前面所描述的getComponentInvocationContext命令确保所述线程的CIC被传递到新的线程。
图8示出了根据一个实施例在应用服务器环境中确定分区标识符。在图8所描绘的实施例中,应用服务器环境600包括域620。域620包括前端组件630、容器640、CIC API 645、组件调用情境管理器(CIC管理器)650、分区A 660、分区B 670、虚拟目标A 662以及虚拟目标B 672。所述前端组件可以是能够应对传入请求的任何前端组件,比如OracleTM TrafficDirector(通信量引导器)。容器640可以是分区知晓容器,比如JNDI、JMX、Logging、RCM等等。分区A和B可以分别包含资源组661和671。资源组661和671可以分别与虚拟目标A和B、662和672相关联。CIC管理器650可以包含堆栈,比如线程本地堆栈651。
根据一个实施例,容器640可以通过API 645经由命令(比如getCurrentComponentInvocation)从组件调用情境管理器取回当前组件调用情境。举例来说,正如图8中所描绘的那样,组件调用情境管理器当前被设定在可能的组件调用情境(例如组件调用情境(A)-(D)652-655)当中的组件调用情境652上。容器640可以通过API 645从组件调用情境管理器650获得当前组件调用情境810。
图9通过流程图示出了根据一个实施例的用于在多租户应用服务器环境中确定分区标识符的一种方法。示例性方法900可以在步骤910处开始于在包括在其上执行的应用服务器环境的一台或多台计算机处一同提供:可以在所述应用服务器环境内使用的多项可部署资源;一个或多个分区,其中每一个分区提供域的管理和运行时间细分;以及组件调用情境管理器,所述组件调用情境管理器包括堆栈。所述方法在步骤920处继续,其中所述方法可以在分区知晓容器处设定一个或多个组件调用情境。在步骤930处,所述示例性方法继续由分区知晓容器实施在组件调用情境管理器处登记或查找当前组件调用情境的其中之一。所述示例性方法可以在步骤940处结束,其中把当前组件调用情境与当前分区相关联。
组件调用情境的传播
根据一个实施例,组件调用情境管理器可以在相关联的请求的整个持续时间期间负责组件调用情境细节的传播。可以在整个本地调用中传播分区情境信息。可以由对应的容器基于哪一个组件涉及在应对请求中而确定组件调用情境的其他子情境。每当衍生出新的线程时,组件调用情境可以被自动继承,而不管哪一个API被用来衍生出线程。
取回组件调用情境
正如前面所提到的那样,根据一个实施例,需要组件调用情境细节(例如分区ID)的任何内部代码或容器(比如JNDI)都可以对组件调用情境管理器进行查找,以便通过例如getCurrentComponentInvocation之类的方法确定当前组件调用情境。组件调用情境的分区ID可以具有几个数值,其中包括全局分区ID和用户分区ID。
根据一个实施例,全局分区ID可以被使用在以下情况中。当服务器确定请求的目标组件驻留在全局分区(也就是域)中时,容器可以把分区ID设定到全局分区的ID。此外,全局分区ID可以被用于并非特定于用户分区的内部服务器活动(例如服务器运行时间的初始化/关停、容器的加载等等)。当服务器运行时间中的此类活动并不是特别代表某一分区实施时,容器可以把分区ID设定到全局分区的ID。其他实施例可以通过使分区id表示共享系统分区来在全局分区工作与共享工作之间作出区分。
根据一个实施例,用户分区ID可以被使用在以下情况中。当请求是针对驻留在用户分区中的组件时,服务器可以把分区ID设定到用户分区的ID。此外,如果特别对于某一分区实施任何服务器活动(例如针对特定分区的日志文件的自动旋转),则可以在组件调用情境中设定所述分区的ID。
根据一个实施例,当前组件调用情境是非空值。举例来说,在线程不具有已建立的情境的情况下,可以返回表示全局分区的非空组件调用情境(也就说具有用于应用、模块和组件ID及名称的空值)。作为另一个实例,在创建了线程并且在该线程中没有建立新情境的情况下,所述线程可以自动继承创建线程的情境。
组件调用情境堆栈
根据一个实施例,在请求跨越多个组件的情况下(例如作为针对另一个组件的本地调用——例如调用企业JavaBean(EJB)的小服务程序),目标容器(在该例中是EJB容器)可以在应对EJB调用之前建立包含新的模块和组件ID的新的组件调用情境。目标容器还可以在EJB调用成功完成时取消设定组件调用情境。组件调用情境管理器可以在内部作为堆栈管理组件调用的列表。所述堆栈可以表示与在调用的情境内作出的本地调用相关联的组件调用情境。
作为一个实例,考虑小服务程序S1调用本地EJB E1的情况。组件调用情境管理器可以在内部保持对应于小服务程序S1和EJB E1的组件调用情境的堆栈。在EJB E1的执行期间,针对componentinvocationcmanager.getCurrentComponentInvocationContext()的调用可以返回对应于EI的组件调用情境以作为当前组件调用情境。一旦EJB E1的执行完成,EJB容器可以取消设定对应于E1的组件调用情境,并且组件调用情境管理器随后将建立对应于S1的组件调用情境以作为针对componentinvocationcontextmanager.getCurrentComponentInvocationContext()的任何后续调用的当前调用情境。
根据一个实施例,还可以使得一种用以取回堆栈中的所有调用对象的内部方法可用。
API
根据一个实施例,在这里列出API类别和接口的实例:
package weblogic.invocation;
/**
*关于由服务器中的组件执行的当前请求的信息。当前在该接口中给出的信
*息与正在执行请求的目标组件有关。未来可以通过该接口给出更多信息
*/
public interface ComponentInvocationContext{
/**
*返回正被调用的组件所驻留的分区Id的ID。如果所述组件不属于任何分
*区或者属于GLOBAL(全局)分区,则此方法必须返回GLOBAL分区的uuid。
*
*@返回分区UUID
*/
String getPartitionId();
/**
*此方法类似于#getPartitionId,不同之处在于其返回人类可读名称而不
*是ID
*
*@返回分区名称
*/
String getPartitionName();
/**
*返回分区是否全局分区。
*
*@返回布尔数值
*/
boolean isGlobalRuntime();
/**
*返回包含当前正被调用的组件的应用的ID。所述组件可能不属于任何应
*用,在这种情况下返回空值。这例如可能在访问WLS MBeans时发生。
*当存在相同应用的多个版本或者当应用被部署到多个分区时,应用名称对
*于所有这些实例保持相同,应用ID则对于每一个实例是独有的。
*
*@返回应用ID
*/
String getApplicationID();
/**
*此方法类似于#getApplicationId,不同之处在于其返回人类可读名称而
*不是ID。
*应用名称无法唯一地标识应用实例。
*
*@返回应用名称
*/
String getApplicationName();
/**
*返回包含正被调用的组件的应用的版本。
*
*@返回应用版本
*/
String getApplicationVersion();
/**
*返回包含正被调用的组件的应用模块的名称。在独立模块部署的情况下,
*这是与应用名称相同的名称
*
*<p>
*每当#getApplicationId返回空值时,此方法返回空值。即使
*#getApplicationId返回非空值,其也可能返回空值。这种情况在调用处
*于应用而不是特定模块的情境中时发生。例如当
*ApplicationLifecycleListener接收到回调时。
*
*@返回模块名称
*/
String getModuleName();
/**
*返回正被调用的组件的名称。
*
*@返回组件名称
*/
String getComponentName();
}
根据一个实施例,在下面提供API类别ComponentInvocationContextManager的一种示例性实现方式:
Figure BDA0001252583920000191
Figure BDA0001252583920000201
Figure BDA0001252583920000211
Figure BDA0001252583920000221
Figure BDA0001252583920000231
Figure BDA0001252583920000241
Figure BDA0001252583920000251
在这里提供另一个示例性API:
package weblogic.invocation;
/**
*表示受到管理的组件调用情境,并且可以被使用在try-with-resources语句中以便在try块内建立组件调用情境,并且在try块的末尾将其自动复原。
*/
public class ManagedInvocationContext implements AutoCloseable{
private final ComponentInvocationContext invocationContext;
private final Object token;
/**
*构造受到管理的调用情境
*@param cic——将要建立的组件调用情境
*@param token(令牌)——由
*<code>ComponentInvocationContextManager</code>实现方式提供的不透
*明令牌,从而可以验证经过{@l ink
*ComponentInvocationContextManager#_managedPop(ManagedInvocationContext)}的
*后续弹出,以便防止取消设定不适当的情境。
*/
public ManagedInvocationContext(ComponentInvocationContext cic,Objecttoken){
this.invocationContext=cic;
this.token=token;
}
/**
*取消设定来自当前请求的组件调用堆栈顶部的当前调用情境。
*@查看java.lang.AutoCloseable#close()
*@抛出IllegalStateException(非法状态异常)——如果由于不适当的
*请求或空堆栈而导致无法取消设定调用情境的话。
*/
@超越
public void close(){
//_managedPop verifies the token in this object before popping
ComponentInvocationContextManager.getInstance()._managedPop(token);
}
/**
*@查看java.lang.Object#toString()
*/
@超越
public String toString(){
return"ManagedInvocationContext[invocationContext="+invocationContext+",token="+token+"]";
}
}
本发明可以方便地利用一台或多台传统的通用或专用数字计算机、计算设备、机器或微处理器(包括一个或多个处理器、存储器以及/或者根据本公开内容的教导编程的计算机可读存储介质)来实施。本领域技术人员将认识到,熟练的程序员基于本公开内容的教导可以很容易地准备适当的软件编码。
在一些实施例中,本发明包括作为其上/其中存储有指令的非瞬时性存储介质或(多种)计算机可读介质的计算机程序产品,所述指令可以被用来对计算机进行编程以便实施本发明的任何处理。所述存储介质可以包括而不限于任何类型的盘(其中包括软盘、光盘、DVD、CD-ROM、微驱动器和磁光盘)、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存设备、磁性或光学卡、纳米系统(包括分子存储器IC)或者适合于存储指令和/或数据的任何类型的介质或设备。
前面提供的关于本发明的描述是用于说明和描述的目的。其并不意图进行穷举或者将本发明限制到所公开的确切形式。本领域技术人员将认识到许多修改和变型。所述修改和变型包括所公开的各项特征的任意组合。选择和描述所述实施例是为了最好地解释本发明的原理及其实际应用,从而使得本领域其他技术人员能够理解适合于所设想的具体用途的本发明的各个实施例和各种修改。本发明的范围应当由所附权利要求书及其等效表述限定。

Claims (19)

1.一种用于在应用服务器环境中确定分区标识符的系统,包括:
一台或多台计算机,包括应用服务器,所述应用服务器实现软件应用的部署和执行,其中所述应用服务器与域配置相关联,所述域配置在运行时用于定义用于软件应用的执行的域;
能够在所述应用服务器内使用的多项可部署资源,以及
多个分区,所述多个分区包括目标分区,其中每个分区提供所述域的管理和运行时间细分,并且其中每个分区与分区标识符相关联,并且其中所述目标分区定义用于所述目标分区的可部署资源总集的配置数据的值并且将所述可部署资源总集绑定到用于所述目标分区的所定义的值;
分区知晓容器,所述分区知晓容器确定请求的目标资源包括在所述目标分区的所述可部署资源总集中并且设定与所述目标分区的分区标识符相关联的组件调用情境;
组件调用情境管理器,所述组件调用情境管理器包括用于保持组件调用情境的堆栈;
其中,分区知晓容器执行以下操作之一:通过将表示所述请求的组件调用情境推送到所述堆栈上而登记与所述目标分区的分区标识符相关联的组件调用情境,或者通过从所述堆栈请求当前组件调用情境而在组件调用情境管理器处查找当前组件调用情境,其中查找所述当前组件调用情境包括:设定所述当前组件调用情境作为所述分区知晓容器内的情境。
2.根据权利要求1所述的系统,其中,登记与所述目标分区的分区标识符相关联的组件调用情境包括:
在前端组件处接收包括目标信息的所述请求,所述目标信息表明所述目标分区;
其中将与所述目标分区的分区标识符相关联的组件调用情境推送到所述堆栈上包括通过所述分区知晓容器对所述组件调用情境管理器的应用程序接口进行调用。
3.根据权利要求2所述的系统,其中,所述分区知晓容器被配置成:在将与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处之后,并且在请求完成之后,在所述组件调用情境管理器处取消登记与所述目标分区的分区标识符相关联的所述组件调用情境,所述取消登记包括:
由所述分区知晓容器通过所述应用程序接口在所述组件调用情境管理器处取消登记与所述目标分区的分区标识符相关联的所述组件调用情境。
4.根据权利要求1到3中的任一项所述的系统,还包括:
工作管理器,
其中,由所述分区知晓容器将与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处包括:由所述分区知晓容器将指令传递到所述工作管理器,以便把与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处。
5.根据权利要求1到3中的任一项所述的系统,其中,所述目标分区是全局分区,所述全局分区与所述域相关联。
6.根据权利要求1到3中的任一项所述的系统,其中,所述应用服务器环境包括多租户应用服务器环境,并且其中所述系统能够把所述多个分区中的每个分区与不同租户相关联以供相应租户使用。
7.一种用于在应用服务器环境中确定分区标识符的方法,包括:
在一台或多台计算机处提供应用服务器,所述应用服务器实现软件应用的部署和执行,其中所述应用服务器与域配置相关联,所述域配置在运行时用于定义用于软件应用的执行的域,
能够在所述应用服务器内使用的多项可部署资源,
包括目标分区的多个分区,其中每个分区提供所述域的管理和运行时间细分,并且其中每个分区与分区标识符相关联,并且其中所述目标分区定义用于所述目标分区的可部署资源总集的配置数据的值并且将所述可部署资源总集绑定到用于所述目标分区的所定义的值,以及
组件调用情境管理器,所述组件调用情境管理器包括用于保持组件调用情境的堆栈;
在分区知晓容器处确定请求的目标资源包括在所述目标分区的所述可部署资源总集中;
在所述分区知晓容器处设定与所述目标分区的分区标识符相关联的组件调用情境;
由所述分区知晓容器执行以下操作之一:
通过将表示所述请求的组件调用情境推送到所述堆栈上而登记与所述目标分区的分区标识符相关联的组件调用情境;或者
通过从所述堆栈请求当前组件调用情境而在组件调用情境管理器处查找当前组件调用情境,其中查找所述当前组件调用情境包括:设定所述当前组件调用情境作为所述分区知晓容器内的情境。
8.根据权利要求7所述的方法,其中,登记与所述目标分区的分区标识符相关联的所述组件调用情境包括:
在前端组件处接收包括目标信息的所述请求,所述目标信息表明所述目标分区;
其中将与所述目标分区的分区标识符相关联的组件调用情境推送到所述堆栈上包括通过所述分区知晓容器对所述组件调用情境管理器的应用程序接口进行调用。
9.根据权利要求8所述的方法,其中,所述分区知晓容器被配置成:在将与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处之后,并且在请求完成之后,在所述组件调用情境管理器处取消登记与所述目标分区的分区标识符相关联的所述组件调用情境,所述取消登记包括:
由所述分区知晓容器通过所述应用程序接口在所述组件调用情境管理器处取消登记与所述目标分区的分区标识符相关联的所述组件调用情境。
10.根据权利要求7到9中的任一项所述的方法,还包括:
在包括应用服务器的一台或多台计算机处还提供工作管理器;并且
其中,由所述分区知晓容器将与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处包括:由所述分区知晓容器将指令传递到所述工作管理器,以便把与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处。
11.根据权利要求7到9中的任一项所述的方法,其中,所述目标分区是全局分区,所述全局分区与所述域相关联。
12.根据权利要求7到9中的任一项所述的方法,其中,所述应用服务器包括多租户应用服务器环境,所述方法还包括:
将所述多个分区中的每个分区与不同租户相关联以供相应租户使用。
13.一种包括存储在其上的用于在应用服务器环境中确定分区标识符的指令的非瞬时性计算机可读存储介质,当由一台或多台计算机读取并执行时,所述指令使得所述一台或多台计算机实施以下步骤:
在一台或多台计算机处提供应用服务器,所述应用服务器实现软件应用的部署和执行,其中所述应用服务器与域配置相关联,所述域配置在运行时用于定义用于软件应用的执行的域,
能够在所述应用服务器内使用的多项可部署资源,
包括目标分区的多个分区,其中每个分区提供所述域的管理和运行时间细分,并且其中每个分区与分区标识符相关联,并且其中所述目标分区定义用于所述目标分区的可部署资源总集的配置数据的值并且将所述可部署资源总集绑定到用于所述目标分区的所定义的值,以及
组件调用情境管理器,所述组件调用情境管理器包括用于保持组件调用情境的堆栈;
在分区知晓容器处确定请求的目标资源包括在所述目标分区的所述可部署资源总集中;
在所述分区知晓容器处设定与所述目标分区的分区标识符相关联的组件调用情境;
由所述分区知晓容器执行以下操作之一:
通过将表示所述请求的组件调用情境推送到所述堆栈上而登记与所述目标分区的分区标识符相关联的组件调用情境;或者
通过从所述堆栈请求当前组件调用情境而在组件调用情境管理器处查找当前组件调用情境,其中查找所述当前组件调用情境包括:设定所述当前组件调用情境作为所述分区知晓容器内的情境。
14.根据权利要求13所述的非瞬时性计算机可读存储介质,其中,登记与所述目标分区的分区标识符相关联的所述组件调用情境包括:
在前端组件处接收包括目标信息的所述请求,所述目标信息表明所述目标分区;
其中将与所述目标分区的分区标识符相关联的组件调用情境推送到所述堆栈上包括通过所述分区知晓容器对所述组件调用情境管理器的应用程序接口进行调用。
15.根据权利要求14所述的非瞬时性计算机可读存储介质,其中,所述分区知晓容器被配置成:在将与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处之后,并且在请求完成之后,在所述组件调用情境管理器处取消登记与所述目标分区的分区标识符相关联的所述组件调用情境,所述取消登记包括:
由所述分区知晓容器通过应用程序接口在所述组件调用情境管理器处取消登记与所述目标分区的分区标识符相关联的所述组件调用情境。
16.根据权利要求13到15中的任一项所述的非瞬时性计算机可读存储介质,所述步骤还包括:
在包括应用服务器的一台或多台计算机处还提供工作管理器;并且
其中,由所述分区知晓容器将与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处包括:由所述分区知晓容器将指令传递到所述工作管理器,以便把与所述目标分区的分区标识符相关联的所述组件调用情境登记在所述组件调用情境管理器处。
17.根据权利要求13到15中的任一项所述的非瞬时性计算机可读存储介质,其中,所述目标分区是全局分区,所述全局分区与所述域相关联。
18.根据权利要求13到15中的任一项所述的非瞬时性计算机可读存储介质,其中,所述应用服务器包括多租户应用服务器环境,所述步骤还包括:
将所述多个分区中的每个分区与不同租户相关联以供相应租户使用。
19.一种用于在应用服务器环境中确定分区标识符的装置,所述装置包括用于执行根据权利要求7到12中的任一项所述的方法的部件。
CN201580051392.7A 2014-09-25 2015-09-25 用于在多租户应用服务器环境中确定分区标识符的系统和方法 Active CN107077383B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462055068P 2014-09-25 2014-09-25
US62/055,068 2014-09-25
PCT/US2015/052469 WO2016049582A1 (en) 2014-09-25 2015-09-25 System and method for determination of partition identifiers in a multitenant application server environment

Publications (2)

Publication Number Publication Date
CN107077383A CN107077383A (zh) 2017-08-18
CN107077383B true CN107077383B (zh) 2021-05-11

Family

ID=54337360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580051392.7A Active CN107077383B (zh) 2014-09-25 2015-09-25 用于在多租户应用服务器环境中确定分区标识符的系统和方法

Country Status (6)

Country Link
US (1) US10104011B2 (zh)
EP (1) EP3198427B1 (zh)
JP (1) JP6703527B2 (zh)
KR (1) KR102464337B1 (zh)
CN (1) CN107077383B (zh)
WO (1) WO2016049582A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10476938B2 (en) 2014-01-21 2019-11-12 Oracle International Corporation System and method for multitenancy store in a multitenant application server environment
US10474998B2 (en) 2014-01-21 2019-11-12 Oracle International Corporation System and method for messaging in a multitenant application server environment
US10187454B2 (en) 2014-01-21 2019-01-22 Oracle International Corporation System and method for dynamic clustered JMS in an application server environment
US10103946B2 (en) 2014-01-21 2018-10-16 Oracle International Corporation System and method for JMS integration in a multitenant application server environment
US9961011B2 (en) 2014-01-21 2018-05-01 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
US10873627B2 (en) 2014-06-23 2020-12-22 Oracle International Corporation System and method for supporting use of an in-memory data grid with a multitenant application server environment
US10027550B2 (en) 2014-06-23 2018-07-17 Oracle International Corporation System and method for multitenant-aware console for use in a multitenant application server environment
US9747137B2 (en) 2014-09-25 2017-08-29 Oracle International Corporation System and method for providing a partition file system in a multitenant application server environment
US10348565B2 (en) 2014-09-25 2019-07-09 Oracle International Corporation System and method for rule-based elasticity in a multitenant application server environment
US10462068B2 (en) 2014-09-25 2019-10-29 Oracle International Corporation System and method for tenant onboarding in a multitenant application server environment
CN107077383B (zh) * 2014-09-25 2021-05-11 甲骨文国际公司 用于在多租户应用服务器环境中确定分区标识符的系统和方法
US10382537B2 (en) 2014-09-25 2019-08-13 Oracle International Corporation System and method for use of a global runtime in a multitenant application server environment
EP3198426B1 (en) * 2014-09-26 2023-08-30 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US11057272B2 (en) 2014-09-26 2021-07-06 Oracle International Corporation System and method for transactions in a multitenant application server environment
US10091135B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for multi-tenancy enablement of enterprise java applications using resource proxies and application tenancy context
US10050903B2 (en) 2014-09-26 2018-08-14 Oracle International Corporation System and method for multi-tenancy enablement of enterprise JAVA (TM) applications using resource proxies and application tenancy context
US10250512B2 (en) 2015-01-21 2019-04-02 Oracle International Corporation System and method for traffic director support in a multitenant application server environment
US11233998B2 (en) 2015-05-29 2022-01-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
US11075799B2 (en) 2017-08-24 2021-07-27 Oracle International Corporation System and method for provisioning in a multi-tenant application server environment
CN110858846A (zh) * 2018-08-22 2020-03-03 京东方科技集团股份有限公司 资源配置方法、装置和存储介质
US11315041B1 (en) 2020-09-22 2022-04-26 Vignet Incorporated Machine learning with data sharing for clinical research data across multiple studies and trials
US11082487B1 (en) 2020-09-22 2021-08-03 Vignet Incorporated Data sharing across decentralized clinical trials using customized data access policies
CN112182375A (zh) * 2020-09-27 2021-01-05 中国建设银行股份有限公司 一种综合服务平台的需求响应方法、装置、介质及平台
US12007870B1 (en) 2022-11-03 2024-06-11 Vignet Incorporated Monitoring and adjusting data collection from remote participants for health research
US11790107B1 (en) 2022-11-03 2023-10-17 Vignet Incorporated Data sharing platform for researchers conducting clinical trials

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077383A (zh) * 2014-09-25 2017-08-18 甲骨文国际公司 用于在多租户应用服务器环境中确定分区标识符的系统和方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1421479A2 (en) * 2000-06-22 2004-05-26 Microsoft Corporation Distributed computing services platform
US7620703B1 (en) * 2000-08-10 2009-11-17 Koninklijke Philips Electronics N.V. Topical service provides context information for a home network
US7698276B2 (en) * 2002-06-26 2010-04-13 Microsoft Corporation Framework for providing a subscription based notification system
US7570943B2 (en) * 2002-08-29 2009-08-04 Nokia Corporation System and method for providing context sensitive recommendations to digital services
EP1599811A4 (en) * 2003-02-14 2008-02-06 Nervana Inc SYSTEM AND METHOD FOR SEMANTIC KNOWLEDGE, MANAGEMENT, ACQUISITION, EXCHANGE, DISCOVERY, DELIVERY AND PRESENTATION
WO2005036358A2 (en) * 2003-10-08 2005-04-21 Unisys Corporation Virtualization system for guest
US8869099B2 (en) * 2008-07-28 2014-10-21 Infosys Limited System and method of enabling multi-tenancy for software as a service application
CN102170457A (zh) * 2010-02-26 2011-08-31 国际商业机器公司 向应用的多租户提供服务的方法和装置
US8327441B2 (en) * 2011-02-17 2012-12-04 Taasera, Inc. System and method for application attestation
US8769071B2 (en) 2011-02-25 2014-07-01 Red Hat, Inc. Dynamic mapping of identifiers in a multi-tenant computing system
US9160749B2 (en) 2012-09-07 2015-10-13 Oracle International Corporation System and method for providing whitelist functionality for use with a cloud computing environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107077383A (zh) * 2014-09-25 2017-08-18 甲骨文国际公司 用于在多租户应用服务器环境中确定分区标识符的系统和方法

Also Published As

Publication number Publication date
US10104011B2 (en) 2018-10-16
KR102464337B1 (ko) 2022-11-07
KR20170059451A (ko) 2017-05-30
JP2017528845A (ja) 2017-09-28
CN107077383A (zh) 2017-08-18
EP3198427A1 (en) 2017-08-02
US20160094474A1 (en) 2016-03-31
EP3198427B1 (en) 2021-05-26
WO2016049582A1 (en) 2016-03-31
JP6703527B2 (ja) 2020-06-03

Similar Documents

Publication Publication Date Title
CN107077383B (zh) 用于在多租户应用服务器环境中确定分区标识符的系统和方法
US10873624B2 (en) System and method for use of a global runtime in a multitenant application server environment
US9973384B2 (en) System and method for enterprise java bean support in a multitenant application server environment
US10855620B2 (en) System and method for providing an end-to-end lifecycle in a multitenant application server environment
US10462068B2 (en) System and method for tenant onboarding in a multitenant application server environment
CN106575242B (zh) 用于在多租户应用服务器环境中支持命名空间的系统和方法
US10103946B2 (en) System and method for JMS integration in a multitenant application server environment
US9921775B2 (en) Memory management in a decentralized control plane of a computing system
US10050903B2 (en) System and method for multi-tenancy enablement of enterprise JAVA (TM) applications using resource proxies and application tenancy context
US10091135B2 (en) System and method for multi-tenancy enablement of enterprise java applications using resource proxies and application tenancy context
US10474998B2 (en) System and method for messaging in a multitenant application server environment
US10476938B2 (en) System and method for multitenancy store in a multitenant application server environment
US10051043B2 (en) System and method for JMX support in a multitenant application server environment
CN107533485B (zh) 用于对从多租户中间件应用调用的os程序进行多租户执行的系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant