JP2017528846A - マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法 - Google Patents

マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法 Download PDF

Info

Publication number
JP2017528846A
JP2017528846A JP2017516339A JP2017516339A JP2017528846A JP 2017528846 A JP2017528846 A JP 2017528846A JP 2017516339 A JP2017516339 A JP 2017516339A JP 2017516339 A JP2017516339 A JP 2017516339A JP 2017528846 A JP2017528846 A JP 2017528846A
Authority
JP
Japan
Prior art keywords
partition
tenant
lifecycle
runtime
resource group
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.)
Granted
Application number
JP2017516339A
Other languages
English (en)
Other versions
JP2017528846A5 (ja
JP6611798B2 (ja
Inventor
モルダニ,ラジブ
イスラム,ナズルル
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2017528846A publication Critical patent/JP2017528846A/ja
Publication of JP2017528846A5 publication Critical patent/JP2017528846A5/ja
Application granted granted Critical
Publication of JP6611798B2 publication Critical patent/JP6611798B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

実施形態に従うと、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法が本願明細書において記載される。ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。実施形態に従うと、エンドツーエンドライフサイクルインフラストラクチャは、マルチテナントアプリケーションサーバ環境内の異なるコンポーネントが自身のコンポーネントに特有のライフサイクル機能を提供するよう、ライフサイクルプラグインを使用することを可能にするプラグインベースのメカニズムを含む。実施形態に従うと、システムは、あるサービスのためのテナントを特定のパーティションにオンボードするのに使用され得るテナントオンボーディング機能のためのサポートを含む。実施形態に従うと、システムは、マルチテナントアプリケーションサーバ環境内のグローバルランタイムの使用をサポートする。

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
関連出願の優先権主張および相互参照
この出願は、「マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法(SYSTEM AND METHOD FOR PROVIDING END-TO-END LIFECYCLE IN A MULTITENANT APPLICATION SERVER ENVIRONMENT)」という名称を有する2014年9月25日に出願された米国仮出願番号第62/055,575号と、「マルチテナントアプリケーションサーバ環境におけるテナントオンボーディングのためのシステムおよび方法(SYSTEM AND METHOD FOR TENANT ONBOARDING IN A MULTITENANT APPLICATION SERVER ENVIRONMENT)」という名称を有する2014年9月25日に出願された米国仮出願番号第62/055,577号と、「マルチテナントアプリケーションサーバ環境におけるデータベースおよびアプリケーションサーバライフサイクルブラグインのためのシステムおよび方法(SYSTEM AND METHOD FOR DATABASE AND APPLICATION SERVER LIFECYCLE PLUGINS IN A MULTITENANT APPLICATION SERVER ENVIRONMENT)」という名称を有する2014年9月26日に出願された米国仮出願番号第62/055,856号と、「マルチテナントアプリケーションサーバ環境におけるグローバルランタイムのためのシステムおよび方法(SYSTEM AND METHOD FOR GLOBAL RUNTIME IN A MULTITENANT APPLICATION SERVER ENVIRONMENT)」という名称を有する2014年9月26日に出願された米国仮出願番号第62/056,427号とに対する優先権の利益を請求し、「アプリケーションサーバ、クラウド、または他の環境においてマルチテナンシをサポートするためのシステムおよび方法(SYSTEM AND METHOD FOR SUPPORTING MULTI-TENANCY IN AN APPLICATION SERVER, CLOUD, OR OTHER ENVIRONMENT)」という名称を有する2015年1月21日に出願された米国特許出願番号第14/601,883号に関連する。上記の出願の各々は本願明細書において参照により援用される。
発明の分野
本発明の実施形態は一般にアプリケーションサーバおよびクラウド環境に関し、特定的には、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクル、テナントオンボーディング(tenant onboarding)、またはグローバルランタイムを提供するためのシステムおよび方法に関する。
背景
アプリケーションサーバは、概して、ソフトウェアアプリケーションをデプロイして実行することができる管理されたコンピューティング環境を提供する。クラウドベースのコンピューティング環境は、クラウドによって提供される分散型リソース内でアプリケーションを実行して、当該分散型リソースを利用することを可能にする。このような環境は、多くのユーザまたはテナントをサポートすることができ、それらのうちのいくつかは、そのユーザまたはテナントに特有の特定条件を有する可能性がある。付加的なテナントがシステムに追加される場合、システムは、各テナントのニーズに対応することができなければならない。当該ニーズは必要に応じてテナントに他のシステムコンポーネントを関連付けることを含む。これらは、本発明の実施形態が使用可能となる環境のタイプのいくつかの例に該当する。
概要
実施形態に従うと、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法が本願明細書において記載される。ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。実施形態に従うと、エンドツーエンドライフサイクルインフラストラクチャは、マルチテナントアプリケーションサーバ環境内の異なるコンポーネントが自身のコンポーネントに特有のライフサイクル機能を提供するよう、ライフサイクルプラグインを使用することを可能にするプラグインベースのメカニズムを含む。実施形態に従うと、システムは、あるサービスのためのテナントを特定のパーティションにオンボードするのに使用され得るテナントオンボーディング機能のためのサポートを含む。実施形態に従うと、システムは、マルチテナントアプリケーションサーバ環境内のグローバルランタイムの使用をサポートする。
実施形態に従ったマルチテナントアプリケーションサーバ環境を示す図である。 実施形態に従ったマルチテナントアプリケーションサーバ環境をさらに示す図である。 実施形態に従ったマルチテナントアプリケーションサーバ環境をさらに示す図である。 実施形態に従ったマルチテナントアプリケーションサーバ環境をさらに示す図である。 実施形態に従ったマルチテナントアプリケーションサーバ環境をさらに示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるエンドツーエンドライフサイクルを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるエンドツーエンドライフサイクルイベント図を示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるエンドツーエンドライフサイクルトポロジを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境における別のエンドツーエンドライフサイクルトポロジを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するための方法のフローチャートを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるテナントオンボーディングを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるテナントオンボーディングをさらに示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境においてテナントオンボーディングを提供するための方法のフローチャートを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるライフサイクルプラグインを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるライフサイクルプラグインをさらに示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境においてライフサイクルプラグインをサポートするための方法のフローチャートを示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるグローバルランタイムの使用を示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境におけるグローバルランタイムの使用をさらに示す図である。 実施形態に従った、マルチテナントアプリケーションサーバ環境においてグローバルランタイムをサポートするための方法のフローチャートを示す図である。
詳細な説明
実施形態に従うと、マルチテナントアプリケーションサーバ環境におけるエンドツーエンドライフサイクルを提供するためのシステムおよび方法が本願明細書において記載される。ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーション(統合)を可能にする。
実施形態に従うと、エンドツーエンドライフサイクルインフラストラクチャは、マルチテナントアプリケーションサーバ環境内の異なるコンポーネントが自身のコンポーネントに特有のライフサイクル機能を提供するよう、ライフサイクルプラグインを使用することを可能にするプラグインベースのメカニズムを含む。
実施形態に従うと、システムは、あるサービスのためのテナントを特定のパーティションにオンボードするのに使用され得るテナントオンボーディング機能のためのサポートを含む。
実施形態に従うと、システムは、マルチテナントアプリケーションサーバ環境内のグローバルランタイムの使用をサポートする。
アプリケーションサーバ(たとえばマルチテナント(MT:Multi-Tenant))環境
図1は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す。
図1に示されるように、一実施形態に従うと、アプリケーションサーバ(たとえばマルチテナント(MT))環境100または他のコンピューティング環境は、ソフトウェアアプリケーションのデプロイメントおよび実行を可能にするものであって、アプリケーションサーバドメインを定義するためにランタイム時に用いられるドメイン102の構成を含み、当該ドメイン102の構成に従って動作するように構成することができる。
一実施形態に従うと、アプリケーションサーバは、ランタイム時に使用されるよう定義される1つ以上のパーティション104を含み得る。各々のパーティションは、グローバルユニークパーティション識別子(identifier:ID)およびパーティション構成に関連付けることができ、さらに、リソースグループテンプレートの参照126および/またはパーティション特有のアプリケーションもしくはリソース128とともに、1つ以上のリソースグループ124を含み得る。ドメインレベルのリソースグループ、アプリケーションおよび/またはリソース140も、任意にはリソースグループテンプレートの参照とともに、ドメインレベルで定義することができる。
各々のリソースグループテンプレート160は、1つ以上のアプリケーションA162、B164、リソースA166、B168および/または他のデプロイ可能なアプリケーションもしくはリソース170を定義することができ、リソースグループによって参照することができる。たとえば、図1に例示されるように、パーティション104におけるリソースグループ124は、リソースグループテンプレート160を参照する(190)ことができる。
一般に、システムアドミニストレータは、パーティションと、ドメインレベルリソースグループおよびリソースグループテンプレートと、セキュリティ領域(security realm)を定義し得る。その一方、パーティションアドミニストレータは、たとえば、パーティションレベルリソースグループを作成し、パーティションにアプリケーションをデプロイし、または、当該パーティションのために特定の領域を参照することによって、自身のパーティションの局面を定義し得る。
図2は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
図2に示されるように、一実施形態に従うと、パーティション202は、たとえば、リソースグループテンプレート210の参照206を含むリソースグループ205と、仮想ターゲット(たとえば仮想ホスト)情報207と、プラガブルデータベース(PDB:pluggable database)情報208とを含み得る。リソースグループテンプレート(たとえば210)は、たとえば、Java(登録商標)メッセージサーバ(JMS:Java Message Server)サーバ213、ストアアンドフォワード(SAF:store-and-forward)エージェント215、メールセッションコンポーネント216またはJavaデータベースコネクティビティ(JDBC:Java Database Connectivity)リソース217などのリソースとともに、複数のアプリケーションA211およびB212を定義することができる。
図2に例示されるリソースグループテンプレートが一例として提供される。他の実施形態に従うと、異なるタイプのリソースグループテンプレートおよび要素を提供することができる。
一実施形態に従うと、パーティション(たとえば202)内のリソースグループが、特定のリソースグループテンプレート(たとえば210)を参照する(220)と、パーティション特有の情報230(たとえば、パーティション特有のPDB情報)を示すために、特定のパーティションに関連付けられた情報を、参照されたリソースグループテンプレートと組み合わせて用いることができる。次いで、パーティション特有の情報は、パーティションによって使用されるリソース(たとえば、PDBリソース)を構成するようにアプリケーションサーバによって使用可能である。たとえば、パーティション202に関連付けられたパーティション特有のPDB情報は、そのパーティションによって使用されるべき適切なPDB238を備えたコンテナデータベース(CDB:container database)236を構成する(232)ようにアプリケーションサーバによって使用可能である。
同様に、一実施形態に従うと、特定のパーティションに関連付けられた仮想ターゲット情報を用いて、そのパーティションによって使用されるべきパーティション特有の仮想ターゲット240(たとえば、ユニフォームリソースロケータ(URL:uniform resource locator)(たとえば、http://baylandurgentcare.com)によってアクセス可能にすることができるbaylandurgentcare.com)を定義する(239)ことができる。
図3は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
一実施形態に従うと、config.xml構成ファイルなどのシステム構成を用いて、パーティションを定義する。当該パーティションは、そのパーティションに関連付けられたリソースグループについての構成エレメントおよび/または他のパーティションプロパティを含む。値は、プロパティ名/値の対を用いてパーティションごとに指定することができる。
一実施形態に従うと、複数のパーティションは、管理されたサーバ/クラスタ242内で、または、CDB243にアクセス可能でありかつウェブ層244を介してアクセス可能である同様の環境内で、実行することができる。これにより、たとえば、ドメインまたはパーティションを(CDBの)PDBのうち1つ以上のPDBに関連付けることが可能となる。
一実施形態に従うと、複数のパーティションの各々、この例においてはパーティションA250およびパーティションB260は、そのパーティションに関連付けられた複数のリソースを含むように構成することができる。たとえば、パーティションAは、アプリケーションA1 252と、アプリケーションA2 254と、JMS A 256と、さらには、PDB A259に関連付けられたデータソースA 257とをともに含むリソースグループ251を含むように構成することができる。この場合、パーティションは仮想ターゲットA 258を介してアクセス可能である。同様に、パーティションB 260は、アプリケーションB1 262と、アプリケーションB2 264と、JMS B 266と、さらには、PDB B 269に関連付けられたデータソースB 267とをともに含むリソースグループ261を含むように構成することができる。この場合、パーティションは仮想ターゲットB 268を介してアクセス可能である。
上述の例のうちいくつかはCDBおよびPDBの使用を例示しているが、他の実施形態に従うと、他のタイプのマルチテナントのデータベースまたは非マルチテナントのデータベースをサポートすることができる。この場合、特定の構成は、たとえば、スキーマを使用するかまたはさまざまなデータベースを使用することによって、各々のパーティションのために提供することができる。
リソース
一実施形態に従うと、リソースは、環境のドメインにデプロイすることができるシステムリソース、アプリケーションまたは他のリソースもしくはオブジェクトである。たとえば、一実施形態に従うと、リソースは、アプリケーション、JMS、JDBC、JavaMail、WLDFもしくはデータソースであり得るか、または、サーバ、クラスタもしくは他のアプリケーションサーバターゲットにデプロイすることができる他のシステムリソースもしくは他のタイプのオブジェクトであり得る。
パーティション
一実施形態に従うと、パーティションは、パーティション識別子(partition identifier:ID)および構成に関連付けられ得るドメインのうちランタイムおよび管理の区分またはスライスであるとともに、アプリケーションを含み得て、ならびに/または、リソースグループおよびリソースグループテンプレートを使用することによってドメイン全体に渡るリソースを参照し得る。
概して、パーティションは、それ自体のアプリケーションを含み、リソースグループテンプレートを介してドメイン全体に渡るアプリケーションを参照し、それ自体の構成を有し得る。パーティション可能なエンティティは、リソース、たとえば、JMS、JDBC、JavaMail、およびWLDFリソースや、他のコンポーネント、たとえばJNDIネームスペース、ネットワークトラフィック、ワークマネージャ、セキュリティポリシーおよび領域などを含み得る。マルチテナント環境のコンテキストにおいては、システムは、テナントに関連付けられたパーティションの管理およびランタイムのアスペクトへのアクセスをテナントに提供するように構成することができる。
一実施形態に従うと、パーティション内の各々のリソースグループは、任意には、リソースグループテンプレートを参照することができる。パーティションは、複数のリソースグループを有し得るとともに、それらの各々はリソースグループテンプレートを参照し得る。各々のパーティションは、パーティションのリソースグループが参照するリソースグループテンプレートにおいて指定されていない構成データについてのプロパティを定義することができる。これにより、パーティションが、リソースグループテンプレートで定義されたデプロイ可能なリソースをそのパーティションで使用されるべき特定の値にバインドするものとして機能することが可能となる。場合によっては、パーティションは、リソースグループテンプレートによって指定される構成情報を無効にすることができる。
一実施形態に従うと、パーティション構成は、たとえば、config.xml構成ファイルによって定義されるように、複数の構成エレメントを含み得る。複数の構成エレメントは、たとえば、「パーティション(partition)」(そのパーティションを定義する属性および子エレメントを含む);「リソースグループ(resource-group)」(パーティションにデプロイされるアプリケーションおよびリソースを含む);「リソースグループテンプレート(resource-group-template)」;(そのテンプレートによって定義されるアプリケーションおよびリソースを含む);「jdbcシステムリソース無効化(jdbc-system-resource-override)」(データベース特有のサービス名、ユーザ名およびパスワードを含む);ならびに、「パーティションプロパティ(partition-properties)」(リソースグループテンプレートにおいてマクロ置換のために使用可能なプロパティキー値を含む)を含む。
始動後、システムは、構成ファイルによって提供される情報を用いて、リソースグループテンプレートから各々のリソースについてのパーティション特有の構成エレメントを生成することができる。
リソースグループ
一実施形態に従うと、リソースグループは、名前付けされ完全に修飾されたデプロイ可能なリソースの集合であって、ドメインまたはパーティションのレベルで定義することができ、かつ、リソースグループテンプレートを参照することができる。リソースグループにおけるリソースは、完全に修飾されているものと見なされる。というのも、アドミニストレータが、それらのリソースを開始させるのに必要とされるかまたはそれらのリソースに接続するのに必要とされるすべての情報、たとえば、データソースに接続するためのクレデンシャル、またはアプリケーションについての目標情報、を提供しているからである。
システムアドミニストレータは、ドメインレベルで、またはパーティションレベルでリソースグループを公開することができる。ドメインレベルでは、リソースグループは、関連するリソースをグループ化するのに好都合な方法を提供する。システムは、グループ化されていないリソースと同じドメインレベルのリソースグループにおいて公開されたリソースを管理することができる。このため、リソースは、システム起動中に開始させたり、システムのシャットダウン中に停止させたりすることができる。アドミニストレータはまた、グループ内のリソースを個々に停止させるか、開始させるかまたは削除することができ、グループ上で動作させることによって暗黙的にグループ内のすべてのリソースに対して機能することができる。たとえば、あるリソースグループを停止させることにより、まだ停止されていないグループにおけるすべてのリソースを停止させ、リソースグループを始動させることにより、まだ始動させていないグループにおけるいずれのリソースも始動させ、リソースグループを削除することにより、グループに含まれるすべてのリソースを削除する。
パーティションレベルでは、システムまたはパーティションアドミニストレータは、任意のセキュリティ制限下で、或るパーティションにおいて0個以上のリソースグループを構成することができる。たとえば、SaaSユースケースにおいては、さまざまなパーティションレベルのリソースグループは、ドメインレベルのリソースグループテンプレートを参照することができる。PaaSユースケースにおいては、リソースグループテンプレートを参照しないが代わりにそのパーティション内でのみ利用可能にされるべきアプリケーションおよびそれらの関連するリソースを表わすパーティションレベルのリソースグループを作成することができる。
一実施形態に従うと、リソースグループ化を用いることで、アプリケーションと、それらアプリケーションがドメイン内で別個の管理ユニットとして使用するリソースとをともにグループ化することができる。たとえば、以下に記載される医療記録(MedRec)アプリケーションにおいては、リソースグループ化によりMedRecアプリケーションおよびそのリソースが定義される。複数のパーティションは、各々がパーティション特有の構成情報を用いて、同じMedRecリソースグループを実行することができ、このため、各々のMedRecインスタンスの一部であるアプリケーションが各々のパーティションにとって特有のものにされる。
リソースグループテンプレート
一実施形態に従うと、リソースグループテンプレートは、リソースグループから参照することができドメインレベルで定義されるデプロイ可能なリソースの集合であり、そのリソースを起動するのに必要な情報のうちいくらかは、パーティションレベル構成の仕様をサポートするように、テンプレート自体の一部として記憶されない可能性がある。ドメインは、リソースグループテンプレートをいくつ含んでもよく、それらの各々は、たとえば、1つ以上の関連するJavaアプリケーションと、それらのアプリケーションが依存するリソースとを含み得る。このようなリソースについての情報のうちのいくらかは、すべてのパーティションにわたって同じであってもよく、他の情報はパーティションごとに異なっていてもよい。すべての構成がドメインレベルで指定される必要はなく、代わりに、パーティションレベル構成が、マクロまたはプロパティ名/値の対を使用することによってリソースグループテンプレートで指定することができる。
一実施形態に従うと、特定のリソースグループテンプレートは、1つ以上のリソースグループによって参照可能である。概して、任意の所与のパーティション内では、リソースグループテンプレートは一度に1つのリソースグループによって参照することができる。すなわち、同じパーティション内で複数のリソースグループによって同時に参照することはできない。しかしながら、異なるパーティションにおける別のリソースグループによって同時に参照することができる。リソースグループを含むオブジェクト、たとえばドメインまたはパーティションは、プロパティ名/値の割当てを用いて、任意のトークンの値をリソースグループテンプレートで設定することができる。システムは、参照するリソースグループを用いてリソースグループテンプレートを起動させると、それらのトークンを、リソースグループが含むオブジェクトにおいて設定された値と置換えることができる。場合によっては、システムはまた、静的に構成されたリソースグループテンプレートおよびパーティションを用いて、パーティション/テンプレートの組合せごとにランタイム構成を生成することができる。
たとえば、SaaSユースケースにおいては、システムは、同じアプリケーションおよびリソースを複数回起動することができるが、そのうちの1回は、それらを用いるであろう各パーティションごとに起動され得る。アドミニストレータがリソースグループテンプレートを定義すると、これらは、どこか他のところで提供されるであろう情報を表わすためにトークンを用いることができる。たとえば、CRM関連のデータリソースに接続する際に使用されるユーザ名は、リソースグループテンプレートにおいて\${CRMDataUsername}として示すことができる。
テナント
一実施形態に従うと、マルチテナント(MT)アプリケーションサーバ環境などのマルチテナント環境においては、テナントは、1つ以上のパーティションおよび/もしくは1つ以上のテナント認識型アプリケーションによって表現可能であるエンティティ、または1つ以上のパーティションおよび/もしくは1つ以上のテナント認識型アプリケーションに関連付けることができるエンティティである。
たとえば、テナントは、別個のユーザ組織、たとえばさまざまな外部会社、特定の企業内のさまざまな部門(たとえばHRおよび財務部)などを表わすことができ、それら各々は、異なるパーティションに関連付けることができる。テナントのグローバルユニークアイデンティティ(テナントID)は、特定の時点において特定のユーザを特定のテナントに関連付けるものである。システムは、たとえば、ユーザアイデンティティの記録を参照することによって、ユーザアイデンティティから、特定のユーザがどのテナントに属しているかを導き出すことができる。ユーザアイデンティティにより、ユーザが実行することを認可されているアクションをシステムが実施することが可能となる。ユーザアイデンティティは、ユーザがどのテナントに属し得るかを含むが、これに限定されない。
一実施形態に従うと、システムは、互いに異なるテナントの管理およびランタイムを分離することを可能にする。たとえば、テナントは、それらのアプリケーションのいくつかの挙動、およびそれらがアクセスできるリソースを構成することができる。システムは、特定のテナントが別のテナントに属するアーティファクトを確実に管理することができないようにし、かつ、ランタイム時に、特定のテナントの代わりに機能するアプリケーションがそのテナントに関連付けられたリソースのみを参照するが他のテナントに関連付けられたリソースは参照しないことを確実にすることができる。
一実施形態に従うと、テナント非認識型アプリケーションは、アプリケーションが応答している要求をどんなユーザが提示したかにかかわらず、アプリケーションが用いる如何なるリソースにもアクセス可能となるように明示的にテナントに対処する論理を含まないものである。対照的に、テナント認識型アプリケーションは、テナントに明示的に対処する論理を含む。たとえば、ユーザのアイデンティティに基づいて、アプリケーションは、ユーザが属するテナントを導き出すことができ、テナント特有のリソースにアクセスするためにその情報を用いることができる。
一実施形態に従うと、システムは、テナント認識型となるように明示的に書き込まれたアプリケーションをユーザがデプロイすることを可能にし、これにより、アプリケーション開発者は、現在のテナントのテナントIDを取得することができる。次いで、テナント認識型アプリケーションは、このテナントIDを用いて、アプリケーションの単一のインスタンスを用いている複数のテナントを処理することができる。
たとえば、単一の診療室または病院をサポートするMedRecアプリケーションは、2つの異なるパーティションまたはテナント(たとえばBayland Urgent CareテナントおよびValley Healthテナント)に対して公開することができ、その各々は、基礎をなすアプリケーションコードを変更することなく、別個のPDBなどの別個のテナント特有のリソースにアクセスすることができる。
例示的なドメイン構成およびマルチテナント環境
一実施形態に従うと、アプリケーションは、ドメインレベルでリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されているかもしくはドメインに範囲指定されているリソースグループにデプロイすることができる。アプリケーション構成は、アプリケーション毎またはパーティション毎に指定されたデプロイメントプランを用いて無効化することができる。デプロイメントプランはまた、リソースグループの一部として指定することができる。
図4は、一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す。
一実施形態に従うと、システムがパーティションを始動させると、当該システムは、提供された構成に従って、それぞれのデータベースインスタンスに対して、各パーティションごとに1つずつ、仮想ターゲット(たとえば仮想ホスト)および接続プールを作成する。
典型的には、各々のリソースグループテンプレートは、1つ以上の関連するアプリケーションと、それらアプリケーションが依存するリソースとを含み得る。各々のパーティションは、それが参照するリソースグループテンプレートにおいて指定されていない構成データを提供することができるが、これは、場合によっては、リソースグループテンプレートによって指定されるいくつかの構成情報を無効にすることを含めて、パーティションに関連付けられた特定値に対するリソースグループテンプレートにおけるデプロイ可能なリソースのバインディングを行うことによって、実行可能である。これにより、システムは、各々のパーティションが定義したプロパティ値を用いて、パーティション毎にリソースグループテンプレートによってさまざまに表わされるアプリケーションを始動させることができる。
いくつかのインスタンスにおいては、パーティションが含み得るリソースグループは、リソースグループテンプレートを参照しないか、または、それら自体のパーティション範囲指定されたデプロイ可能なリソースを直接定義する。パーティション内で定義されるアプリケーションおよびデータソースは、概して、そのパーティションにとってのみ利用可能である。リソースは、パーティション:<partitionName>/<resource JNDI name>、またはドメイン:<resource JNDI name>を用いて、パーティションの中からアクセスすることができるようにデプロイ可能である。
たとえば、MedRecアプリケーションは、複数のJavaアプリケーション、データソース、JMSサーバおよびメールセッションを含み得る。複数のテナントのためにMedRecアプリケーションを実行させるために、システムアドミニストレータは、テンプレートにおけるそれらのデプロイ可能なリソースを公開している単一のMedRecリソースグループテンプレート286を定義することができる。
ドメインレベルのデプロイ可能なリソースとは対照的に、リソースグループテンプレートにおいて公開されたデプロイ可能なリソースは、テンプレートにおいて完全には構成されない可能性があるか、または、いくつかの構成情報が不足しているので、そのままでは起動させることができない。
たとえば、MedRecリソースグループテンプレートは、アプリケーションによって用いられるデータソースを公開し得るが、データベースに接続するためのURLを指定しない可能性がある。さまざまなテナントに関連付けられたパーティション、たとえば、パーティションBUC−A290(Bayland Urgent Care:BUC)およびパーティションVH−A292(Valley Health:VH)は、各々がMedRecリソースグループテンプレートを参照する(296,297)MedRecリソースグループ293,294を含むことによって、1つ以上のリソースグループテンプレートを参照することができる。次いで、当該参照を用いて、Bayland Urgent Careテナントによって使用されるBUC−Aパーティションに関連付けられた仮想ホストbaylandurgentcare.com 304と、Valley Healthテナントによって使用されるVH−Aパーティションに関連付けられた仮想ホストvalleyhealth.com308とを含む各々のテナントのための仮想ターゲット/仮想ホストを作成する(302,306)ことができる。
図5は、一実施形態に従った例示的なマルチテナント環境をさらに示す。図5に示されるように、2つのパーティションがMedRecリソースグループテンプレートを参照している上述の例から引続いて、一実施形態に従うと、サーブレットエンジン310は、この例においてはBayland Urgent Careの医師テナント環境320およびValley Healthの医師テナント環境330といった複数のテナント環境をサポートするために用いることができる。
一実施形態に従うと、各々のパーティション321および331は、そのテナント環境についての入来トラフィックを受入れるための異なる仮想ターゲットと、異なるURL322,332とを定義することができる。異なるURL322,332は、パーティションと、この例ではBayland Urgent Careデータベースまたはvalley healthデータベースを含むそれぞれのリソース324,334とに接続するためのものである。同じアプリケーションコードが両方のデータベースに対して実行され得るので、データベースインスタンスは互換性のあるスキーマを用いることができる。システムがパーティションを始動させると、当該システムは、それぞれのデータベースインスタンスに対する接続プールおよび仮想ターゲットを作成することができる。
エンドツーエンドライフサイクル
実施形態に従うと、本願明細書において、マルチテナントアプリケーションサーバ環境におけるエンドツーエンドライフサイクルを提供するためのシステムおよび方法が記載される。ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。
さまざまな実施形態に従うと、本願明細書において提供されるエンドツーエンドライフサイクルプロセスの記載のうちのいくつかは以下の用語を使用する。
テナンシ(Tenancy):限定された持続期間の間テナントによって典型的に得られる、当該テナントがシステムの挙動をそれらのニーズに適するようにある程度までカスタマイズすることを可能にするようにシステムのコンポーネントを使用する権利。
テナンシコンテキスト(Tenancy context):請求書を生成するといったようなテナント特有の挙動をシステムが提供するためにテナンシコンテキストを使用することができるようにシステムのテナンシを決定するために使用される、たとえばセキュリティ、命名またはクラスローディング情報といったコンテキスト情報。
パーティションコンテキスト(Partition context):システムがプラットフォームテナンシを決定するために使用し得る、実行の現在のスレッドに関連付けられるパーティション識別子(ID)。
リソーステナンシ(Resource tenancy):オラクルフュージョンミドルウェア(FMW: Fusion Middleware)/フュージョンアプリケーション(FA:Fusion Application)の実施形態を説明する際に主に用いられる「テナンシ」と同様のプロパティ。
MTアドミンコード(MT admin code):任意のテナントがマルチテナントシステムに対してオンボードされる前にデプロイおよび始動されるとともに、システムのライフサイクル管理およびテナントランタイムを担うコード。
MTアドミンランタイム(MT admin runtime):MTアドミンコードのランタイム表示。
テナントコード:あるテナントについて具体的にデプロイされるコード。
テナントランタイム:テナントコードのランタイム表示。
レイヤードプロダクト(Layered product):マルチテナントアプリケーションサーバ環境と共同動作するか、または、そうでなければマルチテナントアプリケーションサーバ環境を利用し得るソフトウェアプロダクト。その例には、FMWおよびFAファミリのプロダクトが含まれ得る。
図6は、実施形態に従ったマルチテナントアプリケーションサーバ環境におけるエンドツーエンドライフサイクルを示す。
図6に示されるように、実施形態に従うと、システムはライフサイクルコーディネーションフレームワーク400を含み得る。ライフサイクルコーディネーションフレームワーク400は、ライフサイクルマネージャ(LCM)410およびライフサイクルインターフェイス411を含み、これにより、マルチテナントアプリケーションサーバ環境内での使用のために、たとえばトラフィックディレクタコンポーネント414、データベースコンポーネント415または他のタイプのコンポーネント416といった、パーティションおよび他のコンポーネントのライフサイクル管理412が可能になる。
たとえば、システムは、アプリケーションサーバ(たとえばWebLogic,WLS)コンポーネントがマルチテナント認識型となるとともにアプリケーションサーバ内のパーティションの使用をサポートすることを可能にすることに加えて、他のコンポーネントおよびプロダクトがアプリケーションサーバパーティションと共同動作し得ることを保証することができなければならない。たとえば、データベース(たとえばオラクルデータベース(Oracle Database),DB)およびトラフィックディレクタまたはロードバランサ(たとえばオラクルトラフィックディレクタ(Oracle Traffic Director),OTD)のインスタンスが適切に構成され、その後同様にそれらのパーティションをサポートし得ることを保証することができなければならない。
これに対応するために、実施形態に従うと、システムは、アプリケーションサーバとの使用のためにパーティションを作成する一部として、アプリケーションサーバパーティションを作成することに加えて、アプリケーションサーバパーティションに最終的に接続(wired up)されることになる他のコンポーネントにおけるランタイムのスライスの作成を可能にする。その結果は、たとえばOTDレイヤーからデータベースレイヤーまでアプリケーションが完全に自身の環境内に実行され得るシステムである。
実施形態に従うと、エンドツーエンドライフサイクルインフラストラクチャは、マルチテナントアプリケーションサーバ環境内の複数の異なるコンポーネントが自身のコンポーネントに特有のライフサイクル機能を提供するよう、ライフサイクルプラグインを使用することを可能にするプラグインベースのメカニズムを含む。パーティションと接続されるように利用可能になる任意のコンポーネントは、自身のプラグインを提供し得る。ライフサイクルオペレーションがプラグインインターフェイスを呼び出し、これにより、たとえば、トラフィックディレクタインスタンスの作成またはデータベースインスタンスの作成といったコンポーネントの実際の作成を適切なように実行する。
実施形態に従うと、アプリケーションサーバおよび/またはコンポーネントパーティションを作成することに加えて、各テナントは、さらに以下に記載されるように環境に関連付けられ得る。当該環境は、パーティションのテナントが自身のアプリケーションを実行し得るコンテナまたはコンテナオブジェクトとして機能する。
たとえば、実施形態に従うと、ライフサイクルマネージャおよびそのプラガブル拡張可能メカニズムが、ミドルウェアまたはデータベーススタック内のコンポーネントの作成をサポートし、かつ、データソースを使用するためにアプリケーションサーバ(たとえばWLS)パーティションを接続することといったように、それらのコンポーネントの接続をサポートするために使用され得る。その後、接続されたコンポーネントの集合がパーティションまたはテナントの環境内に提供され得る。
別の例として、実施形態に従うと、システムは、アプリケーションサーバパーティションがデータベースに関連付けられるとともにライフサイクル中に作成されることを可能にし得、これにより、アプリケーションサーバパーティションにおいてデータソースを作成し、パーティションまたはテナントの環境内で使用可能にする。
同様に、実施形態に従うと、ライフサイクルマネージャは、クラスタにおいて実行されるWLSパーティションがOTDインスタンスによりフロントエンド(front-ended)となり、テナント環境内の使用のために、ライフサイクルマネージャが当該パーティションのためのOTDインスタンスの作成と、WLSパーティションに対するその接続とを可能にするように、パーティションのためのOTDルーティングをセットアップするために使用され得る。当該セットアップは、パーティションとの使用のためのURIまたはホスト名をセットアップすることを含む。
エンドツーエンドライフサイクル管理によって提供される付加的な利点は、アウトオブバンド(out-of-band)で変化を検出する能力を含む。
たとえば、アプリケーションサーバパーティションに対する更新は、そのパーティションに接続される他のコンポーネントに送られ得る。別の例として、新しいリソースグループが新しいターゲットに関連付けられている場合、当該更新された情報は、パーティションにおける変化が任意の他の接続されたコンポーネントに伝播されるように、他のレイヤードプロダクトに送られ得る。
実施形態に従うと、ライフサイクルのオーケストレーションは、さまざまなコンポーネントまたはランタイムのスライスを作成するためにさまざまな態様で実行され得る。たとえば、システムは個々に、ライフサイクルマネージャへのRESTコールとしてパーティション、PDB、および、OTDインスタンスを作成し得、これにより、ライフサイクルマネージャに、たとえば、WLSパーティション、OTDインスタンス、または他のコンポーネントのスライスを作成させる。オーケストレーション中に、障害が発生すれば、システムは、たとえばRESTエンドポイントをそのアーティファクトの関連付けおよびオーケストレーションのために再び試みることによって、障害に対応し得る。
例示的なエンドツーエンドライフサイクルのユースケースは、クラスタ内においてアドミンサーバ上にライフサイクルマネージャを提供すること、および/または、クラスタ内において管理されたサーバ上に他のライフサイクルマネージャを提供することを含む。たとえば、単一のドメインにおいて、単一のライフサイクルマネージャがアドミンサーバ上に提供され得る。ライフサイクルマネージャがたとえば複数のサーバ上で複数のOTDインスタンスを管理することができる複数のドメインまたは高可用性要件モデルの場合、ライフサイクルマネージャは、ロードバランサによってフロントエンドとされるクラスタ内で実行され得、そのドメインからライフサイクルマネージャは複数のランタイムを管理し得る。
実施形態に従うと、エンドツーエンドライフサイクル構成情報は、たとえば単一のドメインモードにおいてはXMLファイルに保存され得、または、高可用性モードにおいてはより典型的にはデータベースに保存され得る。
実施形態に従うと、ライフサイクルマネージャは、登録ランタイムとの使用のためにコールをたとえばRESTを介して受信することに応答して、コールの詳細から意図されるパーティションを決定し、そのコールが作成することを試みているものに基づいて、1つ以上の適切なプラグインを呼び出すことにより、自身が特定のパーティションに代わって動作しているということを認識し得る。
たとえば、コールがパーティションのためにPDBを作成することに向けられる場合、ライフサイクルマネージャは、データベースライフサイクルプラグインを呼び出すことにより応答し得るか、または、コールがパーティションについてOTDインスタンスを作成することに向けられる場合、ライフサイクルマネージャはOTDライフサイクルプラグインなどを呼び出すことにより応答し得る。
単一ドメイン複数パーティション環境において、ライフサイクルマネージャ機能を提供していたアドミンサーバが障害を起こした場合、システムは、従来のアプリケーションサーバ(たとえばWLS)サーバ環境のように動作し続けることができるが、その運用および管理機能がある期間の間に無効にされる場合がある。
実施形態に従うと、当該システムは、サービスとしてコントラクト(contract)およびそれらのコントラクトのインプリメンテーションをルックアップするために依存性注入メカニズム(dependency injection mechanism)としてHK2を使用し得る。たとえば、HK2を使用して、サービスはコンポーネントへ注入可能になり得、ひとたび注入されると、それらのHK2オブジェクトは他のクラスの依存性を満たし得る。ライフサイクルプラグインはHK2サービスとして実現され得、ランタイムにてそれらのコントラクトを実現し得る。システムは、サービスとしてプラグインされている適切なプラグインを発見するようコントラクトをルックアップし得る。
たとえば、実施形態に従うと、システムは、パーティションプラグインコントラクト、ランタイムプラグイン、または、他のコントラクトを認識し得る。各パーティションまたは他のプラグインは、そのコンポーネント内のパーティションまたはパーティションのスライスをどのように作成するかについての理解により、構成され得る。そのため、たとえば、データベースパーティションプラグインは、データベースのスライスを作成するためにどのように動作するかについての理解により、構成され得る。
実施形態に従うと、システムはコール中に必要とされるタイプオブサービス(type of service)(たとえば「type=database」)に関して指示を受信し得、この場合、使用されるべき適切なデータベースプラグインを決定し得る。
同様に、実施形態に従うと、アプリケーションサーバ(たとえばWLS)およびトラフィックディレクタ(たとえばOTD)コンポーネントのために、プラグインは、サービスとして実現され得るそれらのコンポーネントについて提供され得、その後、パーティションの作成中または構成中に使用される。
HK2のようなメカニズムはさらに、たとえばデフォルトストアまたは永続性タイプによってXMLに格納される構成モデルを定義するために使用され得る構成管理のためのサポートを提供する。
実施形態に従うと、構成オブジェクトは、パーティションとの使用のための特定のコンポーネントについて属性を定義するよう使用され得る。これらのオブジェクトは同様に注入可能であり、これにより、たとえば構成オブジェクトを注入しそのパーティションについて情報をルックアップすることによって所与のパーティションの構成情報をルックアップすることが可能になる。
環境
実施形態に従うと、異なるコンポーネントにわたるパーティションのセットは、テナントのニーズを満たすまとまりのある単位(cohesive unit)を形成するよう、環境として一緒にリンクされ得る。環境は、各タイプの1つより多いパーティションを有し得るが、典型的に、各タイプのパーティションのうちの1つのみを有することになる。たとえば、FAシナリオにおいて、マルチドメイントポロジにおけるドメインの各々からの1つより多いWLSパーティションが存在し得る。そのようなシナリオにおいて、サポートされなければならないWLSおよびOTDとデータベースとの間に複数の関連性があり得る。
コンポーネント/ランタイム
実施形態に従うと、コンポーネントまたはランタイムは、たとえばOTD、WLS、コヒーレンスまたはデータベースコンポーネントといったソフトウェアコンポーネントである。他の実施形態に従うと、付加的なタイプのソフトウェアコンポーネントもサポートされ得る。
ライフサイクルマネージャ
実施形態に従うと、ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。ライフサイクルマネージャは、ライフサイクル構成を作成し、それらの構成を更新し、それらの構成を閲覧し、環境にわたってそれらの構成を破棄するよう、クライアントに対してローカルAPIおよび/またはRESTアクセスを提供するライブラリとして実現され得る。
ライフサイクルプラグイン
実施形態に従うと、ライフサイクルプラグインは、ライフサイクルマネージャと、たとえばOTD、WLS、コヒーレンスまたはデータベースコンポーネントといったコンポーネントとの間のブリッジを提供するソフトウェアモジュールである。ライフサイクルプラグインは、HK2サービスとしてランタイムプラグインおよびパーティションプラグイン(サポートされている場合)インターフェイスを実現するクラスを含み得、これにより、ライフサイクルプラグインが、構成変更トランザクションおよび通知イベントに参加し、コンポーネントにおいてそのアクティビティを反映するよう適切などのようなアクションでも実行することを可能になる。プラグインAPIは一般に、ランタイムまたはパーティションについて実際のライフサイクルオペレーションを実行するために使用される下位プロトコルを認識しない(agnostic)。プラグインのインプリメンテーションは、必要なオペレーションを実行するためにどのようにランタイムに接続するかを選択し得る。たとえば、実施形態に従うと、quiesce、scaleUpまたはscaleDownのようなオペレーションがランタイムマネージャを介してランタイム上で開始されると、ランタイムタイプに対応するランタイムプラグインのインプリメンテーションがHK2を介してルックアップされ得、適切なアクションを行うために、ランタイムプラグイン(たとえばRuntimePlugin)インプリメンテーションの対応するメソッドがランタイムプラグインについて呼び出される。
クライアント
実施形態に従うと、クライアントとは、たとえばREST APIを介してライフサイクルマネージャと相互作用するライフサイクルマネージャの任意のクライアントを指し、または、埋込み型の場合にはJava APIを介してライフサイクルマネージャと相互作用するライフサイクルマネージャの任意のクライアントを指す。クライアントの例は、オラクルフュージョンミドルウェアコントロール(FMWC:Fusion Middleware Control)およびエンタープライズマネージャクラウド制御(EMCC:Enterprise Manager Cloud Control)、ならびに、カールベースのスクリプト(curl-based script)を含む。実施形態に従うと、ライフサイクルマネージャREST APIは、コンポーネントにわたってパーティション構成をプロビジョニングおよび更新する場合、エンタープライズマネージャ(Enterprise Manager)のようなプロダクト内で使用され得る。
ライフサイクルユースケース
実施形態に従うと、以下はライフサイクルユースケースの例である。1.パーティションの作成、削除および更新を含むコンポーネントについてのパーティションCRUDオペレーション。
2.ランタイムの登録、登録されたランタイムに対する更新、およびランタイムの登録抹消を含む、コンポーネントのためのランタイムオペレーション。
3.2つのパーティションを関連付けることによりランタイムの2つのスライス(たとえばWLSを有するデータベースまたはWLSを有するOTD)をこれら2つが一緒に使用され得るように接続するような、異なるコンポーネントにわたるパーティションの関連付け。
ライフサイクルインタラクション
図7は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルイベント図を示す。
図7に示されるように、実施形態に従うと、ライフサイクルマネージャは、アプリケーションサーバ(たとえばWLS)ライフサイクルプラグイン420、トラフィックディレクタ(たとえばOTD)ライフサイクルプラグイン422、データベース(たとえばオラクルデータベース)ライフサイクルプラグイン424、および/または、インメモリデータグリッド(たとえばコヒーレンス)ライフサイクルプラグイン426といった、1つまたは複数のプラグインに関連付けられるコンポーネントのオーケストレーションを可能にし得る。
実施形態に従うと、ライフサイクルマネージャは、環境430を作成する要求を(任意の関連付けられるメタデータと一緒に)受信することに応答して、さまざまなコンポーネントパーティションの作成および関連付けをオーケストレーションし、その後使用するべきテナントについての環境432を返す。
図8は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルトポロジを示す。
図8に示されるように、実施形態に従うと、簡易または単一のドメイン使用は、1つ以上のクライアント440、アドミンサーバ450、管理されるサーバ452(ここではMS1、MS2およびMS3として示される)のクラスタ、データベース454、および、トラフィックディレクタ/ロードバランサ460を含み得る。その場合、ライフサイクルマネージャは、OTD、データベースおよびコヒーレンスのような他のコンポーネントと共に、自身が管理するドメインにおいて実行されている。
このシナリオにおいて、エンドツーエンドライフサイクル構成はXMLファイルに格納され得、ランタイムにおいてテナンシを確立するために、管理されているサーバ上で利用可能になる。ライフサイクルマネージャは、アドミンサーバ上で実行され任意の付加的なセットアップを必要としないいくつかのアプリケーションサーバ環境において追加設定なし(out-of-the-box)で有効化され得る。
図9は、実施形態に従った、マルチテナントアプリケーションサーバ環境において別のエンドツーエンドライフサイクルトポロジを示す。
図9に示されるように、ライフサイクルマネージャが多くのコンポーネントを管理しており高可用性要件を有し得るエンタープライズデプロイメントにおいてエンタープライズマネージャ(EM:Enterprise Manager)を使用するFAプロビジョニングのようなより複雑な実施形態およびシナリオに従うと、ライフサイクルマネージャは、各々がライフサイクルマネージャ機能473,475,477を有する複数のEM/FAプロビジョニングインスタンス472,474,476として、別個のライフサイクルマネージャクラスタ/ドメイン471において実行され得る。
実施形態に従うと、ライフサイクルマネージャドメインは、管理されたサーバ(ここでMS1、MS2およびMS3として示される)のクラスタ492を有するドメイン490といった他のドメインまたはコンポーネントを管理するために使用され得る。
このシナリオにおいて、ライフサイクルマネージャはライフサイクルマネージャクラスタにおける管理されたサーバ上で実行され得、エンドツーエンドライフサイクル構成はデータベースにおいて永続化され得るので、情報に対するアクセスを必要とする任意のドメインまたはランタイムはその情報を得るためにデータベースにアクセスすることができる。
上記のトポロジの両方において、ライフサイクル内において管理され得るコンポーネントは、ライフサイクルマネージャに登録されるライフサイクルプラグインによって決定されることになる。ライフサイクルマネージャは、構成および作成に加えて、適切なようにランタイムのスケーリングのための弾力性(エラスティシティ)機能をサポートし得る。
ライフサイクルランタイム
実施形態に従うと、ライフサイクルランタイム(たとえばLifecycleRuntime)は、WLS、OTDまたはデータベースのようなコンポーネントまたは管理されるサービスを表わす。ライフサイクルマネージャは、ランタイムプラグインのインスタンスがコンポーネントによって実現される場合、ライフサイクルランタイムを管理し得る。ランタイムプラグインは、ライフサイクルマネージャを介して管理されているランタイム上で実行され得る作成オペレーション、削除オペレーション、更新オペレーション、スケーリングアップオペレーション、スケーリングダウンオペレーション、および静止(quiescing)オペレーションといったオペレーションを可能にするインプリメンテーションを提供する。ランタイムは、ライフサイクルマネージャを介して作成され得るか、または、ランタイムマネージャにおけるレジスタランタイム(たとえばregisterRuntime)メソッドを介してライフサイクルマネージャによる使用のためにアウトオブバンドで作成されていれば、ライフサイクルマネージャに登録され得るかのいずれかである。
ランタイム上で任意のオペレーションを実行するためには、ランタイムのインスタンスがルックアップされなければならない。実施形態に従うと、ライフサイクルランタイムのインスタンスは、以下に記載されるように所与のランタイムタイプについてランタイムマネージャを使用してルックアップされ得る。パーティション(ランタイムのスライス)の使用をサポートする管理されたサービスを表わすライフサイクルランタイムは、ライフサイクルランタイム上でのそのパーティションについてのCRUDオペレーションを可能にする。
実施形態に従うと、ライフサイクルランタイムをルックアップした後にパーティションを作成するために、選択されたランタイム上でパーティションを作成するよう、ライフサイクルランタイムのパーティション作成(たとえばcreatePartition)メソッドが使用され得る。パーティションが作成される態様は、ライフサイクルランタイムのためのパーティションプラグインがランタイムタイプについてHK2サービスとしてルックアップされ、パーティションプラグイン上の対応する作成メソッドが呼び出されるような態様である。
ランタイムマネージャ
実施形態に従うと、ランタイムマネージャ(たとえばRuntimeManager)は、ランタイムを管理するために使用されるシングルトンHK2サービス(singleton HK2 service)として提供され得る。ランタイムマネージャは、そのJVM上のすべてのランタイムのライフサイクルを管理することになる1つのJava仮想マシン(JVM:Java virtual machine)ごとに提供され得る。ランタイムは、ランタイムマネージャを使用して作成または登録され得る。ランタイムマネージャはさらに、ランタイムの作成、削除、更新、スケールアップ、スケールダウンおよび静止(クエーシング)を行うオペレーションを提供する。ランタイムマネージャは、そのランタイムタイプについてHK2サービスとしてランタイムプラグインをルックアップし、プラグイン上で対応するオペレーションを呼び出す。
実施形態に従うと、ひとたびランタイムマネージャが所与のランタイムタイプについてルックアップされると、そのランタイムマネージャのスケールアップおよびスケールダウンオペレーションが、特定されたランタイムについて呼び出され得る。ランタイムマネージャは、サービスについて対応するランタイムプラグインをルックアップし、スケールアップまたはスケールダウンオペレーションを呼び出す。このランタイムサポートは、エラスティックなユースケースに対応するために特に有用である。
実施形態に従うと、ランタイムマネージャは、ランタイムとの使用のために以下のオペレーションを提供する。
実施形態に従うと、以下の擬似コードは、あらかじめ作成されたWLSランタイムおよびデータベースランタイムがどのようにライフサイクルマネージャに登録され、次いで、ランタイム上でパーティションを作成するためにライフサイクルマネージャによってその後に使用されるかを示す。
ランタイムの静止
実施形態に従うと、ランタイムの静止/グレースフルシャットダウン(graceful shutdown)のサポートを含み得るWLSのようなコンポーネントは、ランタイムプラグインにおける静止サポートを実現することによってライフサイクルマネージャを介して静止能力をサポートし得る。ランタイムを静止することは異なるフェーズを有し得る。そのようなシナリオにおいて、ランタイムプラグインの静止メソッドは、一回より多く呼び出され得、静止メソッドにおけるフェーズパラメータを介して静止フェーズを示す。
たとえば、サーバがその静止フェーズを始めていることを示しており、したがって静止されているサーバへ転送される新しい要求はないことを通知する「start_quiesce」フェーズが存在し得る。静止がなされた後、その後のコールは、サーバがここで再び新しい要求を受け入れ始める準備ができていることを示す「end_quiesce」フェーズを有することになる。コンポーネントが付加的なフェーズをサポートする場合、それらのフェーズは、完全な機能を保証するようランタイムプラグインによってサポートされ得る。
「start_quiesce」、「end_quiesce」は、コンポーネントがサポートし得るフェーズの例であり、すべてのコンポーネントがサポートしなければならないフェーズの標準リストではない。コンポーネントが静止をサポートしない場合、UnsupportedOperationExceptionが投入されなければならない。コンポーネントがフェーズをサポートしない場合、ヌル値は、静止メソッドに渡される有効な値である。
ランタイムスケーリング
マルチテナント環境の利点のうちの1つは、複数のアプリケーションおよびユーザグループにわたってハードウェア、リソースおよびサービスを共有することであり、これにより、規模の経済性が達成されるとともに、これらのユーザの必要性が時間にわたって変化する際に、キャパシティを割り当てることにおけるフレキシビリティをアドミニストレータが有することが可能になる。
実施形態に従うと、ライフサイクルマネージャAPIは、ランタイムをスケールアップおよびスケールダウンすることが可能であるように、他のエラスティシティフレームワークについての能力を提供する。ランタイムマネージャおよびランタイムプラグインは、ランタイムをスケーリングするよう呼び出すためにユーザにスケールアップおよびスケールダウンメソッドを提供する。
実施形態に従うと、スケールアップまたはスケールダウンがランタイムマネージャにおいて呼び出されると、ランタイムタイプに対応するランタイムプラグインがルックアップされ、スケーリングオペレーションはランタイムプラグインのインスタンス上で呼び出される。コンポーネントがスケーリングオペレーションをサポートしない場合、ランタイムプラグインのインプリメンテーションは、UnsupportedOperationExceptionを投入しなければならない。
ランタイムプラグインインプリメンテーション
実施形態に従うと、ランタイムプラグインについての擬似コードが以下に示される(読みやすさのためこの例はすべての抽象メソッド(abstract method)を実現するわけではない)。
パーティションプラグイン
実施形態に従うと、パーティションをサポートするランタイム(たとえばWLS、12cデータベースなどのようなランタイムのスライス)は、パーティションプラグインのインプリメンテーションを提供しなければならない。createPartitionのようなランタイム上のオペレーションが呼び出される場合、ランタイムタイプに対応するパーティションプラグインのインプリメンテーションはHK2サービスとしてルックアップされ、対応する作成メソッドがパーティションプラグインインプリメンテーションクラス上で呼び出されることになる。ランタイムに接続しランタイムのスライスを作成することはインプリメンテーションクラス次第である。ひとたび作成されると、当該パーティションはライフサイクルマネージャに登録され、lifecycle-config.xmlにおいて永続化される。実施形態に従うと、ランタイムはパーティションについて以下の関数を提供する。
実施形態に従うと、パーティションプラグインについての擬似コードが以下に示される。プラグインにおけるすべてのオペレーションは、この例においてWLSランタイム上でオペレーションを実行するために、実際のWLSランタイムに対してJMX接続をする。
プラグイン登録
上述したように、実施形態に従うと、ランタイムプラグインおよびパーティションプラグインはHK2コントラクトとして定義され得、これらのプラグインのインプリメンテーションはHK2サービスとして定義され得る。HK2サービス名は、プラグインが登録されるサービスの名称と一致しなければならない。プラグイン登録は2つの態様で行われ得る。プラグインはjarファイルとしてパッケージ化され、RESTコマンドを介してライフサイクルマネージャに登録されるか、または、プラグインインプリメンテーションのjarを、たとえばWLSシステムアドミニストレータによって構成可能でなければならないライフサイクルマネージャインプリメンテーションによって特定されるディレクトリにドロップする。ライフサイクルマネージャは起動時にディレクトリをスキャンして、プラグインをロードし、かつ、ライフサイクルマネージャインプリメンテーションを登録する。プラグインを配置するためのデフォルトディレクトリは、oracle_home/wlserver/common/lifecycle/pluginsである。
環境
典型的なプロダクションシステムにおいて、アプリケーションを実行するのに必要とされるWLSパーティションおよびデータベースパーティションなどのような1つより多いアーティファクトが一般に存在する。実施形態に従うと、環境は、アプリケーションのすべての関連するピースについてグループ化構成を提供する。ライフサイクルマネージャは、ユーザが環境を作成することを可能にし、当該環境は、所与のテナントについてパーティションをグループ化するようシステムアドミニストレータによって使用され得る。実施形態に従うと、環境はパーティションのために以下の関数を提供する。
環境とのパーティションの関連付け
実施形態に従うと、ひとたびパーティションが環境に追加されると、環境に追加された他のパーティションに関連付けられ得る。
たとえば、環境がWLSパーティションおよびデータベースを有している場合、これら2つを関連付けることにより、データソース(DataSource)が、関連付けられているデータベースを参照するWLSにおいて作成される。2つのパーティションを関連付けるために、パーティションがまず環境に追加される必要がある。ひとたび環境に追加されると、associate(たとえばAssociate)メソッドが環境上で呼び出され得、関連付けられる必要がある2つのパーティションにおいて渡される。associateが環境上で呼び出されると、対応するプラグインのassociateメソッドがライフサイクルコンテキスト(たとえばLifecycleContext)オブジェクトと共に呼び出される。ライフサイクルコンテキストは、2つのパーティションの必要な接続を行うことができるようにプラグインに渡される必要な情報を有するはずである。パーティションプラグインのassociateメソッドは、環境のassociateメソッドコールに渡される順に呼び出される。
環境からのパーティションの分離
実施形態に従うと、パーティションがもはや使用されていない場合、環境における他のパーティションからのそのパーティションへの参照は、それが削除され得る前に、除去される必要がある。Dissociationは、環境において2つのパーティションを切断するメカニズムを提供する。dissociationが呼び出されると、パーティションプラグインの対応するdissociateメソッドが呼び出され、2つのパーティションを一緒に接続する構成を除去することはプラグインが担う。
たとえば、WLSパーティションがOTDパーティション構成から分離される場合、OTDにおいて構成されたルーティング情報が除去され、パーティションへのトラフィックはOTDを介するようルーティングされなくなる。パーティションプラグインのdissociateメソッドは、メソッドコールへ渡される順に呼び出される。
パーティション移動
実施形態に従うと、パーティションの移動をサポートするランタイムは、パーティションプラグインのmigrateメソッドを実現する必要がある。パーティションを移動させる場合、当該パーティションに関連付けられる他のパーティションもアクションを行う必要があり得る。これに対応するために、migrateメソッドは環境に対して作用する。ライフサイクルマネージャインフラストラクチャは、最初に移動されているパーティションのmigrateメソッドを呼び出し、次いで、当該環境に存在する他のパーティションのmigrateメソッドを呼び出さなければならない。
実施形態に従うと、パーティションの移動は異なるフェーズを有し得る。そのようなシナリオにおいて、パーティションプラグインのmigrateメソッドは1回より多く呼び出され得、migrateメソッドにおけるフェーズパラメータを介する移動フェーズを示す。
たとえば、パーティション移動フェーズが開始していることを示す「start_migration」フェーズが存在し得る。移動がなされた後、その後のコールは、パーティションが移動されたことを示す「end_migration」フェーズというフェーズを有する。パーティションが付加的なフェーズをサポートする場合、それらのフェーズは、完全な機能を保証するようパーティションプラグインによってサポートされ得る。
「start_migration」、「end_migration」は、パーティションがサポートし得るフェーズの例であり、すべてのパーティションがサポートしなければならないフェーズの標準リストではない。パーティションがmigrationをサポートしない場合、UnsupportedOperationExceptionが投入されなければならない。パーティションがフェーズをサポートしない場合、ヌル値は、migrateメソッドに渡される有効な値である。
パーティションの静止
実施形態に従うと、パーティションの静止をサポートするランタイムは、パーティションプラグインのquiesceメソッドを実現する必要がある。ライフサイクルマネージャは、パーティションを静止することを試みる前に、パーティションが適合状態であることを保証するよう、パーティションの状態をチェックする。
構成モジュール
実施形態に従うと、ライフサイクルマネージャは、そのオペレーションについて必要とされるさまざまな構成要素を管理する構成モジュールを含む。構成モジュールは、ここで記載されるさまざまなシナリオについての必要な構成インフラストラクチャを提供する。構成モジュールは2つのモードで機能する。すなわち、ライフサイクルがアドミンサーバ上で実行されるローカルモード(構成はWLSコンフィグディレクトリにおけるXMLファイルにおいて永続化される)と、ライフサイクルがクラスタ上で実行され得るHAモード(構成がデータベースにおいて永続化される)とで機能する。いずれの場合も、ライフサイクル構成は、構成を管理するためにHK2フレームワークを使用する。
ライフサイクル構成ファイル伝播
実施形態に従うと、アドミンサーバ上の構成ファイルに変更がなされると、それらの変更はすべての管理されるサーバに伝播されなければならない。管理されるサーバはライフサイクル構成を使用して、当該管理されるサーバ上で実行されるアプリケーションについて適切なテナントコンテキストを確立する。HK2コンフィグオブジェクトは、xml構成ファイルのリパーシングを許可しない。代わりに、新しいオブジェクトはインスタンス化され、更新されたxmlファイルは新しくパースされなければならない。構成変更が行われる場合、XMLファイルは特別のディレクトリへ保存される。すなわちドメインのためのペンディングディレクトリへ保存される。
管理されるサーバへのファイル転送
実施形態に従うと、変更が行われるたびに、LifecycleConfigDocument save()メソッドがHK2によって呼び出される。このメソッドはさらに、ペンディングディレクトリにファイルのコピーを保存し、その後、管理されるサーバへの当該変更されたファイルのアップロードをトリガする以下のAPIを呼び出す。
変更の監視
実施形態に従うと、構成ファイルの第1のパース上で起動されたFileWatcherデーモンがxmlファイルが変更されたことを検出する。その後、FileWatcherデーモンは、新しいコンフィグオブジェクトを作成し、xmlファイルをパースする。任意の呼出元が、パーシング中に情報にアクセスすること試みることがブロックされることになる。パーシングが完了するとすぐに、修正データが呼出元に利用可能になる。
構成されたデータへのアクセス
実施形態に従うと、LifecycleConfigFactoryクラスによりHK2構成が公開され得る。たとえば、
編集セッション
実施形態に従うと、WLS構成における変更を必要とするREST要求のために、各RESTコールはユーザに代わって編集セッションを作成および管理する。これは、コンソールにおける開発モードでの「暗黙的変更(implicit change)」と同様である。
LifecycleTask
ライフサイクルマネージャを介して実行されるあるオペレーションが存在する。これらのオペレーションは、本来長く実行される非同期オペレーションである。そのようなオペレーションの例は、quiescing Server (runtime manager.quiesce)、または、starting a Server (runtime manager.quiesce)である。そのようなシナリオにおいて、ライフサイクルマネージャAPIのセマンティックは、これらのAPIからLifecycleTaskオブジェクトを返すよう、非同期にされ得る。
LifecycleTaskManager
一般に、ユーザが非同期オペレーションを実行しLifecycleTaskオブジェクトを受信する場合、ライフサイクルタスクによって表わされる非同期オペレーションのステータスを取得すること、または、ライフサイクルタスクによって表わされる非同期オペレーションをキャンセルすることのうちの1つをそのオブジェクトにより行うことができる。実施形態に従うと、上記のオペレーションはLifecycleTaskManagerによって公開されるインターフェイスによって実行される。
ライフサイクルAPIおよびクラス
さまざまな実施形態に従うと、ライフサイクルインターフェイスおよびクラスの例が以下に記載される。他の実施形態に従うと、他のタイプのインターフェイスおよびクラスが提供され得る。
ライフサイクルマネージャ
実施形態に従うと、例示的なライフサイクルマネージャインターフェイスが以下のように記載される。
Runtime Manager.Java
実施形態に従うと、例示的なRuntime Manager.Javaインターフェイスが以下のように記載される。
ライフサイクルランタイム
実施形態に従うと、例示的なライフサイクルランタイム(Lifecycle Runtime)インターフェイスが以下のように記載される。
ライフサイクルパーティション
実施形態に従うと、例示的なライフサイクルパーティション(Lifecycle Partition)パッケージが以下のように記載される。
ランタイムプラグイン
実施形態に従うと、例示的なランタイムプラグイン(Runtime Plugin)クラスが以下のように記載される。
パーティションプラグイン
実施形態に従うと、例示的なパーティションプラグイン(Partition Plugin)クラスは以下のように記載される。
環境
実施形態に従うと、例示的な環境(Environment)インターフェイスが以下のように記載される。
ライフサイクルコンテキスト
実施形態に従うと、例示的なライフサイクルコンテキスト(Lifecycle Context)インターフェイスが以下のように記載される。
ライフサイクルオペレーションタイプ
実施形態に従うと、例示的なライフサイクルオペレーションタイプ(Lifecycle Operation Type)列挙子が以下のように記載される。
ライフサイクルタスク
実施形態に従うと、例示的なライフサイクルタスク(Lifecycle Task)インターフェイスは以下のように記載される。
ライフサイクルタスクマネージャ
実施形態に従うと、例示的なライフサイクルタスクマネージャ(Lifecycle Task Manager)インターフェイスが以下のように記載される。
図10は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するための方法のフローチャートを示す。
図10に示されるように、ステップ510において、1つ以上のパーティションをサポートする、ソフトウェアアプリケーションの実行のためのドメインを含むアプリケーションサーバ環境が1つ以上のコンピュータにおいて提供される。各パーティションはドメインの管理およびランタイム区分を提供し、パーティションは、デプロイ可能なアプリケーションまたはリソースの集合を有しおよび/またはリソースグループテンプレートを参照する1つ以上のリソースグループを随意に含み得る。
ステップ512において、ライフサイクルマネージャが提供される。ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。
ステップ514において、複数のコンポーネントが提供される。当該複数のコンポーネントの各々は、ライフサイクルマネージャとそのコンポーネントとの間にブリッジを提供するライフサイクルプラグインを含む。
ステップ516において、パーティションの作成中または構成中に、ライフサイクルマネージャは、プラグインインターフェイスを呼び出し得るライフサイクルオペレーションを実行し、これにより、プラグインインターフェイスは、たとえばパーティションとの使用のためのトラフィックディレクタインスタンスの作成またはデータベースインスタンスの作成といった、コンポーネントの実際の作成または構成を実行する。
テナントオンボーディング
実施形態に従うと、システムは、あるサービスのためのテナントを特定のパーティションにオンボードするのに使用され得るテナントオンボーディング機能のためのサポートを含む。
たとえば、フュージョンアプリケーション(FA:Fusion application)を含む実施形態に従うと、システムは、所与のパーティションに対してサービスのためのFAテナントをオンボードするメカニズムを提供し得る。実施形態に従うと、各環境は、上位スタックにおけるサービスに関連付けられ得る。テナントをオンボードする場合、FAサービスが使用しているのはどのパーティションであるか、当該サービスに関連付けられるテナントのデータベース、および、トップレベルテナントディレクトリといった情報が特定され得る。
実施形態に従うと、システムは、所与のパーティションにテナントをマッピングするようAPIを提供する。入力される要求について、システムは、構成からテナントを決定し得、その情報を使用してランタイムにてテナンシコンテキストを確立する。たとえばJava Required Files(JRF)APIを使用してクエリ送信された場合、適切なテナンシコンテキストが当該アプリケーションに利用可能になり得る。
たとえば、上述したように、システムは、たとえばFAテナントがオンボードされ得るように、かつ、オラクルプラットフォームセキュリティサービス(OPSS:Oracle Platform Security Services)のような上位スタックコンポーネントおよびサービス指向アーキテクチャ(SOA:Service Oriented Architecture)が環境をプロビジョニングするようアクセスを取得可能であるように、環境を作成するために使用され得るので、最終的に構成される環境は、テナントが必要とするコンポーネントのすべてを有することになる。
実施形態に従うと、テナントは1つ以上の異なるサービスを有し得る。たとえば、テナントはカスタマーリレーションシップマネジメント(CRM:Customer Relationship Management)サービスおよび/またはSOAサービスを有し得る。一般に、上位スタックにおける各サービスはアプリケーションサーバにおける1つ以上の環境に関連付けられ得る。これは、上位スタックにおいて2つのサービスにサインアップするテナントは一般に2つの環境を受け取り、当該環境はテナントレベルにおいてリンクされるということを意味する。
たとえば、テナントがSOAとビジネスプロセスマネージメント(BPM:Business Process Management)サービスにサインアップする場合、テナントはSOA環境およびBPM環境を受け取り、これらの環境は両方とも当該テナントによってリンクされる。環境内の各アプリケーションは、たとえばHTTPまたはT3コールとして、必要ならば、そのテナントに関連付けられる別の環境への各リモートコールを使用し得る。
上述したように、実施形態に従うと、システムは、テナンシコンテキストおよびパーティションコンテキストの概念を認識し、前者は一般により多くの情報を含んでいる。特定のサービスは、たとえばアプリケーションサーバ(たとえばWebLogic,WLS)、データベース(たとえばDatabase)、および、トラフィックディレクタまたは他のロードバランサ(たとえばオラクルトラフィックディレクタ,OTD(Oracle Traffic Director))といったさまざまなコンポーネントのいくつかのスライスまたはパーティションを含み得る。テナントコンテキストは、サービスと、どのように当該サービスがパーティションコンテキストにマッピングするかとを示す態様で、特定のテナントのためのパーティションコンテキストにマッピングする。
図11は、実施形態に従うと、マルチテナントアプリケーションサーバ環境におけるテナントオンボーディングを示す。
図11に示されるように、実施形態に従うと、テナントオンボーディングAPI550および構成インターフェイス560は、アドミニストレータ562がテナント構成564を提供することを可能にする。その後、テナントオンボーディングプロセスはその情報を使用してUUIDおよび環境566を有するテナント565を作成し、そのテナントの環境を適切なパーティションまたはドメインレベルリソースにマッピングし得る(570)。
実施形態に従うと、各テナントはグローバルユニークID(UUID)に関連付けられ得、各サービスは同様にUUIDに関連付けられ得る。これは、テナントコンテキストをルックアップするようどのサービスが呼び出されていてもというコンテキストにおいてシステムが動作することを可能にする。システムはさらに、特定のタスクを実行するために異なるテナントコンテキスト同士の間でスイッチングする能力を提供する。これは一般に、本願明細書におけるさまざまな実施形態においてExecuteAs機能と称される。
たとえば、アプリケーションサーバ(たとえばWLS)環境において、さらに以下に記載されるように、グローバルまたはドメインレベルのランタイムが提供され得る。上位スタックにおけるプロダクトまたはコンポーネント(たとえばFA、SOAまたはBPM)は、たとえば特定のテナントを特定のサービスにオンボードするために所与のテナントコンテキストにスイッチングすることを望み得る。そのテナントがオンボードされると、グローバルまたはドメインレベルで実行される上位スタックソフトウェアは一時的にそのテナントにスイッチングし得、たとえばトラフィックディレクタまたはデータベースにより任意の必要なタスクを実行する。
一般に、システムは、executeAsオペレーションがグローバルからテナントコンテキストへのみ実行され得るがテナントからテナントコンテキストへは実行され得ないように、グローバルレベルコンテキストからテナントコンテキストにのみスイッチングし、反対にはスイッチングしない。
テナンシコンテキストのスイッチング
実施形態に従うと、システムは、要求を現在処理している可能性があるターゲットコンポーネントのような、要求属性に基づいて自動的にパーティションコンテキストを決定し得る。スレッドのパーティションコンテキストは一般に、異なるパーティションにデプロイされるコンポーネントに要求が入る毎に変化する。
たとえば、1つのパーティションにおいて実行されるサーブレットが、Enterprise Java Bean(EJB)または別のパーティションにおいてデプロイされるサーブレットもしくはウェブサービスのようなリモートコンポーネントを呼び出す場合、リモートコールは、ターゲットコンポーネントをホストするパーティションにおいて実行される。
この場合、ターゲットコンポーネントのビジネスメソッドを呼び出す前に、存在するプラットフォームは、適切なパーティションコンテキストをセットすることを担う。アプリケーションデベロッパは、異なるパーティションコンテキスト下でコードを実行したい場合、この能力を利用できる。
実施形態に従うと、テナンシコンテキストスイッチングはさらにシンプルなユースケースをサポートする。たとえば、アプリケーションが、呼出元のコンポーネントコンテキストを共有する同じスレッドにおいて実行され得る共有サービスにコールを行う前にコンテキストをセットする場合をサポートする。そのような場合、パーティションコンテキストスイッチングは必要ではないかまたは望まれていない。
特権オペレーションとしてのテナンシコンテキストスイッチング
実施形態に従うと、グローバルランタイムのような特権アプリケーションコードだけがテナンシコンテキストをスイッチングすることができる。したがって、APIはアクセスを許可する前に適切なセキュリティ許可チェックを実施しなければならない。セットされているターゲットテナンシを含む許可が与えられ得る。
イリーガルなテナンシスイッチングからの保護
実施形態に従うと、下記のテーブルは、コードのセキュリティ特権に従ってどのコンテキストスイッチが許可されるかを説明する。
実施形態に従うと、たとえばFAシナリオにおいて、テナントオンボーディングのプロセスは、プロビジョニングシステムと通信することによって開始され得る。WLSサーバのようなマルチテナントアプリケーションサーバ上で実行されるFAの場合のようないくつかの状況において、テナントオンボーディングのプロセスは、プロビジョニングサブシステムによってセットアップされるランタイム上でのパーティションの作成を必要とする。
実施形態に従うと、テナントをオンボードする前に、テナントがサインアップするサービスを表わす環境が作成されなければならない。FAプロビジョニングサブシステムは、まず環境を作成するために、ライフサイクルマネージャAPIへと呼び出しすることができる。ひとたび環境が作成されると、テナントがテナントアドミン(たとえばTenantAdmin)クラスを介してオンボードされ得、その例が以下に示される。その後、テナントアドミンは、テナントを登録するためにAPI(たとえばregisterTenant)を公開し得る。
ひとたびテナントが登録されると、プロビジョニングインフラストラクチャによって作成されたデータベースが、所与のテナントについてテナントアドミンに登録され得る。この点において、システムはテナントをその環境にオンボードし得る。テナントをオンボードすることは、環境に対するテナントについてのマッピングを維持するために、サービス名およびサービスタイプ(FAから利用可能)が渡されることを必要とする。テナントマッピングはlifecycle-config.xmlに格納され得る。
実施形態に従うと、lifecycle-config.xmlに格納されたテナントマッピングについての例示的なコードを以下に示す。
実施形態に従うと、ランタイムにおいて、テナントコンテキスト(たとえばTenantContext)がTenantContext/TenantContextFactoryを介して利用可能である。所与のパーティションまたはテナントデータベースについてTenantContextを得るAPIが以下に定義されるTenantManagerクラスにおいて定義される。テナントならびに対応するテナントデータベースおよび環境を登録するためのテナントアドミンAPIのすべてが、WLSにおいて実行される場合、REST APIを介して公開され得る。Java SE上で実行される場合、Java APIが直接的に使用され得る。WLS環境上にテナントをオンボードするよう上記プロセスを記述する例示的な擬似コードが以下に示される。
上記のコードにおいて、ライフサイクルマネージャを使用してDBパーティションが作成されず、その代わりにプロビジョニングによって実行される場合、プロビジョニングは、DB1ランタイムオブジェクト上で、createPartitionとは反対のregisterDatabaseを呼び出す。
テナントコンテキスト
実施形態に従うと、アプリケーション自体がマルチテナント認識型であることが期待され得るFA/SaaSおよび同様のシナリオにおいて、パーティションIDおよびパーティション名に加えて、その代わりにあるオペレーションが実行されているテナントを知る必要がある。テナントコンテキスト(たとえばTenantContext)APIは、適切なテナントコンテキストを取得するよう使用するために、上位スタックFMW/FAについてJRFレイヤーにおいて利用可能になり得る。
ひとたびテナントコンテキストが決定されると、コンポーネントは、所与のサービスについて環境に関連付けられるパーティションをルックアップし得る。
テナントマッピングのためのJava SEのサポート
実施形態に従うと、以下は、テナントコンテキストを抽出するためにSEにおいて使用され得る例示的なコードである。
Java SEの場合、テナントID、サービス名およびサービスタイプに基づいてテナントコンテキストをフェッチするメソッドがTenantManagerにおいて公開され得る。テナントコンテキストのセットアップは、getTenantContext()が初めて呼び出される場合、TenantContextFactoryによって暗示的に行うことができる。
SEにおけるコンフィグファイルブートストラップ
実施形態に従うと、上記のセクションにおいて言及されたように、テナントマッピングはlifecycle-config.xmlに格納され得る。SEでは、システムは、(a)環境変数lifecycle.configDirによって示される位置、または、(b)lifecycle.configDir変数がセットされていない場合、
を用いて読み出され得るユーザワーキングディレクトリにおいて、このファイルをルックアップすることができる。
SEにおけるテナント情報の特定
実施形態に従うと、JAVA(登録商標) SEモードにおいて実行する場合、システムプロパティlifecycle.tenantId lifecycle.serviceName lifecycle.serviceTypeを使用して、または、システムプロパティlifecycle.serviceIdを介してサービスUUIDを特定することによって、テナントを識別する情報が読み出され得る。
上記の情報は、一意にテナントを識別し、ライフサイクル構成に存在するユニークテナントプラスサービスの組合せを識別するために使用され得る。SEアプリケーションはアイデンティティを想定し、TenantContextFcatory.getTenantContextが呼び出されると、それが表わされる。
SEにおけるテナントコンテキスト
実施形態に従うと、SEにおけるテナントコンテキストはInheritableThreadLocal上に格納される。getTenantContext()メソッドは、初めて呼び出される場合、システムプロパティを使用してテナントコンテキストを計算し、InheritableThreadLocal上にもそれを格納する。
同じメソッドに対するさらに別のコールの際、システムは、テナントコンテキストがInheritableThreadLocal上に格納されているかどうか確かめるようチェックし、保存されているものを返す。プログラム実行の最中にシステムプロパティが変更される場合、これらの変更は、InheritableThreadLocal上のテナントコンテキストをリフレッシュするよう、検出および使用される場合があるかまたは検出および使用されない場合がある。
switchTenantContext(executeAsとしても知られる)によるスイッチング
図12はさらに、実施形態に従った、マルチテナントアプリケーションサーバ環境におけるテナントオンボーディングを示す。
図12に示されるように、実施形態に従うと、FA−MTのランタイムビューは、1つ以上のグローバルデータソース582またはプロキシデータソース584へのアクセスを提供するアドミンランタイム580と、各々が自身のグローバルデータソース592,602を有する複数のテナントランタイム590,600と、テナントデータソース594,604と、グローバルPDB610と、いくつかのテナントPDB612,614とを含む。これらのコンポーネントの各々は、たとえばhttp://tenant1.opc、http://tenant2.opcおよびhttp://internal.opcといった複数のURIを介して上位スタックコンポーネントにアクセス可能になり得る。
さまざまな実施形態に従うと、FAMTランタイムにおいてテナンシのいくつかの異なる使用法があり、そのいくつかの例を以下のように記載する。MetaDataServiceによって使用され、テナントデータベースパーティションを選択していくつかのメタデータのテナント特有のカスタマイゼーションを選出するために使用する。
たとえば、実施される必要があるセキュリティポリシーを選出するようテナントデータベースパーティションを選択するために、OPSSによって使用され得る。さらに、テナントのための監査ポリシーを決定し、テナントデータベースパーティションを選択して監査ログを格納するようAudit Serviceによって使用され得る。すべてのそのような場合において、共有サービスが呼び出される前に、正しいテナンシが実行スレッドに関連付けられる必要性がある。
テナンシコンテキストは、明示的にセットされていない場合、以下に記載されるようにスレッドの現在のパーティションコンテキストから導き出される。要求がWLSに入ると、適切なコンテナが、当該要求のターゲットコンポーネントのさまざまな詳細を決定し、当該呼出を表わすようComponentInvocationContextオブジェクトを作成する。同様に、WLSは、タイマー終了のような何らかの非同期オペレーションの部分としてコールバックオブジェクトを呼び出す場合、スレッドにおける正しい呼出コンテキストをセットする。ComponentInvocationContextの部分として、パーティション情報も維持される。上に記載されたオンボーディングプロセスは、テナンシコンテキストを介して利用可能な現在のテナント値に対して現在のパーティションに必要なマッピングを提供する。
グローバルテナンシ
典型的に、システムのアドミニストレーションコードは通常、すべてのテナントを代表するMTアドミニストレータのコンテキストにおいて実行される必要性を有する。実施形態に従うと、この特別の状態は、現在の要求に関連付けられるテナントコンテキストが存在しないということを示すヌルのテナントIDと異なる「GLOBAL」と称される特別なテナントIDによって表わされる。
GLOBALデータベースを使用することを望む如何なるソフトウェアコードも、GLOBALデータベースに常に接続するDataSourceに対する固定された参照を維持しなければならない。GLOBALランタイムにおいて実行されるコードは、特定のテナントDBに対して固定された結合を有していないが、その代わりに、オペレーションのコンテキストに依存するテナントDBからデータにアクセスする。システムにおいてテナントDBはあらかじめプロビジョニングされていないので、現在のテナントコンテキストに基づいて特定の存在するDBを選択する、プロキシデータソースへの固定されたJNDI参照をコードが有し続け得るプロキシデータソース(たとえばProxyDataSource)が使用され得る。
FMW/FAコードが以下に記載されるようにWLSの外部で実行される必要がある2つの異なるユースケースが存在する。あるライフサイクルオペレーションおよびアドミニストラティブオペレーションがJava SE環境において行われる。ビジネスプロセスマネージメントの部分として、サーバコードは時に、特定のテナントのコンテキストに作用している長く実行されているJavaプロセスを分岐させる。
JNDIおよびプロキシデータソースを介して利用可能になる、プロキシデータソースに対する単一の参照を有することにより、テナンシコンテキストを使用して、適切な存在するデータベースへのコールを代表することに対応する。上記が動作するために、テナンシコンテキストは、Java SEプロセスにおけるスレッドにおいて正確にセットされなければならない。Java SEプロセスは、テナント名およびテナントidについてシステムプロパティを使用してGLOBALテナントコンテキストにおいて渡すことによって、起動されなければならない。分岐したJavaプロセスは、この情報を使用するとともにswitchTenantContextを呼び出して実行スレッドにおいてテナンシコンテキストを確立する。
Java SEにおけるグローバルテナンシチェック
実施形態に従うと、executeAsを実行することを可能とするために、システムは、現在のテナントコンテキストがグローバルであることを保証しなければならない。これは、現在のテナントコンテキストについて、テナントIDが0に等しいことをチェックすることにより行われ得る。
図13は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてテナントオンボーディングを提供するための方法のフローチャートを示す。
図13に示されるように、ステップ630において、1つ以上のパーティションをサポートする、ソフトウェアアプリケーションの実行のためのドメインを含むアプリケーションサーバ環境が1つ以上のコンピュータにおいて提供される。各パーティションはドメインの管理およびランタイム区分を提供し、パーティションは、デプロイ可能なアプリケーションもしくはリソースの集合を有しおよび/またはリソースグループテンプレートを参照する1つ以上のリソースグループを随意に含み得る。
ステップ632では、ライフサイクルマネージャが提供される。ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。
ステップ634において、システムにテナントがオンボードされるためのテナント構成の定義を可能にするテナントオンボーディングおよび/または構成インターフェイスが提供される。
ステップ636では、テナントオンボーディング中に、システムは、一意識別子を有するテナントと、環境と、特定のテナントについてパーティションコンテキストをマッピングするテナントコンテキストとを作製するようテナント構成情報を使用する。
ステップ638では、システムは随意に、テナントスイッチングインターフェイスを介してテナントのコンテキストにスイッチングを行い、テナントオンボーディング中にそのテナントとしてまたはそのテナントに代わって関数を実行し得る。
コンポ―ネントライフサイクルプラグイン
実施形態に従うと、エンドツーエンドライフサイクルインフラストラクチャは、マルチテナントアプリケーションサーバ環境内の異なるコンポーネントが自身のコンポーネントに特有のライフサイクル機能を提供するよう、ライフサイクルプラグインを使用することを可能にするプラグインベースのメカニズムを含む。
図14は、実施形態に従った、マルチテナントアプリケーションサーバ環境におけるライフサイクルプラグインを示す。
上述したように、実施形態に従うと、システムは、ライフサイクルマネージャ(LCM)およびライフサイクルインターフェイスを含むライフサイクルコーディネーションフレームワークを含み得、これにより、パーティションと、トラフィックディレクタコンポーネント、データベースコンポーネントまたは他のコンポーネントといった他のコンポーネントとのライフサイクル管理が可能になる。
たとえば、図14に示されるように、ライフサイクルインターフェイスは、パーティションライフサイクルプラグイン650、アプリケーションサーバライフサイクルプラグイン652、トラフィックディレクタライフサイクルプラグイン654、および、データベースライフサイクルプラグイン656、または、他のタイプのプラグインの使用をサポートし得る。
各ライフサイクルプラグインは、たとえばWebLogic(WLS)といったアプリケーションサーバ、または、たとえばオラクルトラフィックディレクタ(OTD)インスタンスライフサイクルのようなトラフィックディレクタもしくは他のロードバランサについて、ライフサイクルニーズをカプセル化し得る。ライフサイクルインターフェイスは、その所与のコンポーネントのライフサイクルを管理するよう、各プラグインについて共通または一般的なプロセスを提供する。
図15はさらに、実施形態に従った、マルチテナントアプリケーションサーバ環境におけるライフサイクルプラグインを示す。
図15に示されるように、ライフサイクルプラグインは、パーティションライフサイクル管理660、または、データベースライフサイクル管理662に寄与し得る。
たとえば、OTDインスタンスは、特定のドメイン上でパーティションを作成するのに使用されるWLSランタイムを作成するよう、ライフサイクルマネージャを要求し得る。ライフサイクルマネージャは、実質的にドメインの指示を提供し、かつ、そのドメイン上にパーティションを作成するようプラグインに要求するよう、各プラグイン作成メソッドを実質的に代表する。
さまざまな実施形態に従うと、同様のプラグイン機能が、たとえば他のデータベース、トラフィックディレクタまたは他のコンポーネントをサポートし、利用可能な場合にサーバを作成、削除、停止、開始、静止、移動させるよう提供され得る。各プラグインは、ライフサイクルマネージャを通じてサポートされた各コンポーネントについて実現され得る。
A.アプリケーションサーバプラグイン
実施形態に従うと、システムは、アプリケーションサーバ(たとえばWebLogic,WLS)ライフサイクルプラグインを含み得、ライフサイクルAPIを実現し、アプリケーションサーバ(たとえばWLS)パーティションの作成または構成を管理する。
ライフサイクルマネージャとの相互作用
実施形態に従うと、アプリケーションサーバプラグインは、レジスタプラグインオペレーションを使用して、ライフサイクルマネージャに登録され得る。その後、ライフサイクルマネージャへのアプリケーションサーバ(たとえばWLS)ランタイムの登録の際、ライフサイクルマネージャと相互作用するクライアントは、ライフサイクルマネージャに登録された特定されたランタイム上でパーティションを作成/更新/削除するよう、ライフサイクルマネージャにRESTコールを行うことができる。アプリケーションサーバ(たとえばWLS)プラグインは、その特定のアプリケーションサーバ(たとえばWLS)ランタイム上でライフサイクルオペレーションを実行するために呼び出され得る。
アプリケーションサーバとの通信
実施形態に従うと、アプリケーションサーバプラグインは、サーバと相互作用するために、アプリケーションサーバ(たとえばWLS)によって公開されるJMX/REST APIを使用し得る。プラグインは、ターゲットとされたアプリケーションサーバランタイムに対するライフサイクルオペレーションがアプリケーションサーバパーティション上でCRUDオペレーションを行うことを可能にするよう、ライフサイクルマネージャからのパーティションプラグインコントラクトを実現し得る。以下は、パーティションについてたとえばWLSランタイム上で行われ得るいくつかの例示的な動作である。
実施形態に従うと、アプリケーションサーバプラグインは、たとえばターゲットとされたアプリケーションサーバ(たとえばWLS)ランタイム上でライフサイクルオペレーションを可能にするよう、ライフサイクルマネージャからランタイムプラグインコントラクトを実現することができる。
パーティション上のライフサイクルオペレーションのランタイムプロパティ
実施形態に従うと、アプリケーションサーバプラグインは以下のプロパティを使用してアプリケーションサーバ、たとえばWLSランタイム、に接続する。これらのプロパティは、上記のコントラクトにおいて特定されたように、ライフサイクルランタイムオブジェクトを介してライフサイクルオペレーションに渡される。
WLSプラグインについてのライフサイクルコンテキスト
実施形態に従うと、アプリケーションサーバプラグインを使用して行われた任意のCRUDオペレーションは、ライフサイクルコンテキストにおけるプラグインに提供される情報/データに基づいてカスタマイズされ得る。クライアントはRESTコールの部分としてプロパティを特定し得る。ライフサイクルマネージャはライフサイクルコンテキストへデータをポピュレート(populate)し、プラグインにプロパティを戻す。たとえば、クライアントは、WLSパーティションに対してcreatePartitionについてのRESTコールを行う場合、パーティションの属性を特定するためにプロパティを特定し得る。
パーティションの作成/更新のためのライフサイクルコンテキスト
実施形態に従うと、以下は、パーティションオペレーションを作成/更新しつつクライアントによって特定され得るいくつかの例示的なプロパティである。これらの構成はパーティション作成/更新の部分として作成され、パーティションに特有である。
実施形態に従うと、以下は、パーティションを作成/更新しつつクライアントによって特定され得るいくつかの例示的なプロパティである。アプリケーションサーバ(たとえばWLSサーバ)におけるこれらのエンティティを発見することに失敗すると、アプリケーションサーバプラグインから例外が投入される。
Delete Partitionについてのライフサイクルコンテキスト
実施形態に従うと、パーティション名以外の付加的なプロパティは、アプリケーションサーバ(たとえばWLS)パーティションを削除するためには必要ではない。
Associate Partitionについてのライフサイクルコンテキスト
実施形態に従うと、別のコンポーネントとのアプリケーションサーバインスタンスの関連付けは、いくつかの新しいプロパティによるアプリケーションサーバ(たとえばWLS)パーティションを更新することを伴い得るか、または、関連付けのために、必要なプロパティを他のコンポーネントに提供することを伴い得る。
関連付けに参加することを望む如何なるコンポーネントも、上で特定されたフォーマットでライフサイクルコンテキストにおけるプロパティの正しいセットを確実に渡す必要がある。
WLS−OTD関連付けの場合、OTDパーティションは、この場合、関連付けを行うためにクラスタ名、クラスタメンバーおよびターゲット情報を予想する。アプリケーションサーバプラグインは、パーティション名に基づいて正しいターゲット情報をフェッチするよう、アプリケーションサーバランタイムにJMX/RESTコールを行う。これらのプロパティは、associatePartitionインプリメンテーションの部分として、アプリケーションサーバのlifecycleContextに追加される。プラグインに対する関連付けコールの部分として、ターゲット構成の完全なスナップショットがライフサイクルコンテキストに追加される。その後、ライフサイクルマネージャは、OTDプラグインのassociatePartitionインプリメンテーションを呼び出し、当該associatePartitionインプリメンテーションは、(WLSターゲットのプロパティを有する)ライフサイクルコンテキストを使用して、発信元サーバプールとアプリケーションサーバパーティションとの接続を行う。
実施形態に従うと、アプリケーションサーバ(たとえばWLS)パーティションがOTDパーティションに関連付けられる場合、かつ、構成されたクラスタにパーティションがターゲットとされ、サーバが実行されていない場合、ライフサイクルマネージャは、サーバのListenAddressおよびPortについて利用可能な構成情報を取得し、OTDに送信する。サーバが実行されている場合、RuntimeMBeanから利用可能なサーバについてのランタイム情報が取得され、当該ランタイム情報はコンテキスト情報を介してOTDへ渡される。
動的なクラスタにおいて、動的なサーバのためのポートについて構成時間情報が利用可能であるが、ListenAddressについて利用可能な構成情報は存在しない。associateコールが発生する際に動的なサーバが実行されていなければ、ライフサイクルマネージャは構成されたポートおよびノードマネージャのListenAddress(動的なサーバがマシンと関連付けられている場合)を取得し、他のプラグインにこれを送信する。associateコールが発生する際に動的なサーバが実行されていれば、ライフサイクルマネージャはRuntimeMBeanからサーバのリスンアドレスおよびポートを取得し、OTDプラグインにそれを送信する。
WLS−DB関連付けの場合には、アプリケーションサーバ(たとえばWLS)プラグインのassociatePartitionメソッドは、この場合、DBパーティションのlifecycleContextを使用して、PDB情報をポピュレートし、当該PDB情報によりWLSパーティションを更新する。
パーティション分離についてのライフサイクルコンテキスト
実施形態に従うと、別のコンポーネントとのアプリケーションサーバ(たとえばWLS)の分離は、あるWLSパーティション構成を除去/更新することを伴い得る。分離に参加することを望む如何なるコンポーネントも、上で特定されたフォーマットでライフサイクルコンテキストにおけるプロパティの正しいセットを確実に渡す必要がある。以下は、WLSとDBパーティションとの間の分離を説明する例である。
WLS−DB分離:この場合、WLSプラグインのdissociatePartitionメソッドは、DBパーティションのlifecycleContextを使用して、PDB情報名をポピュレートし、PDB情報を除去することによりWLSパーティションを更新する。WLSプラグインは、lifecycleContextにおいてPDB情報名を予想する。
WLS−OTD分離:この場合、OTDパーティションは、分離を行うために、クラスタ名、クラスタメンバーおよびターゲット情報を予期する。WLSプラグインは、パーティション名に基づいて正しいターゲット情報をフェッチするよう、WLSランタイムにJMX/RESTコールを行う。これらのプロパティは、WLSプラグインのdissociatePartitionインプリメンテーションの部分として、WLSのlifecycleContextに追加される。
LCM環境におけるWLSパーティション構成の発見および関連付け
実施形態に従うと、パーティション構成は、ライフサイクルマネージャ環境/範囲の外部で作成/更新/削除され得る。たとえば、アドミニストレータがパーティションを作成するようWLSTコマンドを呼び出すか、または、パーティションを更新するためにWLSアドミンコンソールを使用し得る。任意の状況において、ライフサイクルマネージャとともに存在するパーティション情報は最近のものであり最も更新されたものであることが確実である必要がある。
アプリケーションサーバ構成上でのライフサイクルマネージャランタイムスケーリングの影響
実施形態に従うと、アプリケーションサーバ(たとえばWLS)プラグインにおけるScaleUpおよびscaleDownオペレーションは、動的なクラスタの部分であるサーバインスタンスを開始および停止する機能を提供するよう使用され得る。WLSプラグインは、サーバを開始/停止するようマシン/サーバと相互作用するようノードマネージャを使用し得る。
エラスティシティフレームワークは、クラスタ情報によりライフサイクルマネージャにスケールアップまたはスケールダウンコールを行い、scaleUp/scaleDownに登録されるスケールファクタ、ランタイムタイプ(すなわちWLS)インターセプタは、スケールアップすべきクラスタについて必要とされる必要なインフラストラクチャを有効化および実行するスケールアップ/スケールダウンオペレーションの前に呼び出される。
たとえば、クラスタにおいて立ち上げるべき新しいサーバに必要とされるデータソースの数を決定/作成するよう、WLSランタイムに必要なコールを行う。ひとたびクラスタをスケールアップ/スケールダウンする前提条件が満たされれば(すなわちインターセプタの事前呼出が満足されれば)、実際のスケールアップまたはスケールダウンが行われる。インターセプタは、後呼出要件を満足するよう、オペレーションがプラグインにおいて完了した後、再び呼び出される。
たとえば、多くのインターセプタがWLSクラスタをスケーリングするために使用されると仮定して、1つのそのようなシーケンスが以下に記載される。
エラスティシティモジュールからのWLSScaleDownActionがlcm.scaleDown(clusterName, factor, payload)を呼び出す際に、WLSインターセプタ、OTDインターセプタ、JMSインターセプタ、データソースインターセプタといったインターセプタが追加されたと仮定する。すなわち、
1.WLSインターセプタは、スケーリングがクラスタ限界内であるかどうかチェックする。その後、WLSインターセプタはctx.proceed()を呼び出す。
2.OTDインターセプタは、ドレインされるべき選択されたターゲットをマークするよう、必要なOTDコンフィグ変更を行う。要求がドレインされたことをOTDメトリックが示すまで、OTDインターセプタは待機する。その後、OTDインターセプタはctx.proceed()を呼び出す。
3.JMSインターセプタは、JMSバックログがドレインするのを待機する。その後、JMSインターセプタはctx.proceed()を呼び出す。
4.データソースインターセプタは、すべてのJDBC接続がプールに返されたことを保証する。その後、データソースインターセプタはctx.proceed()を呼び出す。
5.サービスがスケールダウンされる(最後のインターセプタの後にElasticServiceManagerによって呼び出される)。
インターセプタコールチェーンのリターンパス上で、
1.データソースインターセプタは、残存する稼働している管理されたサーバについて最大接続プールサイズ(max-connection-pool-size)を適切に増加し、
2.JMSインターセプタは何もせず、
3.OTDインターセプタは何もせず、
4.WLSインターセプタは何もしない。
REST要求を使用するアプリケーションサーバプラグインの呼出
実施形態に従うと、ライフサイクルマネージャクライアントは、REST要求を使用してWLS上でたとえば以下のオペレーションを行い得る。すなわち、当該オペレーションは、
1.REST要求において渡されるべきWLSランタイムおよびプロパティを登録することと、
2.空のWLSパーティションを作成することと、
3.リソースグループおよびターゲティングによりWLSパーティションを作成することと、
4.(環境テスト1が既に作成されていると仮定して)環境にWLSパーティションを追加することと、
5.別のパーティションにWLSパーティションを関連付けることと、
6.別のパーティションとWLSパーティションを分離することと、
6.WLSパーティションを削除することと、
7.WLSパーティションを更新することと
を含む。
B.データベースプラグイン
実施形態に従うと、システムは、ライフサイクルAPIを実現するとともにデータベース(たとえばDatabase)パーティションの作成または構成を管理するデータベース(たとえばオラクルデータベース)ライフサイクルプラグインを含み得る。
実施形態に従うと、オラクルデータベース(Oracle Database)のようなデータベースコンポーネントのマルチテナント認識型アーキテクチャによって、顧客が作成したプラガブルデータベース(PDB:pluggable database)を含むマルチテナントコンテナデータベース(CDB)として機能することが可能になる。各PDBは、スキーマ、スキーマオブジェクトおよびノンスキーマオブジェクトのポータブルな集合として作用する。ライフサイクルマネージャモジュールの観点から、データベースコンポーネントは、データベースマシナリに組み込まれたPDB機能を使用して、自身のパーティション構成を管理する。データベースライフサイクルプラグインは、ライフサイクルマネージャによって呼び出されると、PDB管理オペレーションを実行するために、この機能にレバレッジをかけ得る。
ライフサイクルマネージャとの相互作用
実施形態に従うと、データベースプラグインは、ライフサイクルマネージャパーティションプラグインインターフェイスのインプリメンテーションであり、任意のオペレーションを実行し得る前に、ライフサイクルマネージャに登録される。結果、ライフサイクルマネージャへのデータベースランタイムの登録の際、ライフサイクルマネージャと相互作用するクライアントは、ライフサイクルマネージャに対するRESTコールを行い、ライフサイクルマネージャに登録された特定されたランタイム上でPDBオペレーションを実行する。
ランタイム登録
実施形態に従うと、データベース上でオペレーションが実行され得る前に、ライフサイクルマネージャに登録されなければならない。登録プロセスは、データベースに接続するために使用される情報を必要とする。たとえば、データベースランタイムは以下のプロパティに登録され得る。
データベース上のライフサイクルオペレーション
実施形態に従うと、データベースライフサイクルプラグインは、JDBCを介してリモートSQL接続を使用してデータベースと通信する。ランタイム登録中に特定されるプロパティはデータベースに接続するために使用される。多くのライフサイクルオペレーションは、対応するSQLコマンドにマッピングし、そのさまざまなクローズ(clause)はたとえば、ライフサイクルコンテキストオブジェクトに渡されるとともにプラグインに渡されるプロパティから決定される。
実施形態に従うと、以下は、例による上記のオペレーションの詳細である。
Create
実施形態に従うと、createオペレーションは以下のタスクを実行する。すなわち、(1)特定されたデータベースランタイム上でプラガブルデータベースを作成する。新しく作成されたPDBのパーティションIDがV$PDBSテーブルから取得される。パーティション名はPDB名と同じである。(2)随意に、データベースユーザを作成する。(3)随意に、既存のCDBプランを使用してPDBにCDBプランディレクティブを作成する。上記のタスクについて多くのオプションが利用可能である。これらのオプションは、ライフサイクルコンテキストオブジェクトにおけるプロパティとして、プラグインに渡される。
Delete
実施形態に従うと、deleteオペレーションは以下のタスクを実行し得る。(1)PDB名を使用してプラガブルデータベースをドロップする。PDBユーザも自動的にドロップされる。(2)随意に、上記のタスクについてプラグインによって実行されるPDBサンプルSQLに対するCDBプランディレクティブをドロップする。
Update
実施形態に従うと、updateオペレーションは、PDBに対する更新を実行するようALTER PLUGGABLE DATABASEコマンドを実行することによって、プラガブルデータベースの属性を修正する。
Associate
実施形態に従うと、associateオペレーションは、WLSパーティションがPDBに関連付けられる際に重要である。データベースプラグインは、関連付け中に、WLSプラグインにデータベース接続URLを渡す。ライフサイクルマネージャによってPDBを作成する間にユーザが作成されると、そのユーザのユーザ名およびパスワードもWLSパーティションプラグインに渡される。
Quiesce
実施形態に従うと、quiesceオペレーションは、ALTER PLUGGABLE DATABASEコマンドを使用して、特定されたPDBを閉じる。
Start
実施形態に従うと、startオペレーションは、ALTER PLUGGABLE DATABASEコマンドを使用して、特定されたPDBを開始する。
ライフサイクルコンテキストスキーマ
実施形態に従うと、ライフサイクルコンテキストオブジェクトを介してプラグインへと渡されるプロパティからさまざまなSQLクローズが形成され得る。共有のリソースのうちのいくつかは以下を含む。
実施形態に従うと、SQLコマンドおよびさまざまなクローズは、ライフサイクルコンテキストプロパティとして特定され得る。データベースにおけるサポートに依存して、PDBを変更させる場合にもこれらのうちのほとんどが使用され得る。
リソースマネージャプロパティ
実施形態に従うと、PDBを作成する場合、CDBプランディレクティブも作成され得る。これに関係するプロパティは、キー「resourceManager」の下で特定されるべきである。以下は「resourceManager」についての例示的なプロパティである。
ユーザプロパティ
実施形態に従うと、PDBを作成する場合、ユーザも作成され得る。ユーザに関係するプロパティは、キー「databaseUser」の下で特定されるべきである。
図16は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてライフサイクルプラグインをサポートするための方法のフローチャートを示す。
図16に示されるように、ステップ680では、1つ以上のパーティションをサポートする、ソフトウェアアプリケーションの実行のためのドメインを含むアプリケーションサーバ環境が1つ以上のコンピュータにおいて提供される。各パーティションはドメインの管理およびランタイム区分を提供し、パーティションは、デプロイ可能なアプリケーションまたはリソースの集合を有しおよび/またはリソースグループテンプレートを参照する1つ以上のリソースグループを随意に含み得る。
ステップ682では、ライフサイクルマネージャが提供される。当該ライフサイクルマネージャは、たとえばアプリケーションサーバ、トラフィックディレクタまたはロードバランサ、および、データベースまたは他のコンポーネントといった、自身のパーティションに特有の構成を有し得る異なるコンポーネントにわたる構成インテグレーションを可能にする。
ステップ684において、複数のコンポーネントが提供される。当該複数のコンポーネントの各々は、ライフサイクルマネージャとそのコンポーネントとの間にブリッジを提供するライフサイクルプラグインを含む。
ステップ686では、パーティションの作成中または構成中に、複数のライフサイクルプラグインは、ライフサイクルマネージャがプラグインを呼び出すことができるライフサイクルオペレーションを実行することを可能にするインターフェイスを実現する。そのため、プラグインは、コンポーネントの実際の作成または構成を実行するために、その関連するコンポーネントにより動作し得る。
グローバルランタイム
実施形態に従うと、システムは、マルチテナントアプリケーションサーバ環境内のグローバルランタイムの使用をサポートする。
上述したように、フュージョンアプリ(Fusion Apps)またはフュージョンミドルウェア(Fusion Middleware)を使用するもののようなさまざまな実施形態に従うと、すべてのパーティションについてグローバルコンテキストでものを実行するための要件が存在し得る。
たとえば、フュージョンミドルウェア(FMW)の部分として提供されるメタデータサービス(MDS)コンポーネントにおいて、シェアされたドキュメントのすべてについての1つのグローバルキャッシュと、テナントに特有のカスタマイゼーションについてパーティションに特有のキャッシュとが存在するべきであるという要件がある。そのようなグローバルキャッシュを有することに加えて、キャッシュがパージまたは更新された場合、パーティションにおいて実行されるMDSインスタンスが、更新されたキャッシュにカスタマイゼーションを適用することができるように、すべてのパーティションに通知するための要件がさらに存在する。
さらに、マルチテナント環境におけるハイレベルでは、本願明細書においてグローバルアーティファクトと称される任意のパーティションを含む全ドメインにわたって共有される必要があるアーティファクトまたは他のコンポーネントが存在し得る。これらのアーティファクトは、グローバルランタイムと称されるマルチテナントコンテナにおいてグローバルまたはドメインレベルで存在または実行される。パーティション特有のアーティファクトまたはコンポーネントは、パーティションのコンテキストにおいて存在または実行されるものである。
実施形態に従うと、グローバルランタイムは任意の特定のパーティションにおいて実行されないが、その代りにドメインへ範囲指定される。たとえばJava Required Files(JRF)ドメインにおいて実行される場合、フュージョンアプリケーション(FA:Fusion Application)ためのテナントマッピングおよびマルチテナンシフラグを有効化した状態で、グローバルランタイムで実行されるコードは、テナントのコンテキストにスイッチングされ、テナントスイッチング(たとえばswitchTenant)APIを介してテナントに代わって何かを実行することができる。
実施形態に従うと、1つ以上のリソースグループも、グローバルランタイムで使用されるドメインレベルにて特定され得る。ドメインレベルのリソースグループのターゲティングは、リソースグループ内の個別のリソースではなく、リソースグループにセットされる。グループにおけるすべてのリソースは、リソースグループについて指定されるすべてのターゲットに対してターゲットとされる。クラスタにターゲットとされると、アプリケーションは、当該クラスタにおけるすべての管理されるサーバ上で実行される。
実施形態に従うと、ドメインレベルにおいて、リソースグループは、グループに関連するリソースへの簡便な方法である。システムは、グループ化されていないリソースと同じドメインレベルリソースグループにおいて宣言されたリソースを管理する。たとえば、リソースは、システムスタートアップ中にスタートされ、システムシャットダウン中に停止される。さらに、アドミニストレータは、グループ内の任意の単一のリソースを個々に停止させるか、開始させるかまたは除去することができ、グループ上で動作させることによって暗黙的にグループ内のすべてのリソースに対して機能することができる。
たとえば、グループを停止することにより、まだ停止されていないグループにおけるすべてのリソースが停止される。グループをスタートすることにより、まだスタートされていないグループにおける任意のリソースがスタートされる。グループを除去することにより、グループに含まれるすべてのリソースが除去される。
実施形態に従うと、パーティションにおいて定義される他のすべてのリソースグループの前に、グローバルランタイムリソースグループがスタートされなければならない。これは、パーティションのいずれかの前に、グローバルランタイムが初期化されることを可能にし、また、必要ならば、シェアされたクラスローダを使用して、シェアされたクラスをロードして、シェアすることが可能であるパーティションまたは他のアプリケーション/リソースグループの間で、パーティションを初期化する前にシェアする。
実施形態に従うと、グローバルランタイムで実行する場合、パーティション名はGLOBALを返し、idは0となる。
マルチテナンシフラグが有効化された状態でJRFドメインにおいて実行する場合、テナントコンテキストはGLOBALとしてセットされるテナンシを有し、テナントidも0になる。
実施形態に従うと、グローバルランタイムにて定義されるリソースグループは、グローバルランタイムにおいて実行されるアプリケーションが動作することを望み得るまたはクラスを共有することを望み得るパーティションと同じ管理されるサーバ/クラスタにターゲットとされなければならない。あるクラスタから別のクラスタにパーティション(リソースグループ)を移動させる場合、グローバルランタイムは、パーティションが移動されているグローバルランタイム上で実行されなければならないか、または、移動機能は、グローバルランタイムにおいて定義されたリソースグループは、パーティションのリソースグループを移動させる前に移動されることを保証しなければならない。
図17は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてグローバルランタイムの使用を示す。
実施形態に従うと、グローバルランタイムは、ドメインレベルで実行するように意図されるアプリケーションに使用され得る。特定のコンポーネントまたはアプリケーションは、executeAsを使用することを望む場合、グローバルランタイムのドメインレベルで実行されなければならない。その場合、グローバルランタイムは、ドメインランタイムと同じであるか、または、ドメインランタイムとして作用する。
実施形態に従うと、ExecuteAsおよびテナントオンボーディングは、上位スタックの使用のために、JRFタイプ機能として提供される。グローバルランタイムにおいて実行されるアプリケーションは、パーティションに提供されるセキュリティセッティングに依存して、さまざまなパーティションによって見られ得る。同様に、自身のUUIDを有するドメイン(グローバル)レベルで実行されるアプリケーションがパーティションに利用可能になり得る。
たとえば、グローバルPDBはテナントにわたってシェアされ得る。グローバルPDBは、上位スタックによってセットアップされ、SaaSユースケースと共に使用される共通の構成セットアップであって、コンソリデーションまたはPaaSユースケースと共通して使用されるものではない。
図17に示されるように、実施形態に従うと、グローバルランタイム700は、1つ以上のアプリケーションを含み得、テナントに代わってexecuteAsオペレーション704,705を実行するためにテナントスイッチングAPI702を使用して、1つ以上のパーティション710,712,714にアクセスするか、または、1つ以上のパーティション710,712,714に代わって動作し得る。
フュージョンアプリおよびフュージョンミドルウェアシナリオにおいて、すべてのパーティションについてグローバルコンテキストでものを実行するための要件が存在する。たとえば、メタデータサービス(MDS:Metadata Service)のコンテキストにおいて上述したように、すべてのシェアされたドキュメントについての1つのグローバルキャッシュと、テナントに特有のカスタマイゼーションについてのパーティション特有キャッシュとが存在するべきであるという要件がある。さらに、キャッシュがパージまたは更新された場合、パーティションにおいて実行されるMDSインスタンスが、更新されたキャッシュにカスタマイゼーションを適用し得るように、パーティションのすべてが通知されるべきであるという要件がある。
パーティションおよびテナント名およびID
上述したように、実施形態に従うと、グローバルランタイムで実行される場合、パーティション名はGLOBALを返し、IDは0になる。マルチテナンシフラグを有効化した状態でJRFドメインにおいて実行される場合、テナントコンテキストはGLOBALとしてセットされるテナンシを有し、テナントIDも0となる。
移動およびグローバルランタイム
上述したように、実施形態に従うと、グローバルランタイムにおいて定義されるリソースグループは、グローバルランタイムにおいて実行されるアプリケーションが、動作するかまたはクラスをシェアすることを望み得るパーティションであるので、同じ管理されたサーバ/クラスタにターゲットとされなければならない。
実施形態に従うと、あるクラスタから別のクラスタにパーティション(またはそのリソースグループ)を移動させる場合、グローバルランタイムは、パーティションが移動されているクラスタ上で実行されなければならないか、または、移動機能は、グローバルランタイムにおいて定義されたリソースグループが、パーティションのリソースグループを移動させる前に移動されることを保証しなければならない。
SaaSシナリオ例
下記の例は、SaaSシナリオにおいてドメインレベルでのリソースグループの使用を示す。カスタマーリレーションシップマネジメント(CRM:Customer Relationship Management)アプリケーションはグローバルランタイムにデプロイされる。ドメインレベルで定義されたリソースグループテンプレートは、パーティションおよびグローバルランタイムの両方によって使用され得る。読みやすさのために、下記の例はドメインレベルでのリソースグループのみを示す。
実施形態に従うと、アプリケーションおよびシェアされたライブラリも、ドメインレベルにてリソースグループにデプロイされ得る。
グローバルPDBおよびテナント特有のPDB
実施形態に従うと、たとえばオラクル12cデータベース(Oracle 12c Database)を実行する場合、多くのPDBが1つのコンテナデータベース(CDB:container database)において実行され得る。テナントのためのパーティションの作成により、PDBが作成され、使用するべきパーティションについてデータソースが構成される。
実施形態に従うと、テナントに特有なPDBに加えて、すべてのテナントにわたって共有されるグローバルPDBが随意に存在し得る。たとえば、MDSにおけるメタデータ(ドキュメント)は、グローバルPDBに格納され得、テナントに特有のカスタマイゼーションはテナントに特有のPDBに格納され得る。
実施形態に従うと、グローバルPDBからシェアされたデータを使用することができるようにするために、パーティションは、両方のPDB(グローバルおよびテナント特有)へのアクセスを必要とする。各パーティションは、シェアされたデータにアクセスすることができるべきグローバルPDBへの付加的な読取専用データソースと、さらに、テナントに特有なデータを格納するために使用されるテナントに特有なPDBへのデータソースとを有するように構成され得る。グローバルランタイムで実行されているシェアされたアプリケーションコードは、グローバルPDBに書き込むことができ、グローバルPDBへの読込/書込データソースを有するように構成される。
図18はさらに、実施形態に従った、マルチテナントアプリケーションサーバ環境におけるグローバルランタイムの使用を示す。
図18に示されるように、実施形態に従うと、各パーティションは、1つ以上のデータソース701,711,721を有するように構成され得、たとえば、グローバルランタイムがデータソースDS2を介するグローバルPDB702へのアクセスを有するということを含む。
図18においてさらに示されるように、パーティション1(710)およびパーティション2(720)において実行されるテナントは、DS1を介してそれらの特有のPDB(それぞれ712および722)への読込/書込アクセスを有しており、グローバルPDBにおける読込専用データにアクセスするために読込専用DS2(すべてのパーティションにわたってシェアされる同じデータソース)を介する。
データソース
実施形態に従うと、各パーティションは、テナントに特有なデータを書き込むために、そのPDBインスタンスを指すデータソースを有することになる。たとえばWLSといったアプリケーションサーバにおいてパーティションにおいて実行される場合、データソースの名称は各パーティションについて変更する必要はない。代わりに、アプリケーションサーバは、各パーティションベースで、JNDIツリーにおけるデータソースを分離する。これらのデータソースは、各テナントのパーティションについてリソースグループから参照されるリソースグループテンプレートにおいて定義され得る。
グローバルランタイムおよびパーティションでの実行
実施形態に従うと、グローバルランタイムに再デプロイされるアプリケーションまたはシェアされたライブラリは、パーティションにおいて実行されるすべてのテナントに特有なアプリケーションとシェアされ得る。パーティションにわたってシェアされることに加えて、グローバルランタイムで実行されるアプリケーションは、特定されたテナントのコンテキストにおいて実行されるパーティションのコンテキストにおいても実行することができる。しかしながら、逆は真ではない。すなわち、パーティションにおいて実行されるテナントに特有のアプリケーションは、グローバルランタイムのコンテキストにおいて実行することができない。下記のテーブルは、どのコンテキストスイッチングが許可されるか示す。
図19は、実施形態に従った、マルチテナントアプリケーションサーバ環境においてグローバルランタイムをサポートするための方法のフローチャートを示す。
図19に示されるように、ステップ740では、1つ以上のパーティションをサポートする、ソフトウェアアプリケーションの実行のためのドメインを含むアプリケーションサーバ環境が1つ以上のコンピュータにおいて提供される。各パーティションはドメインの管理およびランタイム区分を提供し、パーティションは、デプロイ可能なアプリケーションまたはリソースの集合を有しおよび/またはリソースグループテンプレートを参照する1つ以上のリソースグループを随意に含み得る。
ステップ742では、如何なる特定のパーティションにおいても実行されないグローバルランタイムが提供されるが、その代りにドメインへ範囲指定される。1つ以上のリソースグループが随意に、グローバルランタイムによる使用のためにドメインレベルにて特定され得る。
ステップ744では、テナントに代わってグローバルランタイムによって関数を実行する要求を受信すると、グローバルランタイムはテナントスイッチングインターフェイスを介してテナントのコンテキストにスイッチングし、そのテナントとして、または、そのテナントに代わって、関数を実行し得る。
この発明は、この開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または(1つもしくは複数の)コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するかまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。上記修正例および変形例は、記載された機能の任意の関連する組合せを含む。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって定義されるものと意図されている。

Claims (14)

  1. マルチテナントアプリケーションサーバ環境においてグローバルランタイムをサポートするためのシステムであって、その上で実行されるアプリケーションサーバ環境を含む1つ以上のコンピュータを含み、それとともに、
    前記アプリケーションサーバ環境内において使用することが可能である複数のリソースと、
    1つ以上のパーティションとを含み、各パーティションは、テナントに関連付けられることが可能であるドメインの区分を提供しており、さらに、
    グローバルランタイムを含み、前記グローバルランタイムは、1つ以上のリソースまたはリソースグループを、前記グローバルランタイムで使用されるドメインレベルで特定できるように、前記ドメインに範囲指定される、システム。
  2. 前記ドメイン内のデプロイ可能なリソースのグルーピングを定義するよう、1つ以上のリソースグループテンプレートが使用される、請求項1に記載のシステム。
  3. ドメインレベルのリソースグループのターゲティングは、リソースグループに、前記リソースグループ内のすべてのリソースが前記リソースグループについて指定されたすべてのターゲットに対してターゲティングされるように、セットすることが可能である、請求項1〜2のいずれか1項に記載のシステム。
  4. リソースグループがクラスタに対してターゲティングされるとき、前記リソースグループ内のアプリケーションは、前記クラスタ内の管理されるすべてのサーバ上で実行される、請求項1〜3のいずれか1項に記載のシステム。
  5. マルチテナントアプリケーションサーバ環境においてグローバルランタイムをサポートするための方法であって、
    その上で実行されるアプリケーションサーバ環境を含む1つ以上のコンピュータにおいて、
    前記アプリケーションサーバ環境内において使用することが可能である複数のリソースと、
    1つ以上のパーティションとを提供することを含み、各パーティションは、テナントに関連付けられることが可能であるドメインの区分を提供しており、さらに、
    グローバルランタイムを提供することを含み、前記グローバルランタイムは、1つ以上のリソースまたはリソースグループを、前記グローバルランタイムで使用されるドメインレベルで特定できるように、前記ドメインに範囲指定される、方法。
  6. 前記ドメイン内のデプロイ可能なリソースのグルーピングを定義するよう、1つ以上のリソースグループテンプレートが使用される、請求項5に記載の方法。
  7. ドメインレベルのリソースグループのターゲティングは、リソースグループに、前記リソースグループ内のすべてのリソースが前記リソースグループについて指定されたすべてのターゲットに対してターゲティングされるように、セットすることが可能である、請求項5〜6のいずれか1項に記載の方法。
  8. リソースグループがクラスタに対してターゲティングされるとき、前記リソースグループ内のアプリケーションは、前記クラスタ内の管理されるすべてのサーバ上で実行される、請求項5〜7のいずれか1項に記載の方法。
  9. 命令が格納された非一時的なコンピュータ読取可能記憶媒体であって、前記命令が1つ以上のコンピュータによって読取られて実行されると、前記1つ以上のコンピュータに、
    アプリケーションサーバ環境と、それとともに、
    前記アプリケーションサーバ環境内において使用することが可能である複数のリソースと、1つ以上のパーティションとを提供する方法を実行させ、各パーティションは、テナントに関連付けられることが可能であるドメインの区分を提供しており、さらに、前記1つ以上のコンピュータに、
    グローバルランタイムを提供することを含む方法を実行させ、前記グローバルランタイムは、1つ以上のリソースまたはリソースグループを、前記グローバルランタイムで使用されるドメインレベルで特定できるように、前記ドメインに範囲指定される、非一時的なコンピュータ読取可能記憶媒体。
  10. 前記ドメイン内のデプロイ可能なリソースのグルーピングを定義するよう、1つ以上のリソースグループテンプレートが使用される、請求項9に記載の非一時的なコンピュータ読取可能記憶媒体。
  11. ドメインレベルのリソースグループのターゲティングは、リソースグループに、前記リソースグループ内のすべてのリソースが前記リソースグループについて指定されたすべてのターゲットに対してターゲティングされるように、セットすることが可能である、請求項9〜10のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  12. リソースグループがクラスタに対してターゲティングされるとき、前記リソースグループ内のアプリケーションは、前記クラスタ内の管理されるすべてのサーバ上で実行される、請求項9〜11のいずれか1項に記載の非一時的なコンピュータ読取可能記憶媒体。
  13. 1つ以上のコンピュータシステム上での実行のためのプログラム命令を含むコンピュータプログラムであって、実行された際のプログラム命令は、前記1つ以上のコンピュータシステムに請求項5〜8のいずれか1項に記載の方法を実行させる、コンピュータプログラム。
  14. 非一時的なマシン読取可能データ記憶媒体上に格納される、請求項13に記載のコンピュータプログラムを含む、コンピュータプログラムプロダクト。
JP2017516339A 2014-09-25 2015-09-25 マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法 Active JP6611798B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201462055575P 2014-09-25 2014-09-25
US201462055577P 2014-09-25 2014-09-25
US62/055,575 2014-09-25
US62/055,577 2014-09-25
US201462055856P 2014-09-26 2014-09-26
US201462056427P 2014-09-26 2014-09-26
US62/055,856 2014-09-26
US62/056,427 2014-09-26
US14/864,723 US10382537B2 (en) 2014-09-25 2015-09-24 System and method for use of a global runtime in a multitenant application server environment
US14/864,723 2015-09-24
PCT/US2015/052459 WO2016049576A1 (en) 2014-09-25 2015-09-25 System and method for use of a global runtime in a multitenant application server environment

Publications (3)

Publication Number Publication Date
JP2017528846A true JP2017528846A (ja) 2017-09-28
JP2017528846A5 JP2017528846A5 (ja) 2018-09-13
JP6611798B2 JP6611798B2 (ja) 2019-11-27

Family

ID=54325691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017516339A Active JP6611798B2 (ja) 2014-09-25 2015-09-25 マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法

Country Status (6)

Country Link
US (2) US10382537B2 (ja)
EP (1) EP3198435A1 (ja)
JP (1) JP6611798B2 (ja)
KR (1) KR102436295B1 (ja)
CN (1) CN107077389B (ja)
WO (1) WO2016049576A1 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104254834B (zh) * 2012-06-08 2018-04-27 慧与发展有限责任合伙企业 云应用部署可移植性
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
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
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
US10318280B2 (en) 2014-09-24 2019-06-11 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
CN106716360B (zh) 2014-09-24 2020-03-03 甲骨文国际公司 支持多租户应用服务器环境中的补丁修补的系统和方法
US10462068B2 (en) 2014-09-25 2019-10-29 Oracle International Corporation System and method for tenant onboarding 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
US10084723B2 (en) 2014-09-25 2018-09-25 Oracle International Corporation System and method for providing an end-to-end lifecycle in a multitenant application server environment
US10467061B2 (en) 2014-09-25 2019-11-05 Oracle International Corporation System and method for resource overriding 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
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
US11057272B2 (en) 2014-09-26 2021-07-06 Oracle International Corporation System and method for transactions in a multitenant application server environment
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
EP3216177B1 (en) 2014-11-06 2021-04-14 Hewlett Packard Enterprise Development LP Network policy graphs
EP3311323A1 (en) 2015-06-22 2018-04-25 Draios Inc. Monitoring of applications isolated in containers
US9996321B2 (en) * 2015-06-23 2018-06-12 Microsoft Technology Licensing, Llc Multi-tenant, tenant-specific applications
US10635779B2 (en) * 2015-07-29 2020-04-28 Siemens Healthcare Gmbh Devices, methods and computer readable mediums for flexible delivery and deployment of medical applications
US9900377B2 (en) * 2015-08-07 2018-02-20 International Business Machines Corporation Dynamic healthchecking load balancing gateway
US10114626B2 (en) * 2015-11-23 2018-10-30 Sap Se Database level containers
US11212175B2 (en) * 2016-06-22 2021-12-28 EMC IP Holding Company, LLC Configuration management for cloud storage system and method
US10025924B1 (en) * 2016-08-26 2018-07-17 Parallels IP Holdings GmbH Taskless containers for enhanced isolation of users and multi-tenant applications
US10616320B2 (en) * 2016-09-16 2020-04-07 Oracle International Corporation System and method for restful management distributed collection in an application server environment
US10452387B2 (en) * 2016-09-16 2019-10-22 Oracle International Corporation System and method for partition-scoped patching in an application server environment
US10152306B2 (en) * 2016-11-07 2018-12-11 Palantir Technologies Inc. Framework for developing and deploying applications
US10812342B2 (en) 2017-04-28 2020-10-20 Hewlett Packard Enterprise Development Lp Generating composite network policy
US20180314957A1 (en) * 2017-04-28 2018-11-01 Hewlett Packard Enterprise Development Lp Inferring a label namespace
US11075799B2 (en) 2017-08-24 2021-07-27 Oracle International Corporation System and method for provisioning in a multi-tenant application server environment
CN107818448A (zh) * 2017-09-29 2018-03-20 北京博泰创智科技有限公司 一种用于人力资源的综合服务系统及方法
US10452646B2 (en) 2017-10-26 2019-10-22 Sap Se Deploying changes in a multi-tenancy database system
US10657276B2 (en) 2017-10-26 2020-05-19 Sap Se System sharing types in multi-tenancy database systems
US10740318B2 (en) 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US10482080B2 (en) 2017-10-26 2019-11-19 Sap Se Exchanging shared containers and adapting tenants in multi-tenancy database systems
US10740315B2 (en) 2017-10-26 2020-08-11 Sap Se Transitioning between system sharing types in multi-tenancy database systems
US10713277B2 (en) 2017-10-26 2020-07-14 Sap Se Patching content across shared and tenant containers in multi-tenancy database systems
US10621167B2 (en) 2017-10-26 2020-04-14 Sap Se Data separation and write redirection in multi-tenancy database systems
US10733168B2 (en) 2017-10-26 2020-08-04 Sap Se Deploying changes to key patterns in multi-tenancy database systems
US10417118B2 (en) * 2017-11-14 2019-09-17 International Business Machines Corporation Development-time awareness of a production dependency injection environment
CN108520004B (zh) * 2018-03-12 2021-11-19 舟谱数据技术南京有限公司 基于方法参数切面多租户数据源切换系统
US10915551B2 (en) 2018-06-04 2021-02-09 Sap Se Change management for shared objects in multi-tenancy systems
CN110581775B (zh) * 2018-06-08 2021-01-29 华为技术有限公司 网络切片的管理服务实例的管理方法和装置
US10942787B2 (en) * 2018-11-13 2021-03-09 Servicenow, Inc. Instance mapping engine and tools
US11200095B2 (en) * 2019-09-23 2021-12-14 Open Text Holdings, Inc. System and method for an efficient and scalable multitenant implementation for content management services platforms, including cloud deployed content management services platforms
US11222035B2 (en) * 2020-03-03 2022-01-11 Sap Se Centralized multi-tenancy as a service in cloud-based computing environment
US11082487B1 (en) 2020-09-22 2021-08-03 Vignet Incorporated Data sharing across decentralized clinical trials using customized data access policies
US11315041B1 (en) 2020-09-22 2022-04-26 Vignet Incorporated Machine learning with data sharing for clinical research data across multiple studies and trials
CN113806813A (zh) * 2021-08-27 2021-12-17 上海得帆信息技术有限公司 一种多数据源的数据隔离切换方法和系统
US11755317B2 (en) * 2021-10-15 2023-09-12 Salesforce, Inc. Extensible platform as a service platform for use by multiple enterprises
US11790107B1 (en) 2022-11-03 2023-10-17 Vignet Incorporated Data sharing platform for researchers conducting clinical trials

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (ja) * 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、マルチテナント制御方法及びマルチテナント制御プログラム
WO2014039918A1 (en) * 2012-09-07 2014-03-13 Oracle International Corporation Ldap-based multi-customer in-cloud identity management system
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法
JP2014524608A (ja) * 2011-08-05 2014-09-22 オラクル・インターナショナル・コーポレイション アプリケーション特性に基づく自動ハードウェアプロビジョニングのためのシステムおよび方法

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0614139A3 (en) * 1993-03-04 1995-05-03 Ibm External procedure call for a distributed processing environment.
KR100260380B1 (ko) 1996-01-26 2000-07-01 윤종용 마이크로 프로세서칩의 냉각팬 제어장치 및 그 제어방법
CN101639835A (zh) 2008-07-30 2010-02-03 国际商业机器公司 多租户场景中应用数据库分区的方法和装置
CN102170457A (zh) 2010-02-26 2011-08-31 国际商业机器公司 向应用的多租户提供服务的方法和装置
US8775626B2 (en) 2010-09-17 2014-07-08 Microsoft Corporation Using templates to configure cloud resources
KR20120045586A (ko) 2010-10-29 2012-05-09 한국전자통신연구원 다중 테넌트용 SaaS 애플리케이션 설정 장치 및 방법
CN102333115A (zh) 2011-09-01 2012-01-25 杭州湾云计算技术有限公司 一种将已有Web应用转化为SaaS多租户应用的方法和装置
US8589481B2 (en) 2011-09-14 2013-11-19 Microsoft Corporation Multi tenant access to applications
US8635152B2 (en) 2011-09-14 2014-01-21 Microsoft Corporation Multi tenancy for single tenancy applications
US20130081109A1 (en) 2011-09-23 2013-03-28 Corent Technology, Inc. Multi-Tenant Agile Database Connector
CN102571916B (zh) 2011-12-02 2015-11-04 曙光信息产业(北京)有限公司 一种云存储空间的租赁软件的架构与操作方法
CN102609271B (zh) 2012-02-20 2014-09-10 山东大学 一种元数据驱动的SaaS应用的可视化定制方法及系统
CN102571821A (zh) 2012-02-22 2012-07-11 浪潮电子信息产业股份有限公司 一种云安全访问控制模型
CN103455512A (zh) 2012-05-31 2013-12-18 上海博腾信息科技有限公司 Saas平台多租户数据管理模型
US20150296030A1 (en) * 2012-07-03 2015-10-15 Stephane Maes Managing a multitenant cloud service
US9621435B2 (en) 2012-09-07 2017-04-11 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
US9069979B2 (en) * 2012-09-07 2015-06-30 Oracle International Corporation LDAP-based multi-tenant in-cloud identity management system
US9838370B2 (en) * 2012-09-07 2017-12-05 Oracle International Corporation Business attribute driven sizing algorithms
US9424024B2 (en) 2012-09-07 2016-08-23 Oracle International Corporation System and method for elasticity management of services with a cloud computing environment
US9843487B2 (en) 2013-03-12 2017-12-12 Oracle International Corporation System and method for provisioning cloud services using a hybrid service management engine plugin
EP2813945A1 (en) 2013-06-14 2014-12-17 Tocario GmbH Method and system for enabling access of a client device to a remote desktop
WO2015112614A1 (en) 2014-01-21 2015-07-30 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
US10187454B2 (en) 2014-01-21 2019-01-22 Oracle International Corporation System and method for dynamic clustered JMS in an application server environment
US9967324B2 (en) 2014-01-21 2018-05-08 Oracle International Corporation System and method for providing data sources for use in a multitenant application server environment
US10635491B2 (en) 2014-01-21 2020-04-28 Oracle International Corporation System and method for use of a multi-tenant application server with a multitasking virtual machine
US10356161B2 (en) 2014-01-21 2019-07-16 Oracle International Corporation System and method for classloading in a multitenant application server environment
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
US10103946B2 (en) 2014-01-21 2018-10-16 Oracle International Corporation System and method for JMS integration in a multitenant application server environment
US9807119B2 (en) 2014-01-21 2017-10-31 Oracle International Corporation System and method for supporting web services in a multitenant application server environment
US9973384B2 (en) 2014-01-21 2018-05-15 Oracle International Corporation System and method for enterprise java bean support in a multitenant application server environment
US10348822B2 (en) 2014-01-21 2019-07-09 Oracle International Corporation System and method for clustering in 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
KR102375129B1 (ko) 2014-06-23 2022-03-16 오라클 인터내셔날 코포레이션 멀티테넌트 어플리케이션 서버 환경에서 작업 관리자를 제공하는 시스템 및 방법
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
US10594619B2 (en) 2014-06-23 2020-03-17 Oracle International Corporation System and method for supporting configuration of dynamic clusters in a multitenant application server environment
US10015242B2 (en) 2014-06-23 2018-07-03 Oracle International Corporation System and method for supporting restful management in a multitenant application server environment
US9959421B2 (en) 2014-06-23 2018-05-01 Oracle International Corporation System and method for monitoring and diagnostics in a multitenant application server environment
CN106462717B (zh) 2014-06-23 2019-06-14 甲骨文国际公司 用于在多租户应用服务器环境中支持安全性的系统和方法
EP3158447B1 (en) 2014-06-23 2022-03-16 Oracle International Corporation System and method for supporting multiple partition edit sessions in a multitenant application server environment
US9928111B2 (en) 2014-06-23 2018-03-27 Oracle International Corporation System and method for configuration tagging in a multitenant application server environment
US9792099B2 (en) 2014-06-24 2017-10-17 Oracle International Corporation System and method for supporting deployment in a multitenant application server environment
US11477278B2 (en) 2014-06-24 2022-10-18 Oracle International Corporation System and method for supporting partitions in a multitenant application server environment
US9665309B2 (en) 2014-06-27 2017-05-30 International Business Machines Corporation Extending existing storage devices in virtualized environments
US20150378938A1 (en) 2014-06-30 2015-12-31 Nate L. Lyman Wearable computer with expandable link capabilities
US10284486B2 (en) 2014-07-10 2019-05-07 Oracle International Corporation System and method for resource isolation and consumption in a multitenant application server environment
US10084843B2 (en) 2014-07-14 2018-09-25 Oracle Internatonal Corporation System and method for web container partitions in a multitenant application server environment
WO2016011051A1 (en) 2014-07-14 2016-01-21 Oracle International Corporation System and method for supporting namespaces in a multitenant application server environment
US10193754B2 (en) 2014-07-14 2019-01-29 Oracle International Corporation System and method for supporting connectors in a multitenant application server environment
US10318280B2 (en) 2014-09-24 2019-06-11 Oracle International Corporation System and method for supporting patching in a multitenant application server environment
US9930129B2 (en) 2014-09-24 2018-03-27 Oracle International Corporation System and method for java EE and java SE proxy data sources in a multitenant application server environment
CN106716360B (zh) 2014-09-24 2020-03-03 甲骨文国际公司 支持多租户应用服务器环境中的补丁修补的系统和方法
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
US10084723B2 (en) 2014-09-25 2018-09-25 Oracle International Corporation System and method for providing an end-to-end lifecycle in a multitenant application server environment
US10051043B2 (en) 2014-09-25 2018-08-14 Oracle International Corporation System and method for JMX support in a multitenant application server environment
US10467061B2 (en) 2014-09-25 2019-11-05 Oracle International Corporation System and method for resource overriding in a multitenant application server environment
WO2016049582A1 (en) 2014-09-25 2016-03-31 Oracle International Corporation System and method for determination of partition identifiers in a multitenant application server environment
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
US11057272B2 (en) 2014-09-26 2021-07-06 Oracle International Corporation System and method for transactions in a multitenant application server environment
US9843629B2 (en) 2014-09-26 2017-12-12 Oracle International Corporation System and method for protocol support in a multitenant application server environment
US10523709B2 (en) 2014-09-26 2019-12-31 Oracle International Corporation System and method for dynamic security configuration 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
EP3198426B1 (en) 2014-09-26 2023-08-30 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US9971671B2 (en) 2014-09-26 2018-05-15 Oracle International Corporation System and method for dynamic debugging in a multitenant application server environment
US10178184B2 (en) 2015-01-21 2019-01-08 Oracle International Corporation System and method for session handling in a multitenant application server environment
US10225209B2 (en) 2015-01-21 2019-03-05 Oracle International Corporation System and method for interceptors in a multitenant application server environment
US10250512B2 (en) 2015-01-21 2019-04-02 Oracle International Corporation System and method for traffic director support in a multitenant application server environment
US9977681B2 (en) 2015-01-21 2018-05-22 Oracle International Corporation System and method for partition startup/shutdown in a multitenant application server environment
US9811386B2 (en) 2015-10-23 2017-11-07 Oracle International Corporation System and method for multitenant execution of OS programs invoked from a multitenant middleware application
US9819609B2 (en) 2015-10-23 2017-11-14 Oracle International Corporation System and method for multitenant execution of OS programs invoked from a multitenant middleware application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (ja) * 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、マルチテナント制御方法及びマルチテナント制御プログラム
JP2014524608A (ja) * 2011-08-05 2014-09-22 オラクル・インターナショナル・コーポレイション アプリケーション特性に基づく自動ハードウェアプロビジョニングのためのシステムおよび方法
WO2014039918A1 (en) * 2012-09-07 2014-03-13 Oracle International Corporation Ldap-based multi-customer in-cloud identity management system
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法

Also Published As

Publication number Publication date
EP3198435A1 (en) 2017-08-02
CN107077389B (zh) 2021-01-05
US20190273778A1 (en) 2019-09-05
US10873624B2 (en) 2020-12-22
KR102436295B1 (ko) 2022-08-25
CN107077389A (zh) 2017-08-18
KR20170059454A (ko) 2017-05-30
US20160094647A1 (en) 2016-03-31
WO2016049576A1 (en) 2016-03-31
JP6611798B2 (ja) 2019-11-27
US10382537B2 (en) 2019-08-13

Similar Documents

Publication Publication Date Title
JP6611798B2 (ja) マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法
JP6599448B2 (ja) マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法
US10462068B2 (en) System and method for tenant onboarding in a multitenant application server environment
KR102464337B1 (ko) 멀티테넌트 어플리케이션 서버 환경에서 파티션 식별자들의 결정을 위한 시스템 및 방법
US10050903B2 (en) System and method for multi-tenancy enablement of enterprise JAVA (TM) applications using resource proxies and application tenancy context
US10198210B2 (en) Access control in a decentralized control plane of a computing system
US10476938B2 (en) System and method for multitenancy store in a multitenant application server environment
US10091135B2 (en) System and method for multi-tenancy enablement of enterprise java applications using resource proxies and application tenancy context
US10356161B2 (en) System and method for classloading in a multitenant application server environment
US9973384B2 (en) System and method for enterprise java bean support in a multitenant application server environment
US11075799B2 (en) System and method for provisioning in a multi-tenant application server environment
KR102559507B1 (ko) 멀티테넌트 미들웨어 어플리케이션에서 호출된 os 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180731

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180731

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191029

R150 Certificate of patent or registration of utility model

Ref document number: 6611798

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250