【文献】
貞森渉、小田木寿俊,IBM汎用機zSeriesでLinuxが動く メインフレームLinuxの全貌 第4回 LPARでCPUとメモリの柔軟な割り当てを実,月刊リナックスマガジン,日本,株式会社アスキー,2004年 8月 1日,第6巻,第8号,pp.94−99
(58)【調査した分野】(Int.Cl.,DB名)
各々のリソースグループテンプレートは、1つ以上の関連するアプリケーションを、前記1つ以上の関連するアプリケーションが依存するリソースとともに含む、請求項2または3に記載の方法。
前記複数のデプロイ可能なリソースは、パーティション認識型リソースおよびパーティション非認識型リソースのうち1つ以上を含む、請求項2から4のいずれかに記載の方法。
各々のパーティションはパーティション名または識別子に関連付けることができ、これにより、複数の要求を複数の適切なパーティションに伝達することができるようにパーティションコンテキストを決定することが可能になる、請求項2から6のいずれかに記載の方法。
各々のリソースグループまたは前記リソースグループを含む前記パーティションは、前記リソースグループまたはパーティションが対象設定されてデプロイされるべき仮想ターゲットを定義する仮想ターゲット情報に関連付けることができ、ウェブ層コンポーネントはルーティング情報を含み、前記ルーティング情報は、特定のパーティションのための前記仮想ターゲットを対応するターゲットにマッピングして、これにより、前記特定のパーティションのための複数の要求が複数の適切なターゲットに向けられるようにする、請求項2から9のいずれかに記載の方法。
プログラム命令を機械読取り可能フォーマットで含むコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されると、前記コンピュータシステムに、請求項2から10のいずれかに記載の方法を実行させる、コンピュータプログラム。
【発明を実施するための形態】
【0006】
詳細な説明:
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてパーティションをサポートするためのシステムおよび方法がこの明細書中に記載される。一実施形態に従うと、アプリケーションサーバアドミニストレータ(たとえば、WLSアドミニストレータ)はパーティションを作成または削除することができ、パーティションアドミニストレータは、パーティションのさまざまなアスペクトを管理することができ、たとえば、リソースグループを作成し、アプリケーションを特定のパーティションにデプロイし、パーティションのための特定の領域を参照することができる。リソースグループは、ドメインにおいてグローバルに定義することができるか、または、パーティションに特有のものにすることができる。アプリケーションは、ドメインレベルにおいてリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されるかもしくはドメインに範囲指定されるリソースグループにデプロイすることができる。システムは、任意には、テナントによって使用されるように、当該テナントに1つ以上のパーティションを関連付けることができる。
【0007】
アプリケーションサーバ(たとえば、マルチテナント(Multi-Tenant:MT))環境
図1は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す。
【0008】
図1に示されるように、一実施形態に従うと、アプリケーションサーバ(たとえばマルチテナント(MT))環境100または他のコンピューティング環境は、ソフトウェアアプリケーションのデプロイメントおよび実行を可能にするものであって、アプリケーションサーバドメインを定義するために実行時に用いられるドメイン102の構成を含み、当該ドメイン102の構成に従って動作するように構成することができる。
【0009】
一実施形態に従うと、アプリケーションサーバは、実行時に使用されるよう定義される1つ以上のパーティション104を含み得る。各々のパーティションは、グローバルユニークパーティション識別子(identifier:ID)およびパーティション構成に関連付けることができ、さらに、リソースグループテンプレートの参照126および/またはパーティション特有のアプリケーションもしくはリソース128とともに、1つ以上のリソースグループ124を含み得る。ドメインレベルのリソースグループ、アプリケーションおよび/またはリソース140も、任意にはリソースグループテンプレートの参照とともに、ドメインレベルで定義することができる。
【0010】
各々のリソースグループテンプレート160は、1つ以上のアプリケーションA162、B164、リソースA166、B168および/または他のデプロイ可能なアプリケーションもしくはリソース170を定義することができ、リソースグループによって参照することができる。たとえば、
図1に例示されるように、パーティション104におけるリソースグループ124は、リソースグループテンプレート160を参照する(190)ことができる。
【0011】
概して、システムアドミニストレータは、パーティション、ドメインレベルのリソースグループおよびリソースグループテンプレート、ならびにセキュリティ領域を定義することができるとともに、パーティションアドミニストレータは、たとえば、パーティションレベルのリソースグループを作成するか、アプリケーションをパーティションにデプロイするかまたはパーティションについての特定の領域を参照することによって、それら自体のパーティションのアスペクトを定義することができる。
【0012】
図2は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
【0013】
図2に示されるように、一実施形態に従うと、パーティション202は、たとえば、リソースグループテンプレート210の参照206を含むリソースグループ205と、仮想ターゲット(たとえば仮想ホスト)情報207と、プラグ接続可能なデータベース(pluggable database:PDB)情報208とを含み得る。リソースグループテンプレート(たとえば210)は、たとえば、Java(登録商標)メッセージサーバ(Java Message Server:JMS)サーバ213、ストア・アンド・フォワード(store-and-forward:SAF)エージェント215、メールセッションコンポーネント216またはJavaデータベースコネクティビティ(Java Database Connectivity:JDBC)リソース217などのリソースとともに、複数のアプリケーションA211およびB212を定義することができる。
【0014】
図2に例示されるリソースグループテンプレートが一例として提供される。他の実施形態に従うと、さまざまなタイプのリソースグループテンプレートおよび要素を提供することができる。
【0015】
一実施形態に従うと、パーティション(たとえば202)内のリソースグループが、特定のリソースグループテンプレート(たとえば210)を参照する(220)と、パーティション特有の情報230(たとえば、パーティション特有のPDB情報)を示すために、特定のパーティションに関連付けられた情報を、参照されたリソースグループテンプレートと組合わせて用いることができる。次いで、パーティション特有の情報は、パーティションによって使用されるリソース(たとえば、PDBリソース)を構成するようにアプリケーションサーバによって使用可能である。たとえば、パーティション202に関連付けられたパーティション特有のPDB情報は、そのパーティションによって使用されるべき適切なPDB238を備えたコンテナデータベース(container database:CDB)236を構成する(232)ようにアプリケーションサーバによって使用可能である。
【0016】
同様に、一実施形態に従うと、特定のパーティションに関連付けられた仮想ターゲット情報を用いて、そのパーティションによって使用されるべきパーティション特有の仮想ターゲット240(たとえば、ユニフォーム・リソース・ロケータ(uniform resource locator:URL)(たとえば、http://baylandurgentcare.com)によってアクセス可能にすることができるbaylandurgentcare.com)を定義する(239)ことができる。
【0017】
図3は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
【0018】
一実施形態に従うと、config.xml構成ファイルなどのシステム構成を用いて、パーティションを定義する。当該パーティションは、そのパーティションに関連付けられたリソースグループについての構成エレメントおよび/または他のパーティションプロパティを含む。値は、プロパティ名/値の対を用いてパーティションごとに指定することができる。
【0019】
一実施形態に従うと、複数のパーティションは、管理されたサーバ/クラスタ242内で、または、CDB243にアクセス可能でありかつウェブ層244を介してアクセス可能である同様の環境内で、実行することができる。これにより、たとえば、ドメインまたはパーティションを(CDBの)PDBのうち1つ以上のPDBに関連付けることが可能となる。
【0020】
一実施形態に従うと、複数のパーティションの各々、この例においてはパーティションA250およびパーティションB260は、そのパーティションに関連付けられた複数のリソースを含むように構成することができる。たとえば、パーティションAは、アプリケーションA1 252と、アプリケーションA2 254と、JMS A 256と、さらには、PDB A 259に関連付けられたデータソースA257とをともに含むリソースグループ251を含むように構成することができる。この場合、パーティションは仮想ターゲットA258を介してアクセス可能である。同様に、パーティションB260は、アプリケーションB1 262と、アプリケーションB2 264と、JMS B 266と、さらには、PDB B 269に関連付けられたデータソースB267とをともに含むリソースグループ261を含むように構成することができる。この場合、パーティションは仮想ターゲットB268を介してアクセス可能である。
【0021】
上述の例のうちいくつかはCDBおよびPDBの使用を例示しているが、他の実施形態に従うと、他のタイプのマルチテナントのデータベースまたは非マルチテナントのデータベースをサポートすることができる。この場合、特定の構成は、たとえば、スキーマを使用するかまたはさまざまなデータベースを使用することによって、各々のパーティションのために提供することができる。
【0022】
リソース
一実施形態に従うと、リソースは、環境のドメインにデプロイすることができるシステムリソース、アプリケーションまたは他のリソースもしくはオブジェクトである。たとえば、一実施形態に従うと、リソースは、アプリケーション、JMS、JDBC、JavaMail、WLDFもしくはデータソースであり得るか、または、サーバ、クラスタもしくは他のアプリケーションサーバターゲットにデプロイすることができる他のシステムリソースもしくは他のタイプのオブジェクトであり得る。
【0023】
パーティション
一実施形態に従うと、パーティションは、パーティション識別子(partition identifier:ID)および構成に関連付けられ得るドメインのうち実行時間および管理の下位区分またはスライスであるとともに、アプリケーションを含み得て、ならびに/または、リソースグループおよびリソースグループテンプレートを使用することによってドメイン全体に渡るリソースを参照し得る。
【0024】
概して、パーティションは、それ自体のアプリケーションを含み、リソースグループテンプレートを介してドメイン全体に渡るアプリケーションを参照し、それ自体の構成を有し得る。パーティション可能なエンティティは、リソース、たとえば、JMS、JDBC、JavaMail、およびWLDFリソースや、他のコンポーネント、たとえばJNDIネームスペース、ネットワークトラフィック、ワークマネージャ、セキュリティポリシーおよび領域などを含み得る。マルチテナント環境のコンテキストにおいては、システムは、テナントに関連付けられたパーティションの管理および実行時間のアスペクトへのアクセスをテナントに提供するように構成することができる。
【0025】
一実施形態に従うと、パーティション内の各々のリソースグループは、任意には、リソースグループテンプレートを参照することができる。パーティションは、複数のリソースグループを有し得るとともに、それらの各々はリソースグループテンプレートを参照し得る。各々のパーティションは、パーティションのリソースグループが参照するリソースグループテンプレートにおいて指定されていない構成データについてのプロパティを定義することができる。これにより、パーティションが、リソースグループテンプレートで定義されたデプロイ可能なリソースをそのパーティションで使用されるべき特定の値にバインドするものとして機能することが可能となる。場合によっては、パーティションは、リソースグループテンプレートによって指定される構成情報を無効にすることができる。
【0026】
一実施形態に従うと、パーティション構成は、たとえば、config.xml構成ファイルによって定義されるように、複数の構成エレメントを含み得る。複数の構成エレメントは、たとえば、「パーティション(partition)」(そのパーティションを定義する属性および子エレメントを含む);「リソース・グループ(resource-group)」(パーティションにデプロイされるアプリケーションおよびリソースを含む);「リソース・グループ・テンプレート(resource-group-template)」;(そのテンプレートによって定義されるアプリケーションおよびリソースを含む);「jdbc・システム・リソース・無効化(jdbc-system-resource-override)」(データベース特有のサービス名、ユーザ名およびパスワードを含む);ならびに、「パーティション・プロパティ(partition-properties)」(リソースグループテンプレートにおいてマクロ置換のために使用可能なプロパティキー値を含む)を含む。
【0027】
始動後、システムは、構成ファイルによって提供される情報を用いて、リソースグループテンプレートから各々のリソースについてのパーティション特有の構成エレメントを生成することができる。
【0028】
リソースグループ
一実施形態に従うと、リソースグループは、名前付けされ完全に修飾されたデプロイ可能なリソースの集合であって、ドメインまたはパーティションのレベルで定義することができ、かつ、リソースグループテンプレートを参照することができる。リソースグループにおけるリソースは、完全に修飾されているものと見なされる。というのも、アドミニストレータが、それらのリソースを開始させるのに必要とされるかまたはそれらのリソースに接続するのに必要とされるすべての情報、たとえば、データソースに接続するためのクレデンシャル、またはアプリケーションについての目標情報、を提供しているからである。
【0029】
システムアドミニストレータは、ドメインレベルで、またはパーティションレベルでリソースグループを公開することができる。ドメインレベルでは、リソースグループは、関連するリソースをグループ化するのに好都合な方法を提供する。システムは、グループ化されていないリソースと同じドメインレベルのリソースグループにおいて公開されたリソースを管理することができる。このため、リソースは、システム起動中に開始させたり、システムのシャットダウン中に停止させたりすることができる。アドミニストレータはまた、グループ内のリソースを個々に停止させるか、開始させるかまたは削除することができ、グループ上で動作させることによって暗黙的にグループ内のすべてのリソースに対して機能することができる。たとえば、あるリソースグループを停止させることにより、まだ停止されていないグループにおけるすべてのリソースを停止させ;リソースグループを始動させることにより、まだ始動させていないグループにおけるいずれのリソースも始動させ、リソースグループを削除することにより、グループに含まれるすべてのリソースを削除する。
【0030】
パーティションレベルでは、システムまたはパーティションアドミニストレータは、任意のセキュリティ制限下で、或るパーティションにおいて0個以上のリソースグループを構成することができる。たとえば、SaaS使用事例においては、さまざまなパーティションレベルのリソースグループは、ドメインレベルのリソースグループテンプレートを参照することができる。PaaS使用事例においては、リソースグループテンプレートを参照しないが代わりにそのパーティション内でのみ利用可能にされるべきアプリケーションおよびそれらの関連するリソースを表わすパーティションレベルのリソースグループを作成することができる。
【0031】
一実施形態に従うと、リソースグループ化を用いることで、アプリケーションと、それらアプリケーションがドメイン内で別個の管理ユニットとして使用するリソースとをともにグループ化することができる。たとえば、以下に記載される医療記録(MedRec)アプリケーションにおいては、リソースグループ化によりMedRecアプリケーションおよびそのリソースが定義される。複数のパーティションは、各々がパーティション特有の構成情報を用いて、同じMedRecリソースグループを実行することができ、このため、各々のMedRecインスタンスの一部であるアプリケーションが各々のパーティションにとって特有のものにされる。
【0032】
リソースグループテンプレート
一実施形態に従うと、リソースグループテンプレートは、リソースグループから参照することができドメインレベルで定義されるデプロイ可能なリソースの集合であり、そのリソースを起動するのに必要な情報のうちいくらかは、パーティションレベル構成の仕様をサポートするように、テンプレート自体の一部として記憶されない可能性がある。ドメインは、リソースグループテンプレートをいくつ含んでもよく、それらの各々は、たとえば、1つ以上の関連するJavaアプリケーションと、それらのアプリケーションが依存するリソースとを含み得る。このようなリソースについての情報のうちのいくらかは、すべてのパーティションにわたって同じであってもよく、他の情報はパーティションごとに異なっていてもよい。すべての構成がドメインレベルで指定される必要はなく、代わりに、パーティションレベル構成が、マクロまたはプロパティ名/値の対を使用することによってリソースグループテンプレートで指定することができる。
【0033】
一実施形態に従うと、特定のリソースグループテンプレートは、1つ以上のリソースグループによって参照可能である。概して、任意の所与のパーティション内では、リソースグループテンプレートは一度に1つのリソースグループによって参照することができる。すなわち、同じパーティション内で複数のリソースグループによって同時に参照することはできない。しかしながら、異なるパーティションにおける別のリソースグループによって同時に参照することができる。リソースグループを含むオブジェクト、たとえばドメインまたはパーティションは、プロパティ名/値の割当てを用いて、任意のトークンの値をリソースグループテンプレートで設定することができる。システムは、参照するリソースグループを用いてリソースグループテンプレートを起動させると、それらのトークンを、リソースグループが含むオブジェクトにおいて設定された値と置換えることができる。場合によっては、システムはまた、静的に構成されたリソースグループテンプレートおよびパーティションを用いて、パーティション/テンプレートの組合せごとに実行時間構成を生成することができる。
【0034】
たとえば、SaaS使用事例においては、システムは、同じアプリケーションおよびリソースを複数回を起動することができるが、そのうちの1回は、それらを用いるであろう各パーティションごとに起動され得る。アドミニストレータがリソースグループテンプレートを定義すると、これらは、どこか他のところで提供されるであろう情報を表わすためにトークンを用いることができる。たとえば、CRM関連のデータリソースに接続する際に使用されるユーザ名は、リソースグループテンプレートにおいて\${CRMDataUsername}として示すことができる。
【0035】
テナント
一実施形態に従うと、マルチテナント(MT)アプリケーションサーバ環境などのマルチテナント環境においては、テナントは、1つ以上のパーティションおよび/もしくは1つ以上のテナント認識型アプリケーションによって表現可能であるエンティティ、または1つ以上のパーティションおよび/もしくは1つ以上のテナント認識型アプリケーションに関連付けることができるエンティティである。
【0036】
たとえば、テナントは、別個のユーザ組織、たとえばさまざまな外部会社、特定の企業内のさまざまな部門(たとえばHRおよび財務部)などを表わすことができ、それら各々は、異なるパーティションに関連付けることができる。テナントのグローバルユニークアイデンティティ(テナントID)は、特定の時点において特定のユーザを特定のテナントに関連付けるものである。システムは、たとえば、ユーザアイデンティティの記録を参照することによって、ユーザアイデンティティから、特定のユーザがどのテナントに属しているかを導き出すことができる。ユーザアイデンティティにより、ユーザが実行することを認可されているアクションをシステムが実施することが可能となる。ユーザアイデンティティは、ユーザがどのテナントに属し得るかを含むが、これに限定されない。
【0037】
一実施形態に従うと、システムは、互いに異なるテナントの管理および実行時間を分離することを可能にする。たとえば、テナントは、それらのアプリケーションのいくつかの挙動、およびそれらがアクセスできるリソースを構成することができる。システムは、特定のテナントが別のテナントに属するアーティファクトを確実に管理することができないようにし、かつ、実行時に、特定のテナントの代わりに機能するアプリケーションがそのテナントに関連付けられたリソースのみを参照するが他のテナントに関連付けられたリソースは参照しないことを確実にすることができる。
【0038】
一実施形態に従うと、テナント非認識型アプリケーションは、アプリケーションが応答している要求をどんなユーザが提示したかにかかわらず、アプリケーションが用いる如何なるリソースにもアクセス可能となるように明示的にテナントに対処する論理を含まないものである。対照的に、テナント認識型アプリケーションは、テナントに明示的に対処する論理を含む。たとえば、ユーザのアイデンティティに基づいて、アプリケーションは、ユーザが属するテナントを導き出すことができ、テナント特有のリソースにアクセスするためにその情報を用いることができる。
【0039】
一実施形態に従うと、システムは、テナント認識型となるように明示的に書き込まれたアプリケーションをユーザがデプロイすることを可能にし、これにより、アプリケーション開発者は、現在のテナントのテナントIDを取得することができる。次いで、テナント認識型アプリケーションは、このテナントIDを用いて、アプリケーションの単一のインスタンスを用いている複数のテナントを処理することができる。
【0040】
たとえば、単一の診療室または病院をサポートするMedRecアプリケーションは、2つの異なるパーティションまたはテナント(たとえばBayland Urgent CareテナントおよびValley Healthテナント)に対して公開することができ、その各々は、基礎をなすアプリケーションコードを変更することなく、別個のPDBなどの別個のテナント特有のリソースにアクセスすることができる。
【0041】
例示的なドメイン構成およびマルチテナント環境
一実施形態に従うと、アプリケーションは、ドメインレベルでリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されているかもしくはドメインに範囲指定されているリソースグループにデプロイすることができる。アプリケーション構成は、アプリケーション毎またはパーティション毎に指定されたデプロイメントプランを用いて無効化することができる。デプロイメントプランはまた、リソースグループの一部として指定することができる。
【0042】
図4は、一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す。
【0043】
一実施形態に従うと、システムがパーティションを始動させると、当該システムは、提供された構成に従って、それぞれのデータベースインスタンスに対して、各パーティションごとに1つずつ、仮想ターゲット(たとえば仮想ホスト)および接続プールを作成する。
【0044】
典型的には、各々のリソースグループテンプレートは、1つ以上の関連するアプリケーションと、それらアプリケーションが依存するリソースとを含み得る。各々のパーティションは、それが参照するリソースグループテンプレートにおいて指定されていない構成データを提供することができるが、これは、場合によっては、リソースグループテンプレートによって指定されるいくつかの構成情報を無効にすることを含めて、パーティションに関連付けられた特定値に対するリソースグループテンプレートにおけるデプロイ可能なリソースのバインディングを行なうことによって、実行可能である。これにより、システムは、各々のパーティションが定義したプロパティ値を用いて、パーティション毎にリソースグループテンプレートによってさまざまに表わされるアプリケーションを始動させることができる。
【0045】
いくつかのインスタンスにおいては、パーティションが含み得るリソースグループは、リソースグループテンプレートを参照しないか、または、それら自体のパーティション範囲指定されたデプロイ可能なリソースを直接定義する。パーティション内で定義されるアプリケーションおよびデータソースは、概して、そのパーティションにとってのみ利用可能である。リソースは、パーティション:<partitionName>/<resource JNDI name>、またはドメイン:<resource JNDI name>を用いて、パーティションの中からアクセスすることができるようにデプロイ可能である。
【0046】
たとえば、MedRecアプリケーションは、複数のJavaアプリケーション、データソース、JMSサーバおよびメールセッションを含み得る。複数のテナントのためにMedRecアプリケーションを実行させるために、システムアドミニストレータは、テンプレートにおけるそれらのデプロイ可能なリソースを公開している単一のMedRecリソースグループテンプレート286を定義することができる。
【0047】
ドメインレベルのデプロイ可能なリソースとは対照的に、リソースグループテンプレートにおいて公開されたデプロイ可能なリソースは、テンプレートにおいて完全には構成されない可能性があるか、または、いくつかの構成情報が不足しているので、そのままでは起動させることができない。
【0048】
たとえば、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.com304と、Valley Healthテナントによって使用されるVH−Aパーティションに関連付けられた仮想ホストvalleyhealth.com308とを含む各々のテナントのための仮想ターゲット/仮想ホストを作成する(302,306)ことができる。
【0049】
図5は、一実施形態に従った例示的なマルチテナント環境をさらに示す。
図5に示されるように、2つのパーティションがMedRecリソースグループテンプレートを参照している上述の例から引続いて、一実施形態に従うと、サーブレットエンジン310は、この例においてはBayland Urgent Careの医師テナント環境320およびValley Healthの医師テナント環境330といった複数のテナント環境をサポートするために用いることができる。
【0050】
一実施形態に従うと、各々のパーティション321および331は、そのテナント環境についての入来トラフィックを受入れるための異なる仮想ターゲットと、異なるURL322,332とを定義することができる。異なるURL322,332は、パーティションと、この例ではBayland Urgent Careデータベースまたはvalley healthデータベースを含むそれぞれのリソース324、334とに接続するためのものである。同じアプリケーションコードが両方のデータベースに対して実行され得るので、データベースインスタンスは互換性のあるスキーマを用いることができる。システムがパーティションを始動させると、当該システムは、それぞれのデータベースインスタンスに対する接続プールおよび仮想ターゲットを作成することができる。
【0051】
パーティション関連の特徴
一実施形態に従うと、アプリケーションサーバアドミニストレータ(たとえば、WLSアドミニストレータ)はパーティションを作成または削除することができ、パーティションアドミニストレータは、パーティションのさまざまなアスペクトを管理することができ、たとえば、リソースグループを作成し、アプリケーションを特定のパーティションにデプロイし、パーティションのための特定の領域を参照することができる。リソースグループは、ドメインにおいてグローバルに定義することができるか、またはパーティションに特有のものにすることができる。アプリケーションは、ドメインレベルにおいてリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されるかもしくはドメインに範囲指定されるリソースグループにデプロイすることができる。システムは、任意には、テナントによって使用されるように、当該テナントに1つ以上のパーティションを関連付けることができる。
【0052】
図6は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるパーティションの使用を示す。
図6に示されるように、一実施形態に従うと、第1または特定のパーティションA400はパーティションID402に関連付けることができ、リソースグループ404は任意のリソースグループテンプレート参照406に関連付けることができ、および/または、1つ以上のパーティション特有のリソースグループ、アプリケーションもしくはリソース410に関連付けることができる。特定のリソースグループテンプレートA420は、1つ以上のアプリケーション422、リソース424またはリソース構成トークン426を定義することができ、このため、パーティションのリソースグループ(たとえばパーティションA)がそのリソースグループテンプレートを参照(430)したときに、アプリケーション、リソースおよびリソース構成トークンを用いて、リソースグループを構成する(432)ことができる。この場合、仮想ターゲット情報412を定義すること、および/または、リソースグループに仮想ターゲット438(たとえば、baylandurgentcare.com)を関連付け、さらに次に、ターゲットシステム440(たとえばコンピュータサーバまたはクラスタ)に関連付けることを含み得る。
【0053】
図7は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるパーティションの使用をさらに示す。
図7に示されるように、一実施形態に従うと、第2のパーティションB450は、同様に、パーティションID452に関連付けることができ、リソースグループ454は任意のリソースグループテンプレート参照456に関連付けることができ、および/または、1つ以上のパーティション特有のリソースグループ、アプリケーションもしくはリソース460に関連付けることができる。第2のリソースグループテンプレートB470は、同様に、1つ以上のアプリケーション472、リソース474またはリソース構成トークン476を定義することができる。パーティションのリソースグループ(たとえば、パーティションB)は、リソースグループテンプレートAおよびBのいずれかを参照する(480,482)ことができ、このため、選択されたリソースグループテンプレート(この例においては、リソースグループテンプレートB)のアプリケーション、リソースおよびリソース構成トークンを用いて、リソースグループを構成する(484)ことができる。この場合、仮想ターゲット情報462を定義すること、および/または、リソースグループに仮想ターゲット488(たとえば、valleyhealth.com)を関連付け、さらに次に、ターゲットシステムに関連付けることを含み得る。
【0054】
図8は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるパーティションの使用方法を示す。
図8に示されるように、一実施形態に従うと、ステップ490において、ソフトウェアアプリケーションの実行のためのドメインならびに1つ以上のパーティションおよびリソースグループを含むアプリケーションサーバ環境が提供される。各々のパーティションは、ドメインの管理および実行時間下位区分を提供し、1つ以上のリソースグループを含み得る。各々のリソースグループは、リソースグループテンプレートを参照し得るデプロイ可能なアプリケーションまたはリソースの集合である。
【0055】
ステップ492において、各々のパーティションは構成情報に関連付けられ、このため、始動後、システムは、パーティションに関連付けられた構成情報を用いて、参照済みの如何なるリソースグループテンプレートからのものも含めて、各々のリソースグループおよびその内部のリソースのためのパーティション特有の構成エレメントを生成することができる。
【0056】
ステップ494において、各々のリソースグループまたはそのリソースグループを含むパーティションは、そのリソースグループまたはパーティションがターゲット設定されてデプロイされるべきターゲットを定義する仮想ターゲット(たとえば仮想ホスト)情報に関連付けることができる。
【0057】
ステップ496において、各々のパーティションは、任意には、マルチテナント環境における或るテナントによって使用されるように、そのテナントに関連付けることができる。
【0058】
パーティション管理
一実施形態に従うと、システムアドミニストレータはパーティションを作成し、削除し、移行させることができ、さらに、ターゲットを作成し、割当てることができる。パーティションアドミニストレータは、パーティションのさまざまなアスペクトをパーティションレベルで管理することができ、たとえば、リソースグループを作成するか、または、パーティション内のリソースグループにアプリケーションをデプロイすることができる。システムアドミニストレータは、パーティションのセキュリティ特徴(たとえばセキュリティ領域)を設定もしくは変更することができるか、または、共有(ドメインレベル)のリソースグループもしくはリソースグループテンプレートを参照することができる。
【0059】
パーティション名およびパーティションID
一実施形態に従うと、各々のパーティションは2つの識別子、すなわち、パーティション名およびパーティションID、を有する。パーティション名は、人が読取り可能な名前であって、パーティション作成時に指定されるものであり、パーティションを管理する人によって用いられかつ人にとって使い易い識別子を優先するコードによって用いられる識別子である。パーティションIDは、たとえばUUIDとして、パーティションのために生成されるそれほど読取り易くない名前であって、このため、時間的かつ空間的に固有であり、パーティション同士を区別するためにグローバルユニークIDを必要とするコードによって用いられる。パーティション名およびパーティションIDは、パーティション・コンフィグ・ビーン(partition config bean)および呼出しコンテキスト(ComponentInvocationContext)の両方から検索することができる。
【0060】
パーティション構成
一実施形態に従うと、パーティション構成は、config.xmlに含まれており、以下の構成エレメントを含む。
【0061】
パーティション:これは、トップレベルの構成エレメントであって、パーティションを定義する属性および子エレメントを含んでいる。パーティションエレメントはドメインレベルで定義されるだろう。パーティションは、領域、パーティションへのネットワークマッピング、SSL情報および他のパーティション情報を定義するリソースグループ、システムリソースオーバーライドエレメントおよび属性を含み得る。
【0062】
リソース・グループ:このエレメントは、パーティションにデプロイされたアプリケーションおよびリソースを含む。リソースグループは、共通のアプリケーションまたはリソースが1つの場所で定義されて複数のパーティション間で共有され得るように、リソースグループテンプレートを拡張することができる。リソースグループ内の名前は、パーティションにわたって固有でなければならない。すなわち、同じ名前が異なるリソースグループテンプレートまたはリソースグループ内で定義された場合、検証エラーが発生するだろう。
【0063】
リソース・グループ・テンプレート:このエレメントがドメインレベルで定義され、アプリケーションおよびリソースを含んでいたとしても、パーティション内からリソースグループテンプレートを参照するすべてのリソースグループがすべてのリソースおよびアプリケーションを獲得しているので、論理的には、リソースグループテンプレートはパーティションのために指定された構成を含んでいる。
【0064】
構成・プロパティ:このエレメントはプロパティキー値を含む。構成プロパティは、パーティションレベルでも、ドメインレベルでのリソースグループにおいても指定することができる。パーティション特有のオーバーライドのためのモデルとしては、パーティション特有にする必要のある最も共通する属性がパーティションの子構成エレメントに含まれているべきものとされ、これにより、顧客が、特定の構成エレメントを介して、共通して用いられているパーティション特有の構成を指定することがより容易になる。
【0065】
パーティションの移植性
一実施形態に従うと、パーティションは、1つのドメイン(たとえばソースドメイン)からエクスポートされて、別のドメイン(たとえばターゲットドメイン)にインポートされ得る。パーティションをエクスポートすることにより、いずれのドメインをシャットダウンまたは再始動させる必要もなく、別のシステムにコピーしてターゲットドメインにインポートすることができるパーティションアーカイブが作成される。
【0066】
パーティションおよびリソースグループの移行性
一実施形態に従うと、パーティション内のリソースグループは1つの仮想ターゲットから別の仮想ターゲットへと移行させることができ、これにより、保守性が可能になり得る。
【0067】
テナントとパーティションとの関係
一実施形態に従うと、テナントは、たとえばフュージョン・アプリケーション(Fusion Application:FA)またはフュージョン・ミドルウェア(Fusion Middleware:FMW)環境におけるアプリケーションサーバ環境外で定義することができる。
【0068】
パーティションへのホストおよびURLのマッピング
一実施形態に従うと、各々のコンテナ/要求ハンドラは、パーティションコンテキストを確立して、それを、後で使用できるようにするために呼出しコンテキストマネージャ(ComponentInvocationContext Manager)へとプッシュすることができる。パーティションテーブルを用いることにより、コンテナがこれを実行することを、ホスト名/ポート/URLからパーティション名へのマッピングを行なうことによって、支援することができる。パーティションへのマッピングは、ホスト名(しばしば、仮想ホスト名);ポート番号;URIパス・プレフィクスのうち1つ以上を一致させることによって達成することができる。パーティションは、(パーティションの利用可能なターゲットリストを介して)それに関連付けられた1つ以上の仮想ターゲットを有することができる。仮想ホストと同様に、仮想ターゲットは、1つ以上のホスト名、任意のURIパス・プレフィクスおよび任意のポート番号を指定する能力を提供する。入来要求がパーティションに関連付けられた仮想ターゲットのうちのいずれに関してもこの情報と一致する場合、要求がそのパーティションにおけるアプリケーションを対象としたものであると想定される。
【0069】
パーティションリソースのターゲット設定
一実施形態に従うと、仮想ターゲットを用いることで、リソースグループのためのターゲットが仮想化され、これにより、物理リソースの如何なる属性をも備えることなくリソースグループ構成がポータブルにされ、これにより、システムアドミニストレータが、パーティションのクライアントに影響を及ぼすことなく、システムの物理的トポロジーを変更することが可能となる。ターゲット設定はリソースグループレベルで指定され、リソースグループに含まれるすべてのリソースに適用される。1セットの利用可能なターゲットとデフォルトターゲットとはパーティションレベルで指定することができる。仮想ターゲットは、管理されたサーバもしくはクラスタにターゲット設定することができるか、または、複数のサーバもしくはクラスタにターゲット設定することができ、かつ、同じパーティションにおける2つ以上のリソースグループによって共有可能である。
【0070】
リソースグループが指定された複数のターゲットを有する場合、それらターゲットは、リソースグループ内に含まれるリソースのためのターゲットとして用いられることとなる。リソースグループが指定されたターゲットを有さない場合、但し、パーティションレベルでのデフォルトターゲットが設定されている場合、それは、リソースグループ内に含まれるすべてのリソースのためのターゲットとして用いられることとなる。リソースグループが指定されたターゲットを有さず、パーティションレベルでのデフォルトターゲットが設定されていない場合、リソースグループにおけるリソースはターゲット設定されないだろう。
【0071】
単純な事例においては、1つのターゲットが存在する場合、または、すべてのリソースグループが1つのクラスタまたは管理されたサーバにターゲット設定されている場合、クラスタまたは管理されたサーバは仮想ターゲットにおいて指定することができ、同じ仮想ターゲットがパーティションのためのデフォルトターゲットになり得る。このような場合、リソースグループは具体的には仮想ターゲットにターゲット設定される必要がない。
【0072】
アプリケーションデプロイメントおよび構成
一実施形態に従うと、アプリケーションおよび共有ライブラリは、或るパーティション内の或るリソースグループにデプロイすることができる。アプリケーション構成は、アプリケーションサーバによって提供されるデプロイメントプランメカニズムを用いて無効にすることができる。デプロイメントプランは、アプリケーションごとに、パーティションごとに、またはリソースグループの一部として、指定することができる。
【0073】
ネットワーク層
一実施形態に従うと、システムは、入来要求をパーティションIDに関連付けるネットワーク層を含み得る。この関連付けは、http/httpsトラフィック、RMI/T3、RMI/IIOPおよび他のプロトコルを含むすべてのネットワークプロトコルに対して行なうことができる。たとえば、要求URL(たとえば、仮想ターゲット/仮想ホストに加えて任意の経路)に基づいて、ネットワーク層は、要求についてのターゲットパーティションを決定し、決定されたパーティションIDを要求の実行コンテキストに追加することができる。各々のパーティションが固有の仮想ターゲットとネットワークアクセスポイント(network access point:NAP)との組合せを用いるように構成されている場合、システムは、特定の仮想ターゲットについてのすべての要求を対応するパーティションにマッピングすることができる。そうではなく、パーティションが仮想ターゲットにおける同じホスト名を共有するように構成されている場合、URIプレフィックスは仮想ターゲットのために定義することができ、このため、システムは、仮想ターゲットに加えて構成されたURIプレフィックスに基づいて適切なパーティションを決定することができるようになる。
【0074】
ワークマネージャ
一実施形態に従うと、システムはパーティション認識型ワークマネージャを含み得る。各々のワークマネージャは、デッドロックを回避するように作業要求を処理するためのスレッドが常に利用可能になることを確実にするために最小限のスレッド制約と、要求を実行する同時発生的なスレッドの数を制限するために最大限のスレッド制約と共に、ワークロードを相対的に優先させて構成することができる。パーティション特有のワークマネージャは各パーティションごとに作成することができ、これにより、各々のパーティション内のアプリケーションが、その各パーティションについてそれらアプリケーション用に構成された公平なスレッドリソース使用量の共有割当て分を上回ることを確実に防ぐようにし得る。
【0075】
セキュリティ領域
一実施形態に従うと、各々のパーティションはセキュリティ領域を参照することができる。領域はまた、複数のパーティションによって参照することもできる。要求がシステムに入力されると、システムは、仮想ターゲットから適切なパーティションを決定し、要求の実行コンテキストにパーティションIDを記憶させることができる。その後、認証または認可のアクションが必要になると、システムはパーティションIDを利用して、使用すべき適切な領域を決定することができる。
【0076】
JNDI
一実施形態に従うと、パーティション認識型JNDIフレームワークは、アプリケーションが、指名されたオブジェクトをバインドしてそれらをパーティション単位で検索することを可能にする。始動およびデプロイメント時間中に、アプリケーションサーバコンテナは、各々のパーティション特有のアプリケーションを対応するパーティションIDに関連付けることができる。次いで、JNDIフレームワークは、指名されたオブジェクトのバインドまたは照合中にそのパーティションIDを利用することができる。パーティション特有のオブジェクトは他のパーティションから分離させることができ、これにより、同じアプリケーションのうちのさまざまなインスタンスが、複数のパーティション特有のオブジェクトを同じJNDI名で登録することが可能となる。
【0077】
ネームスペースおよび範囲指定
一実施形態に従うと、パーティションのうち指名されたコンポーネント、たとえば、リソースグループ、アプリケーションは、パーティションに範囲指定することができる。パーティションはドメインに範囲指定される。リソースグループテンプレートは、ドメインにおいて定義されて範囲指定されるので、ドメインにわたって固有になるはずである。リソースグループテンプレートにおいて定義されたリソースおよびアプリケーションは、リソースグループテンプレートに範囲指定される。パーティションが2つ以上のリソースグループテンプレートを参照する場合、参照されているリソースグループテンプレートにおいて定義されているリソースの名前は、それらの間では一意となる必要がある。
【0078】
実行時間MBeans
一実施形態に従うと、ServerRuntimeMBeanは、実行時間MBeanツリーにおけるルートノードとして機能する。この階層は、クラスタ、サーバチャネル、JTAおよびアプリケーションリソースを含むアプリケーションサーバについてのすべての実行時間MBeansを含む。システムは、ServerRuntime MBeanに対する各々のパーティションのためのパーティション特有のブランチを含み得る。この場合、PartitionRuntimeMBeanが、JMS、JDBC、デプロイメント、WLDF、コヒーレンスおよびコネクタを含むアプリケーションサーバサブシステムのためのコンポーネント特有のMBeansを含むであろう場合も含まれる。パーティション特有のリソースのための実行時間MBeansは、ServerRuntime MBeanレベルのグローバルな階層にではなく、パーティション特有の階層に存在しており、これにより、パーティション特有の監視および統計が可能となる。
【0079】
REST管理API
一実施形態に従うと、RESTインターフェイスを提供することができる。RESTfulリソースは、ミドルウェアの管理に有意な利点を提供している:すなわち、http/httpsプロトコルに依存するということは、標準的なファイアウォールおよびフロント・エンド・ホスト構成を用いてアクセスが可能化および制御され得ることを意味する。これは、特定のパーティションアドミニストレータが、アプリケーションサーバドメインによってサポートされている狭帯域の1スライスのポートおよびチャネルだけにしかアクセスできないような、MT環境においては特に重要である。
【0080】
マルチ編集セッション
一実施形態に従うと、システムはマルチ編集セッションをサポートすることができる。パーティションアドミニストレータは、指名された特定の編集セッションにおけるパーティション関連の構成のうちのいずれかを変更することができる。ConfigurationManagerMBeanに関連付けられたAPIは、パーティション特有の編集セッションの開始/保存/稼働を可能にする。
【0081】
エンド・ツー・エンドのライフサイクル管理
一実施形態に従うと、プロバイダは、たとえばOracle Traffic Director(OTD)、データベース、コヒーレンスまたはJMSコンポーネントといった特定のアプリケーションを実行するのに必要なインフラストラクチャコンポーネントを有線接続するために用いることができる。たとえば、いくつかの実施形態においては、特定のアプリケーションについてのパーティション特有のインスタンスは同じデータベースインスタンスを共有することができる。リソースグループテンプレートは、単一のデータベースインスタンスのためにドメインレベルのJDBCシステムリソースを参照することができ、そのリソースグループテンプレートを参照するすべてのパーティションは、次いで、同じデータベースインスタンスを用いることができる。一実施形態に従うと、或るアプリケーションのいくつかのパーティション特有インスタンスは、共通のスキーマまたは互換性のあるスキーマを用いてさまざまなデータベースインスタンスに接続することができる。リソースグループテンプレートは、構成ファイル(たとえばconfig.xml)のそれぞれのパーティションセクションにおいて指定されるべき構成のうちのいくらかを残して、JDBCシステムリソースを公開することができる。データソースのためのこのようなパーティションレベル構成の例は、接続先のURL、および/または、参照されたデータベースインスタンスへのアクセスを認証および認可するためのユーザクレデンシャルを含み得る。
【0082】
一実施形態に従うと、データソースインプリメンテーションは、コンテナデータベース内の割当てられたPDBに対する各々のパーティションのための別個の物理接続プールを作成することができ、これにより、PDBがアプリケーションサーバにとって別個のデータベースとして出現することが可能となり、さらに、各々のパーティションの特定のクレデンシャルを用いて、そのパーティションのプール内のパーティションのために1つ以上の接続を確立することが可能となる。代替的には、システムは、PDB間の接続切換えをサポートすることができる。この場合、別個のPDBは各々のパーティションごとに提供することができるが、但し、データソースインプリメンテーションは、PDBを所有するコンテナデータベースに対する単一の接続プールを共有する。アプリケーションがデータ要求を提出すると、パーティションのコンテキストにおいてそれが実行される。次いで、システムは、その接続に関する要求を実行する前に、パーティションIDを用いて、共有接続を正確なパーティションコンテキストに切換えることができる。
【0083】
この発明は、この開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取可能記憶媒体を含む、1つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【0084】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または(1つもしくは複数の)コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【0085】
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。