(57)【特許請求の範囲】
【請求項１】
アプリケーションサーバ環境において使用するワークマネージャを提供するためのシステムであって、
アプリケーションサーバ環境を含む１つ以上のコンピュータを備え、前記アプリケーションサーバ環境は、前記１つ以上のコンピュータ上で実行され、前記１つ以上のコンピュータは、前記アプリケーションサーバ環境とともに、
前記アプリケーションサーバ環境で使用できるデプロイ可能な複数のリソースと、
各々がドメインの管理およびランタイム区分を提供する複数のパーティションとを含み、前記システムはさらに、
パーティションワークマネージャと、前記パーティションワークマネージャは、前記アプリケーションサーバ環境内の前記複数のパーティション各々にフェアシェア値を割当てるように、構成可能であり、各フェアシェア値は、前記システムが使用することによって、前記複数のパーティションの各々に関連付けられたスレッド使用量を制御するために、設定され、
複数のパーティションレベルワークマネージャとを備え、
前記複数のパーティションの各々のパーティションは、前記複数のパーティションレベルワークマネージャのうちの異なるパーティションレベルワークマネージャに関連付けられ、
各前記パーティションレベルワークマネージャの初期のコンフィグレーションは、前記パーティションワークマネージャのコンフィギュレーションによって設定される、システム。
【請求項２】
前記パーティションワークマネージャはさらに、前記アプリケーションサーバ環境内の各パーティションに対する最小スレッド制約値を与えるように構成され、前記最小スレッド制約値は、前記システムが使用することによって、１つ以上のパーティションに関連付けられたスレッド使用量を制御するために、設定される、請求項１に記載のシステム。
【請求項３】
前記パーティションワークマネージャはさらに、前記アプリケーションサーバ環境内の各パーティションに対するパーティション容量制約値を与えるように構成され、前記パーティション容量制約値は、前記システムが使用することによって、各パーティションからのワーク要求の数を制限するために、設定される、請求項１または２に記載のシステム。
【請求項４】
前記１つ以上のパーティションに割当てられるフェアシェア値は各々、１と９９の間の数であり、前記フェアシェア値すべての合計は１００である、請求項１〜３のいずれかに記載のシステム。
【請求項５】
前記各フェアシェア値はさらに、前記システムが利用できる全てのスレッドが使用中である場合には、待ち行列中のパーティションそれぞれからのワーク要求に順序を付けるために、設定される、請求項１〜４のいずれかに記載のシステム。
【請求項６】
前記１つ以上のパーティションレベルワークマネージャは各々、各パーティション内で実行されている１つ以上のアプリケーションにパーティションフェアシェア値を割当てるように、パーティションアドミニストレータによって構成可能であり、各パーティションフェアシェア値は、前記システムによって使用されることにより、前記各パーティション内で実行されている１つ以上のアプリケーションに関連付けられたスレッド使用量を制御するために、設定される、請求項１〜５のいずれかに記載のシステム。
【請求項７】
前記１つ以上のパーティションレベルワークマネージャは各々、前記パーティションアドミニストレータの指示を受け付けて再構成可能である、請求項６に記載のシステム。
【請求項８】
前記アプリケーションサーバ環境はマルチテナントアプリケーションサーバ環境を含み、前記システムは、テナントに前記１つ以上のパーティションを、前記テナントによる使用のために関連付けることができる、請求項１〜７のいずれかに記載のシステム。
【請求項９】
アプリケーションサーバ環境において使用するワークマネージャを提供するための方法であって、
その上で実行されるアプリケーションサーバ環境を含む、１つ以上のコンピュータに、
前記アプリケーションサーバ環境で使用できるデプロイ可能な複数のリソースと、
各々がドメインの管理およびランタイム区分を提供する複数のパーティションとを与えるステップと、
パーティションワークマネージャを与えるステップとを含み、前記パーティションワークマネージャは構成可能であり、前記方法はさらに、
前記パーティションワークマネージャを、前記アプリケーションサーバ環境内の前記１つ以上のパーティション各々にフェアシェア値を割当てるように、構成するステップを含み、各フェアシェア値は、システムが使用することによって、１つ以上のパーティションに関連付けられたスレッド使用量を制御するために、設定され
複数のパーティションレベルワークマネージャを与えるステップとを含み、
前記複数のパーティションの各々のパーティションは、前記複数のパーティションレベルワークマネージャのうちの異なるパーティションレベルワークマネージャに関連付けられ、
各前記パーティションレベルワークマネージャの初期のコンフィグレーションは、前記パーティションワークマネージャのコンフィギュレーションによって設定される、方法。
【請求項１０】
前記アプリケーションサーバ環境内の各パーティションに対するパーティション最大スレッド制約を与えるように前記パーティションワークマネージャを構成するステップをさらに含み、前記パーティション最大スレッド制約は、前記システムが使用することによって、１つ以上のパーティションに関連付けられたスレッド使用量を制御するために、設定される、請求項９に記載の方法。
【請求項１１】
コンピュータシステムによって実行されると前記コンピュータシステムに請求項９または１０に記載の方法を実行させる機械読取可能なフォーマットのプログラム命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権に関する注意
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００２】
発明の分野：
本発明の実施形態は、概して、アプリケーションサーバおよびクラウドプラットフォーム環境に関し、特に、マルチテナントアプリケーションサーバ環境において使用するワークマネージャを提供するためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景：
ソフトウェアアプリケーションサーバは、その例として、Oracle WebLogic Server（ＷＬＳ）およびGlassfishを含んでおり、概して、エンタープライズソフトウェアアプリケーションを実行するための管理された環境を提供する。近年、クラウド環境において使用するための技術も開発されており、ユーザまたはテナントが、クラウド環境内でそれらのアプリケーションを開発して実行することが可能になり、かつ、環境によって提供される分散型リソースを活用することが可能になっている。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要：
一実施形態に従い、本明細書において、アプリケーションサーバ環境において使用するワークマネージャを提供するためのシステムおよび方法が説明される。一実施形態に従うと、システムアドミニストレータは、マルチテナントアプリケーションサーバ環境内の各パーティションに対してパーティションワーク要求の優先順位（フェアシェア値）を与えるように、パーティションワークマネージャを構成することができる。システムアドミニストレータはさらに、最小スレッド制約制限、パーティション容量制約、および／またはパーティション最大スレッド制約を課すように、パーティションワークマネージャを構成することができる。これらの制約はすべて、上記環境内部のパーティションによるスレッドリソースの使用を制限する。
【図面の簡単な説明】
【０００５】
【図１】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す図である。
【図２】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。
【図３】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。
【図４】一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す図である。
【図５】一実施形態に従った例示的なマルチテナント環境をさらに示す図である。
【図６】一実施形態に従った、マルチテナントアプリケーションサーバ環境におけるパーティションワークマネージャの使用を示す図である。
【図７】一実施形態に従った、マルチテナントアプリケーションサーバ環境におけるパーティションワークマネージャの使用を示す図である。
【図８】マルチテナントアプリケーションサーバ環境において使用するワークマネージャを提供するための代表的な方法のフローチャートである。
【図９】マルチテナントアプリケーションサーバ環境において使用するワークマネージャを提供するための代表的な方法のフローチャートである。
【発明を実施するための形態】
【０００６】
詳細な説明：
一実施形態に従い、本明細書において、アプリケーションサーバ環境において使用するワークマネージャを提供するためのシステムおよび方法が説明される。一実施形態に従うと、システムアドミニストレータは、マルチテナントアプリケーションサーバ環境内の各パーティションに対してパーティションワーク要求の優先順位（フェアシェア値）を与えるように、パーティションワークマネージャを構成することができる。システムアドミニストレータはさらに、パーティション最小スレッド制約、パーティション容量制約、および／またはパーティション最大スレッド制約を課すように、パーティションワークマネージャを構成することができる。これらの制約はすべて、上記環境内部のパーティションによるスレッドリソースの使用を制限する。
【０００７】
アプリケーションサーバ（たとえば、マルチテナント（Multi-Tenant：ＭＴ）環境
図１は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す。
【０００８】
図１に示されるように、一実施形態に従うと、アプリケーションサーバ（たとえばマルチテナント（ＭＴ））環境１００または他のコンピューティング環境は、ソフトウェアアプリケーションのデプロイメントおよび実行を可能にするものであって、アプリケーションサーバドメインを定義するために実行時に用いられるドメイン１０２構成を含み、当該ドメイン１０２構成に従って動作するように構成することができる。
【０００９】
一実施形態に従うと、アプリケーションサーバは、実行時に使用されるよう定義される１つ以上のパーティション１０４を含み得る。各々のパーティションは、グローバルユニークパーティション識別子（identifier：ＩＤ）およびパーティション構成に関連付けることができ、さらに、リソースグループテンプレートの参照１２６および／またはパーティション特有のアプリケーションもしくはリソース１２８とともに、１つ以上のリソースグループ１２４を含み得る。ドメインレベルのリソースグループ、アプリケーションおよび／またはリソース１４０も、任意にはリソースグループテンプレートの参照とともに、ドメインレベルで定義することができる。
【００１０】
各々のリソースグループテンプレート１６０は、１つ以上のアプリケーションＡ１６２、Ｂ１６４、リソースＡ１６６、Ｂ１６８および／または他のデプロイ可能なアプリケーションもしくはリソース１７０を定義することができ、リソースグループによって参照することができる。たとえば、図１に例示されるように、パーティション１０４におけるリソースグループ１２４は、リソースグループテンプレート１６０を参照する（１９０）ことができる。
【００１１】
概して、システムアドミニストレータは、パーティション、ドメインレベルのリソースグループおよびリソースグループテンプレート、ならびにセキュリティ領域を定義することができるとともに、パーティションアドミニストレータは、たとえば、パーティションレベルのリソースグループを作成するか、アプリケーションをパーティションにデプロイするかまたはパーティションについての特定の領域を参照することによって、それら自体のパーティションのアスペクトを定義することができる。
【００１２】
図２は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
【００１３】
図２に示されるように、一実施形態に従うと、パーティション２０２は、たとえば、リソースグループテンプレート２１０の参照２０６を含むリソースグループ２０５と、仮想ターゲット（たとえば仮想ホスト）情報２０７と、プラグ接続可能なデータベース（pluggable database：ＰＤＢ）情報２０８とを含み得る。リソースグループテンプレート（たとえば２１０）は、たとえば、Ｊａｖａ（登録商標）メッセージサーバ（Java Message Server：ＪＭＳ）サーバ２１３、ストア・アンド・フォワード（store-and-forward：ＳＡＦ）エージェント２１５、メールセッションコンポーネント２１６またはＪａｖａデータベースコネクティビティ（Java Database Connectivity：ＪＤＢＣ）リソース２１７などのリソースとともに、複数のアプリケーションＡ２１１およびＢ２１２を定義することができる。
【００１４】
図２に例示されるリソースグループテンプレートが一例として提供される。他の実施形態に従うと、さまざまなタイプのリソースグループテンプレートおよび要素を提供することができる。
【００１５】
一実施形態に従うと、パーティション（たとえば２０２）内のリソースグループが、特定のリソースグループテンプレート（たとえば２１０）を参照する（２２０）と、パーティション特有の情報２３０（たとえば、パーティション特有のＰＤＢ情報）を示すために、特定のパーティションに関連付けられた情報を、参照されたリソースグループテンプレートと組合わせて用いることができる。次いで、パーティション特有の情報は、パーティションによって使用されるリソース（たとえば、ＰＤＢリソース）を構成するようにアプリケーションサーバによって使用可能である。たとえば、パーティション２０２に関連付けられたパーティション特有のＰＤＢ情報は、そのパーティションによって使用されるべき適切なＰＤＢ２３８を備えたコンテナデータベース（container database：ＣＤＢ）２３６を構成する（２３２）ようにアプリケーションサーバによって使用可能である。
【００１６】
同様に、一実施形態に従うと、特定のパーティションに関連付けられた仮想ターゲット情報を用いて、そのパーティションによって使用されるべきパーティション特有の仮想ターゲット２４０（たとえば、ユニフォーム・リソース・ロケータ（uniform resource locator：ＵＲＬ）（たとえば、http://baylandurgentcare.com）によってアクセス可能にすることができるbaylandurgentcare.com）を定義する（２３９）ことができる。
【００１７】
図３は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
【００１８】
一実施形態に従うと、config.xml構成ファイルなどのシステム構成を用いて、パーティションを定義することができる。当該パーティションは、そのパーティションに関連付けられたリソースグループについての構成エレメントおよび／または他のパーティションプロパティを含む。値は、プロパティ名／値の対を用いてパーティションごとに指定することができる。
【００１９】
一実施形態に従うと、複数のパーティションは、管理されたサーバ／クラスタ２４２内で、または、ＣＤＢ２４３にアクセス可能でありかつウェブ層２４４を介してアクセス可能である同様の環境内で、実行することができる。これにより、たとえば、ドメインまたはパーティションを（ＣＤＢの）ＰＤＢのうち１つ以上のＰＤＢに関連付けることが可能となる。
【００２０】
一実施形態に従うと、複数のパーティションの各々、この例においてはパーティションＡ２５０およびパーティションＢ２６０は、そのパーティションに関連付けられた複数のリソースを含むように構成することができる。たとえば、パーティションＡは、アプリケーションＡ１  ２５２と、アプリケーションＡ２  ２５４と、ＪＭＳ  Ａ  ２５６と、さらには、ＰＤＢ  Ａ  ２５９に関連付けられたデータソースＡ２５７とをともに含むリソースグループ２５１を含むように構成することができる。この場合、パーティションは仮想ターゲットＡ２５８を介してアクセス可能である。同様に、パーティションＢ２６０は、アプリケーションＢ１  ２６２と、アプリケーションＢ２  ２６４と、ＪＭＳ  Ｂ  ２６６と、さらには、ＰＤＢ  Ｂ  ２６９に関連付けられたデータソースＢ２６７とをともに含むリソースグループ２６１を含むように構成することができる。この場合、パーティションは仮想ターゲットＢ２６８を介してアクセス可能である。
【００２１】
上述の例のうちいくつかはＣＤＢおよびＰＤＢの使用を例示しているが、他の実施形態に従うと、他のタイプのマルチテナントのデータベースまたは非マルチテナントのデータベースをサポートすることができる。この場合、特定の構成は、たとえば、スキーマを使用するかまたはさまざまなデータベースを使用することによって、各々のパーティションのために提供することができる。
【００２２】
リソース
一実施形態に従うと、リソースは、環境のドメインにデプロイすることができるシステムリソース、アプリケーションまたは他のリソースもしくはオブジェクトである。たとえば、一実施形態に従うと、リソースは、アプリケーション、ＪＭＳ、ＪＤＢＣ、ＪａｖａＭａｉｌ、ＷＬＤＦもしくはデータソースであり得るか、または、サーバ、クラスタもしくは他のアプリケーションサーバターゲットにデプロイすることができる他のシステムリソースもしくは他のタイプのオブジェクトであり得る。
【００２３】
パーティション
一実施形態に従うと、パーティションは、パーティション識別子（partition identifier：ＩＤ）および構成に関連付けられ得るドメインのうちランタイムおよび管理の区分またはスライスであるとともに、アプリケーションを含み得て、ならびに／または、リソースグループおよびリソースグループテンプレートを使用することによってドメイン全体に渡るリソースを参照し得る。
【００２４】
概して、パーティションは、それ自体のアプリケーションを含み、リソースグループテンプレートを介してドメイン全体に渡るアプリケーションを参照し、それ自体の構成を有し得る。パーティション可能なエンティティは、リソース、たとえば、ＪＭＳ、ＪＤＢＣ、ＪａｖａＭａｉｌ、およびＷＬＤＦリソースや、他のコンポーネント、たとえばＪＮＤＩネームスペース、ネットワークトラフィック、ワークマネージャ、セキュリティポリシーおよび領域などを含み得る。マルチテナント環境のコンテキストにおいては、システムは、テナントに関連付けられたパーティションの管理およびランタイムのアスペクトへのアクセスをテナントに提供するように構成することができる。
【００２５】
一実施形態に従うと、パーティション内の各々のリソースグループは、任意には、リソースグループテンプレートを参照することができる。パーティションは、複数のリソースグループを有し得るとともに、それらの各々はリソースグループテンプレートを参照し得る。各々のパーティションは、パーティションのリソースグループが参照するリソースグループテンプレートにおいて指定されていない構成データについてのプロパティを定義することができる。これにより、パーティションが、リソースグループテンプレートで定義されたデプロイ可能なリソースをそのパーティションで使用されるべき特定の値にバインドするものとして機能することが可能となる。場合によっては、パーティションは、リソースグループテンプレートによって指定される構成情報を無効にすることができる。
【００２６】
一実施形態に従うと、パーティション構成は、たとえば、config.xml構成ファイルによって定義されるように、複数の構成エレメントを含み得る。複数の構成エレメントは、たとえば、「パーティション（partition）」（そのパーティションを定義する属性および子エレメントを含む）；「リソース・グループ（resource-group）」（パーティションにデプロイされるアプリケーションおよびリソースを含む）；「リソース・グループ・テンプレート（resource-group-template）」；（そのテンプレートによって定義されるアプリケーションおよびリソースを含む）；「ｊｄｂｃ・システム・リソース・無効化（jdbc-system-resource-override）」（データベース特有のサービス名、ユーザ名およびパスワードを含む）；ならびに、「パーティション・プロパティ（partition-properties）」（リソースグループテンプレートにおいてマクロ置換のために使用可能なプロパティキー値を含む）を含む。
【００２７】
始動後、システムは、構成ファイルによって提供される情報を用いて、リソースグループテンプレートから各々のリソースについてのパーティション特有の構成エレメントを生成することができる。
【００２８】
リソースグループ
一実施形態に従うと、リソースグループは、名前付けされ完全に修飾されたデプロイ可能なリソースの集合であって、ドメインまたはパーティションのレベルで定義することができ、かつ、リソースグループテンプレートを参照することができる。リソースグループにおけるリソースは、完全に修飾されているものと見なされる。というのも、アドミニストレータが、それらのリソースを開始させるのに必要とされるかまたはそれらのリソースに接続するのに必要とされるすべての情報、たとえば、データソースに接続するためのクレデンシャル、またはアプリケーションについての目標情報、を提供しているからである。
【００２９】
システムアドミニストレータは、ドメインレベルで、またはパーティションレベルでリソースグループを公開することができる。ドメインレベルでは、リソースグループは、関連するリソースをグループ化するのに好都合な方法を提供する。システムは、グループ化されていないリソースと同じドメインレベルのリソースグループにおいて公開されたリソースを管理することができる。このため、リソースは、システム起動中に開始させたり、システムのシャットダウン中に停止させたりすることができる。アドミニストレータはまた、グループ内のリソースを個々に停止させるか、開始させるかまたは削除することができ、グループ上で動作させることによって暗黙的にグループ内のすべてのリソースに対して機能することができる。たとえば、あるリソースグループを停止させることにより、まだ停止されていないグループにおけるすべてのリソースを停止させ；リソースグループを始動させることにより、まだ始動させていないグループにおけるいずれのリソースも始動させ、リソースグループを削除することにより、グループに含まれるすべてのリソースを削除する。
【００３０】
パーティションレベルでは、システムまたはパーティションアドミニストレータは、任意のセキュリティ制限下で、或るパーティションにおいて０個以上のリソースグループを構成することができる。たとえば、ＳａａＳ使用事例においては、さまざまなパーティションレベルのリソースグループは、ドメインレベルのリソースグループテンプレートを参照することができる。ＰａａＳ使用事例においては、リソースグループテンプレートを参照しないが代わりにそのパーティション内でのみ利用可能にされるべきアプリケーションおよびそれらの関連するリソースを表わすパーティションレベルのリソースグループを作成することができる。
【００３１】
一実施形態に従うと、リソースグループ化を用いることで、アプリケーションと、それらアプリケーションがドメイン内で別個の管理ユニットとして使用するリソースとをともにグループ化することができる。たとえば、以下に記載される医療記録（ＭｅｄＲｅｃ）アプリケーションにおいては、リソースグループ化によりＭｅｄＲｅｃアプリケーションおよびそのリソースが定義される。複数のパーティションは、各々がパーティション特有の構成情報を用いて、同じＭｅｄＲｅｃリソースグループを実行することができ、このため、各々のＭｅｄＲｅｃインスタンスの一部であるアプリケーションが各々のパーティションにとって特有のものにされる。
【００３２】
リソースグループテンプレート
一実施形態に従うと、リソースグループテンプレートは、リソースグループから参照することができドメインレベルで定義されるデプロイ可能なリソースの集合であり、そのリソースを起動するのに必要な情報のうちいくらかは、パーティションレベル構成の仕様をサポートするように、テンプレート自体の一部として記憶されない可能性がある。ドメインは、リソースグループテンプレートをいくつ含んでもよく、それらの各々は、たとえば、１つ以上の関連するＪａｖａアプリケーションと、それらのアプリケーションが依存するリソースとを含み得る。このようなリソースについての情報のうちのいくらかは、すべてのパーティションにわたって同じであってもよく、他の情報はパーティションごとに異なっていてもよい。すべての構成がドメインレベルで指定される必要はなく、代わりに、パーティションレベル構成が、マクロまたはプロパティ名／値の対を使用することによってリソースグループテンプレートで指定することができる。
【００３３】
一実施形態に従うと、特定のリソースグループテンプレートは、１つ以上のリソースグループによって参照可能である。概して、任意の所与のパーティション内では、リソースグループテンプレートは一度に１つのリソースグループによってのみ参照することができる。すなわち、同じパーティション内で同時に複数のリソースグループによって参照することはできない。しかしながら、異なるパーティションにおける別のリソースグループによって同時に参照することができる。リソースグループを含むオブジェクト、たとえばドメインまたはパーティションは、プロパティ名／値の割当てを用いて、任意のトークンの値をリソースグループテンプレートで設定することができる。システムは、参照するリソースグループを用いてリソースグループテンプレートを起動させると、それらのトークンを、リソースグループが含むオブジェクトにおいて設定された値と置換えることができる。場合によっては、システムはまた、静的に構成されたリソースグループテンプレートおよびパーティションを用いて、パーティション／テンプレートの組合せごとにランタイム構成を生成することができる。
【００３４】
たとえば、ＳａａＳ使用事例においては、システムは、同じアプリケーションおよびリソースを複数回起動することができるが、そのうちの１回は、それらを用いるであろう各パーティションごとに起動され得る。アドミニストレータがリソースグループテンプレートを定義すると、これらは、どこか他のところで提供されるであろう情報を表わすためにトークンを用いることができる。たとえば、ＣＲＭ関連のデータリソースに接続する際に使用されるユーザ名は、リソースグループテンプレートにおいて＼＄｛ＣＲＭＤａｔａＵｓｅｒｎａｍｅ｝として示すことができる。
【００３５】
テナント
一実施形態に従うと、マルチテナント（ＭＴ）アプリケーションサーバ環境などのマルチテナント環境においては、テナントは、１つ以上のパーティションおよび／もしくは１つ以上のテナント認識型アプリケーションによって表現可能であるエンティティ、または１つ以上のパーティションおよび／もしくは１つ以上のテナント認識型アプリケーションに関連付けることができるエンティティである。
【００３６】
たとえば、テナントは、別個のユーザ組織、たとえばさまざまな外部会社、特定の企業内のさまざまな部門（たとえばＨＲおよび財務部）などを表わすことができ、それら各々は、異なるパーティションに関連付けることができる。テナントのグローバルユニークアイデンティティ（テナントＩＤ）は、特定の時点において特定のユーザを特定のテナントに関連付けるものである。システムは、たとえば、ユーザアイデンティティの記録を参照することによって、ユーザアイデンティティから、特定のユーザがどのテナントに属しているかを導き出すことができる。ユーザアイデンティティにより、ユーザが実行することを認可されているアクションをシステムが実施することが可能となる。ユーザアイデンティティは、ユーザがどのテナントに属し得るかを含むが、これに限定されない。
【００３７】
一実施形態に従うと、システムは、互いに異なるテナントの管理およびランタイムを分離することを可能にする。たとえば、テナントは、それらのアプリケーションのいくつかの挙動、およびそれらがアクセスできるリソースを構成することができる。システムは、特定のテナントが別のテナントに属するアーティファクトを確実に管理することができないようにし、かつ、実行時に、特定のテナントの代わりに機能するアプリケーションがそのテナントに関連付けられたリソースのみを参照するが他のテナントに関連付けられたリソースは参照しないことを確実にすることができる。
【００３８】
一実施形態に従うと、テナント非認識型アプリケーションは、アプリケーションが応答している要求をどんなユーザが提示したかにかかわらず、アプリケーションが用いる如何なるリソースにもアクセス可能となるように明示的にテナントに対処する論理を含まないものである。対照的に、テナント認識型アプリケーションは、テナントに明示的に対処する論理を含む。たとえば、ユーザのアイデンティティに基づいて、アプリケーションは、ユーザが属するテナントを導き出すことができ、テナント特有のリソースにアクセスするためにその情報を用いることができる。
【００３９】
一実施形態に従うと、システムは、テナント認識型となるように明示的に書き込まれたアプリケーションをユーザがデプロイすることを可能にし、これにより、アプリケーション開発者は、現在のテナントのテナントＩＤを取得することができる。次いで、テナント認識型アプリケーションは、このテナントＩＤを用いて、アプリケーションの単一のインスタンスを用いている複数のテナントを処理することができる。
【００４０】
たとえば、単一の診療室または病院をサポートするＭｅｄＲｅｃアプリケーションは、２つの異なるパーティションまたはテナント（たとえばBayland Urgent CareテナントおよびValley Healthテナント）に対して公開することができ、その各々は、基礎をなすアプリケーションコードを変更することなく、別個のＰＤＢなどの別個のテナント特有のリソースにアクセスすることができる。
【００４１】
例示的なドメイン構成およびマルチテナント環境
一実施形態に従うと、アプリケーションは、ドメインレベルでリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されているかもしくはドメインに範囲指定されているリソースグループにデプロイすることができる。アプリケーション構成は、アプリケーション毎またはパーティション毎に指定されたデプロイメントプランを用いて無効化することができる。デプロイメントプランはまた、リソースグループの一部として指定することができる。
【００４２】
図４は、一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す。
【００４３】
一実施形態に従うと、システムがパーティションを始動させると、当該システムは、提供された構成に従って、それぞれのデータベースインスタンスに対して、各パーティションごとに１つずつ、仮想ターゲット（たとえば仮想ホスト）および接続プールを作成する。
【００４４】
典型的には、各々のリソースグループテンプレートは、１つ以上の関連するアプリケーションと、それらアプリケーションが依存するリソースとを含み得る。各々のパーティションは、それが参照するリソースグループテンプレートにおいて指定されていない構成データを提供することができるが、これは、場合によっては、リソースグループテンプレートによって指定されるいくつかの構成情報を無効にすることを含めて、パーティションに関連付けられた特定値に対するリソースグループテンプレートにおけるデプロイ可能なリソースのバインディングを行なうことによって、実行可能である。これにより、システムは、各々のパーティションが定義したプロパティ値を用いて、パーティション毎にリソースグループテンプレートによってさまざまに表わされるアプリケーションを始動させることができる。
【００４５】
いくつかのインスタンスにおいては、パーティションが含み得るリソースグループは、リソースグループテンプレートを参照しないか、または、それら自体のパーティション範囲指定されたデプロイ可能なリソースを直接定義する。パーティション内で定義されるアプリケーションおよびデータソースは、概して、そのパーティションにとってのみ利用可能である。リソースは、パーティション：<partitionName>/<resource JNDI name>、またはドメイン：<resource JNDI name>を用いて、パーティションの中からアクセスすることができるようにデプロイ可能である。
【００４６】
たとえば、ＭｅｄＲｅｃアプリケーションは、複数のＪａｖａアプリケーション、データソース、ＪＭＳサーバおよびメールセッションを含み得る。複数のテナントのためにＭｅｄＲｅｃアプリケーションを実行させるために、システムアドミニストレータは、テンプレートにおけるそれらのデプロイ可能なリソースを公開している単一のＭｅｄＲｅｃリソースグループテンプレート２８６を定義することができる。
【００４７】
ドメインレベルのデプロイ可能なリソースとは対照的に、リソースグループテンプレートにおいて公開されたデプロイ可能なリソースは、テンプレートにおいて完全には構成されない可能性があるか、または、いくつかの構成情報が不足しているので、そのままでは起動させることができない。
【００４８】
たとえば、ＭｅｄＲｅｃリソースグループテンプレートは、アプリケーションによって用いられるデータソースを公開し得るが、データベースに接続するためのＵＲＬを指定しない可能性がある。さまざまなテナントに関連付けられたパーティション、たとえば、パーティションＢＵＣ−Ａ２９０（Bayland Urgent Care：ＢＵＣ）およびパーティションＶＨ−Ａ２９２（Valley Health：ＶＨ）は、各々がＭｅｄＲｅｃリソースグループテンプレートを参照する（２９６，２９７）ＭｅｄＲｅｃリソースグループ２９３，２９４を含むことによって、１つ以上のリソースグループテンプレートを参照することができる。次いで、当該参照を用いて、Bayland Urgent Careテナントによって使用されるＢＵＣ−Ａパーティションに関連付けられた仮想ホストbaylandurgentcare.com３０４と、Valley Healthテナントによって使用されるＶＨ−Ａパーティションに関連付けられた仮想ホストvalleyhealth.com３０８とを含む各々のテナントのための仮想ターゲット／仮想ホストを作成する（３０２，３０６）ことができる。
【００４９】
図５は、一実施形態に従った例示的なマルチテナント環境をさらに示す。図５に示されるように、２つのパーティションがＭｅｄＲｅｃリソースグループテンプレートを参照している上述の例から引続いて、一実施形態に従うと、サーブレットエンジン３１０は、この例においてはBayland Urgent Careの医師テナント環境３２０およびValley Healthの医師テナント環境３３０といった複数のテナント環境をサポートするために用いることができる。
【００５０】
一実施形態に従うと、各々のパーティション３２１および３３１は、そのテナント環境についての入来トラフィックを受入れるための異なる仮想ターゲットと、異なるＵＲＬ３２２，３３２とを定義することができる。異なるＵＲＬ３２２，３３２は、パーティションと、この例ではbayland urgent careデータベースまたはvalley healthデータベースを含むそれぞれのリソース３２４、３３４とに接続するためのものである。同じアプリケーションコードが両方のデータベースに対して実行され得るので、データベースインスタンスは互換性のあるスキーマを用いることができる。システムがパーティションを始動させると、当該システムは、それぞれのデータベースインスタンスに対する接続プールおよび仮想ターゲットを作成することができる。
【００５１】
ワークマネージャ
先に述べたように、一実施形態に従うと、パーティションは、アプリケーションサーバをマルチテナントモードで実行するときに１つまたは複数のテナントに対して作成されるアプリケーションサーバ（たとえばWebLogic Server）ドメインのスライスである。
【００５２】
一実施形態に従うと、複数のパーティション間におけるスレッド使用量は、公平になるように調節され、これらのパーティションの相対的な優先度をシステムアドミニストレータによって設定することが可能である。一実施形態に従うと、ワークマネージャを用いることによって、同一のＷＬＳインスタンス内で実行しているパーティション間の公平性と優先順位を提供することができる。
【００５３】
一実施形態に従うと、ワークマネージャは、アプリケーションサーバの自己チューニングスレッドプールから提供されるスレッドリソースの相対的なスレッド使用量を調節することにより、適切なサービス品質（ＱｏＳ）を提供するとともに、同一のアプリケーションサーバインスタンス（たとえばマルチテナントアプリケーションサーバ環境）を共有するさまざまなパーティション間における公平性を提供する。それがなければ、あるパーティションおよび／またはパーティションアドミニストレータからのアプリケーションが、他のパーティション用のスレッドリソースを奪ってこれらのパーティションが適切に機能することを妨げる可能性がある。
【００５４】
一実施形態に従うと、ワークマネージャが共有スレッドリソースをさまざまなパーティションに割当てることを可能にする公平性は、多数の要素に基づき得る。これらの要素は、たとえば、さまざまなパーティションがサービスの対価として支払うさまざまな金額、各パーティションの重要度、および共有スレッドに対する各パーティションからの需要等である。
【００５５】
パーティションワークマネージャ−１パーティション当たりの相対的なスレッドリソース使用量
図６は、一実施形態に従った、マルチテナントアプリケーションサーバ環境におけるパーティションワークマネージャの使用を示す図である。
【００５６】
図６に示される実施形態は、パーティションワークマネージャ６１０とドメイン６２０とを含むアプリケーションサーバ環境６００を示す。図６の実施形態はさらにシステムアドミニストレータ６３０を含む。パーティションワークマネージャ６１０は、パーティションＡのワークマネージャ６１５とパーティションＢのワークマネージャ６１６とを含む。ドメイン６２０は、パーティションＡ  ６４０と、パーティションＢ  ６５０と、仮想ターゲットＡ  ６６０と、仮想ターゲットＢ  ６７０とを含む。パーティションＡおよびＢそれぞれの中には、パーティションＡのスレッド使用量６４５およびパーティションＢのスレッド使用量６５５がある。パーティションＡおよびＢそれぞれの中ではさらに、リソースグループ６４６およびリソースグループ６５６が規定されている。
【００５７】
一実施形態に従うと、システムアドミニストレータ６３０は、アプリケーションサーバ環境６００内のＷＬＳセルフチューニングスレッドプール等のスレッドプールに対する各パーティションのアクセスを調節するように、パーティションワークマネージャ６１０を構成する。このようにシステムアドミニストレータがワークマネージャを構成することにより、スレッドリソースの相対的なスレッド使用量を調節して、適切なＱｏＳを提供するとともに、同一のアプリケーションサーバインスタンスを共有するさまざまなパーティション間における公平性を提供する。たとえば、一般的に、システムアドミニストレータはパーティションワークマネージャ６１０を構成するときにいくつかの設定を（個々にまたは互いに組合わせて）使用することができる。上記設定は、パーティションワーク要求の優先順位（またはフェアシェア値）、パーティション最小スレッド制約、およびパーティション容量制約を含むが、これらに限定されない。
【００５８】
一実施形態に従うと、システムアドミニストレータ６３０は、パーティションワーク要求の優先順位またはフェアシェア値を用いてパーティションワークマネージャ６１０を構成することができる。システムアドミニストレータ６３０は、通信経路６３５を介して、パーティションワークマネージャ６１０内に、アプリケーションサーバ環境６００において構成された各パーティション、たとえばパーティションＡ  ６４０およびパーティションＢ  ６５０に対するフェアシェア値を指定する。このフェアシェア値は、たとえばパーティションワークマネージャ６１０に含まれる特定パーティション用のワークマネージャに含めることができる。フェアシェア値は、すべてのパーティションのスレッド使用量との比較における、特定のパーティションのスレッド使用量の割合である。加えて、システムアドミニストレータ６３０によって最初にパーティションに割当てられたフェアシェア値を、システムアドミニストレータ６３０によって更新および／または編集することができる。
【００５９】
一実施形態に従うと、パーティションに割当てられるフェアシェア値は、１と９９の間の数である。推奨されるのは、あるドメイン内で実行しているすべてのパーティションのフェアシェア値の合計が１００になることである。これらの合計が１００にならない場合、アプリケーションサーバ環境６００は、異なるパーティションに対し、スレッド使用時間および／またはスレッド待ち行列位置をこれらの相対値に基づいて割当てることができる。
【００６０】
たとえば、一実施形態に従うと、システムアドミニストレータ６３０はフェアシェア値として２０をパーティションＡ  ６４０に割当て、フェアシェア値として３０をパーティションＢ  ６５０に割当てる。これらのフェアシェア値はそれぞれ、パーティションワークマネージャ６１０内のパーティションＡのワークマネージャ６１５およびパーティションＢのワークマネージャ６１６に記録される。実行時に、パーティションＡおよびＢからの、すべての要求と処理のために待ち行列に入れられた未処理のワーク要求に対応するにはスレッドプール内のスレッドリソースが不十分であるという事態が発生した場合、ワークマネージャは、スレッド使用時間のうち４０％をパーティションＡ  ６４０のアプリケーションからのワーク要求（および待ち行列の要求）に割当て、スレッド使用時間のうち６０％をパーティションＢ  ６５０のアプリケーションからのワーク要求（および待ち行列の要求）に割当てる。このスレッド使用量の割当て、たとえばパーティションＡのスレッド使用量６４５およびパーティションＢのスレッド使用量６５５は、システムアドミニストレータがパーティションワークマネージャ６１０内にフェアシェア値を設定した結果である。
【００６１】
一実施形態に従うと、システムアドミニストレータ６３０は、最小スレッド制約を用いてパーティションワークマネージャ６１０を構成することができる。最小スレッド制約は、デッドロックを回避するために、各パーティションにまたはパーティション内のアプリケーションに割当てられる、スレッドプールの指定数のスレッドを保証する。
【００６２】
一実施形態に従うと、システムアドミニストレータ６３０は、任意で、アプリケーションサーバ環境６００内のパーティションごとに、最小スレッド制約値に対して制限を課すことができる。システムアドミニストレータ６３０がこのような制限を設定する場合は、そうすることによって、パーティションごとに最小スレッド制約値に対して上限を課すことになる。あるパーティション内のすべての最小スレッド制約の設定値の合計がこのような設定値を上回る場合には、警告メッセージをロギングすることができ、アプリケーションサーバ環境６００は、制約に対してスレッドプールが割当てるスレッド数を自動的に減じることができる。
【００６３】
たとえば、一実施形態に従うと、システムアドミニストレータ６３０は、最小スレッド制約として５スレッドをパーティションＡ  ６４０に対して設定する。パーティションＡに対してデプロイされるアプリケーションにおいて規定された最小スレッド制約は２つあり、一方の設定値は３、他方の設定値は７である。セルフチューニングスレッドプールは、これら２つの最小スレッド制約に対して、組合わせた設定値１０ではなく、５スレッドが割当てられることしか保証しない。
【００６４】
いくつかの実施形態において、フェアシェア値がアプリケーションサーバ環境内の各パーティションに設定されたことに加えて、パーティション最小スレッド制約制限がシステムアドミニストレータ６３０によってパーティションワークマネージャ６１０に設定されると、結果として、パーティションが、パーティション最小スレッド制約として自身のスレッドフェアシェア値よりも大きい値を受けると、フェアシェア値を克服する可能性がある。
【００６５】
一実施形態に従うと、システムアドミニストレータ６３０は、パーティション共有容量を用いてパーティションワークマネージャ６１０を構成する。このパーティション共有容量は、パーティションからのワーク要求の数を制限する。この制限は、実行中であるか、または、待ち行列に入れられて利用できるスレッドを待っているワーク要求を含み得る。設定された制限を超過した場合、アプリケーションサーバ環境６００は、制限対象のパーティションからの他の要求を拒絶することができる。この制限の値は、１％と１００％の間といったように、アプリケーションサーバ環境６００の容量の割合として表わすことができる。
【００６６】
たとえば、一実施形態に従うと、システムアドミニストレータは、パーティションＡに対し、パーティション共有容量として５０％を設定することができる。アプリケーションサーバ環境は、ワークマネージャを構成するために、共有容量として６５５３６という値を用いて構成される。パーティションＡには上記パーティション共有容量があるので、ワークマネージャは、パーティションＡからのワーク要求の数が、総容量である６５５３６の５０％である３２７３８を超えると、パーティションＡからの要求を拒絶し始める。
【００６７】
一実施形態に従うと、システムアドミニストレータ６３０は、パーティションワークマネージャ６１０を、パーティション最大スレッド制約を用いて構成する。この制約は、あるパーティションからの要求を並行して処理する、セルフチューニングスレッドプールの最大数のスレッドを、制限することができる。このことは、特に異常な状況、たとえば応答していない遠隔サーバからの応答を待ってスレッドがＩ／Ｏでブロックされているという状況において、パーティションが、そのスレッドリソースのフェアシェアを超えるリソースを使用しないようにするのに有効となり得る。このようなシナリオにおいて最大スレッド制約を設定することは、システム内の他のパーティションからの要求を処理するためにいくつかのスレッドを確実に利用できるようにするのに役立つであろう。
【００６８】
一実施形態に従うと、フェアシェア値によって、利用できるスレッドのフェアシェア値をパーティションに割当てることができ、それに加えて、利用できるすべてのスレッドが現在使用中であるときに、これから実行する優先度付き待ち行列中の、パーティションからの要求に、順序を割当てることができる。たとえば、システムアドミニストレータは、パーティションワークマネージャを介して、パーティションＸに対しフェアシェア値として６０を割当て、パーティションＹに対しフェアシェア値として４０を割当てる。これらのパーティションが、その間で、ソースプール内の利用できるすべてのスレッドを使用すると、これらのパーティションからの次の要求は待ち行列に入れられる。パーティションＸおよびＹに割当てられたフェアシェア値によって、パーティションＹからの要求に対し、相対的に、待ち行列中のどこにパーティションＸからの要求を入れるのか判断することができる。ここで例示した状況では、パーティションＸからの要求は、待ち行列においてパーティションＹからの要求の前に置かれる。なぜなら、パーティションＸのフェアシェア値はパーティションＹのフェアシェア値よりも大きいからである。
【００６９】
一実施形態に従うと、アプリケーションサーバ環境６００は、マルチテナントアプリケーションサーバ（ＭＴ）環境を含み得る。
【００７０】
パーティションレベルワークマネージャ
図７は、一実施形態に従った、マルチテナントアプリケーションサーバ環境におけるワークマネージャの使用を示す図である。
【００７１】
図７に示される実施形態は、パーティションワークマネージャ７９０とソースドメイン７２０とを含むアプリケーションサーバ環境７００を示す。図７の実施形態はさらに、パーティションＡのアドミニストレータ７３０、パーティションＢのアドミニストレータ７３５、およびシステムアドミニストレータ７８０を含む。パーティションワークマネージャ７９０は、パーティションＡのワークマネージャ７９５とパーティションＢのワークマネージャ７９６とを含む。ソースドメイン７２０は、パーティションＡ  ７４０と、パーティションＢ  ７５０と、仮想ターゲットＡ  ７６０と、仮想ターゲットＢ  ７７０とを含む。パーティションＡ  ７４０は、ワークマネージャＡ  ７４５と、パーティションＡのスレッド使用量７４６とを含む。パーティションＢ  ７６０は、ワークマネージャＢ  ７５５と、パーティションＢのスレッド使用量７５６とを含む。
【００７２】
一実施形態において、システムアドミニストレータ７８０が、パーティションワークマネージャ７９０を、パーティションＡおよびＢのフェアシェア値を設定するように構成できる方法と同様に、パーティションアドミニストレータ７３０および７３５は、それぞれのパーティションについて、それぞれのパーティション内の作業を管理するパーティションレベルワークマネージャを構成することができる。一般的に、パーティションアドミニストレータはそれぞれのパーティションワークマネージャを構成するときにいくつかの設定を（個々にまたは互いに組合わせて）使用することができる。上記設定は、ワーク要求の優先順位（またはフェアシェア値）、最小スレッド制約、および最大スレッド制約を含むが、これらに限定されない。
【００７３】
たとえば、一実施形態において、パーティションアドミニストレータは、それぞれのパーティションワークマネージャを、フェアシェア値を用いて構成することができる。パーティションＡのアドミニストレータは、パーティションＡ  ７４０に対し、特にパーティションＡの中で実行しているアプリケーションに対し、フェアシェア値として総スレッド使用量を割当てることができる。パーティションＡのアドミニストレータ７３０は、これを、通信経路７３１を介し、ワークマネージャＡ  ７４５を、パーティションＡ  ７４０の中で実行しているさまざまなアプリケーションにフェアシェア値を割当てるように構成することにより、行なう（同様に、パーティションＢのアドミニストレータは、通信経路７３６を介してワークマネージャＢを構成することができる）。しかしながら、パーティションＡ  ７４０が利用できるグローバルスレッドプールからのスレッドは依然としてパーティションワークマネージャ７９０によって設定されており、これはパーティションＢ  ７５０が利用できるスレッドについても同様である。パーティションワークマネージャ７９０は、通信経路７８５を介してシステムアドミニストレータ７８０によって構成され、（上述のように）パーティションＡおよびＢのための設定はそれぞれパーティションＡのワークマネージャ７９５およびパーティションＢのワークマネージャ７９６に格納されている。
【００７４】
一実施形態において、パーティションワークマネージャはテンプレートの機能を果たし、構成された各ワークマネージャのインスタンスがデプロイされた各アプリケーションに対して作成される。たとえば、このパーティションワークマネージャはデフォルトワークマネージャであってもよい。デフォルトワークマネージャの１つのインスタンスを、デプロイされた各アプリケーションに対して作成することができ、別のディスパッチポリシーが指定されない限り、このアプリケーションからのワーク要求を処理するために使用できる。
【００７５】
一実施形態において、パーティションアドミニストレータは、任意で、自身のパーティションのためのパーティションワークマネージャを上書きしてもよい。このパーティション内の各アプリケーションに、パーティションワークマネージャのインスタンスを与えてもよく、このインスタンスは、上記ワークマネージャの特定パーティション用の設定を用いて作成されたものである。パーティションレベルで無効にされていないパーティションワークマネージャについては、config.xmlレベルのテンプレート構成を使用する。この構成を使用するのは、パーティションワークマネージャに関して先に述べたように、システムアドミニストレータによって記述された特定パーティション用の制限が設定された、パーティションでデプロイされた各アプリケーションのためのこのようなワークマネージャのインスタンスを作成するときである。
【００７６】
たとえば、一実施形態において、デフォルトワークマネージャは、最小または最大スレッド制約なしで構成され、さらに、パーティションに対し、フェアシェア要求クラス値として５０を割当てる。パーディションアドミニストレータは、最小スレッド制約が１であるそれぞれのパーティションのデフォルトワークマネージャを無効にすることができる。結果として、パーティションにおいてデプロイされた各アプリケーションは、設定値が１である最小スレッド制約を用いて作成されたデフォルトワークマネージャを有することになる。
【００７７】
一実施形態に従うと、パーティションアドミニストレータは、それぞれの特定のパーティションに割当てられたフェアシェア値を上書きすることができるが、そうしても、パーティションワークマネージャでパーティションに割当てられたフェアシェア値は変わらない。たとえば、パーティションＸおよびパーティションＹ各々に対し、パーティションワークマネージャの構成において、システムアドミニストレータによってフェアシェア値として５０が割当てられているとする。しかしながら、パーティションＸのためのパーティションアドミニストレータは、そのワークマネージャに、フェアシェア値として９０を設定する。パーティションアドミニストレータがスレッドのフェアシェアよりも多いスレッドを要求しようとしても、パーティションワークマネージャは、プール内のスレッドのうちの半分しかパーティションＸが受けないことを保証できる。
【００７８】
一実施形態において、システムレベルで、たとえばconfig.xmlのセルフチューニングセクションで規定された制約が共有される。たとえば、パーティションワークマネージャが作成されmin-ThreadConstraint-1と呼ばれる最小スレッド制約を規定する。各パーティションは、min-ThreadConstraint-1のコピーを得る。先に述べたように、パーティションアドミニストレータは、所望されればmin-ThreadConstraint-1を無効にすることができる。
【００７９】
一実施形態に従うと、アプリケーションサーバ環境７００は、マルチテナントアプリケーションサーバ（ＭＴ）環境を含み得る。
【００８０】
図８は、アプリケーションサーバ環境において使用するワークマネージャを提供するための代表的な方法８００のフローチャートである。この方法８００はステップ８０１から始まる。ステップ８０１において、その上で実行されるアプリケーションサーバ環境を含む１つ以上のコンピュータに、アプリケーションサーバ環境で使用できるデプロイ可能な複数のリソースと、ドメイン内のデプロイ可能なリソースのグループ分けを規定する１つ以上のリソースグループテンプレートと、各々がドメインの管理およびランタイム区分を提供する１つ以上のパーティションと与えることができる。この方法８００は、ステップ８０２に進んでパーティションワークマネージャを提供することができ、このパーティションワークマネージャはシステムアドミニストレータによって構成可能である。代表的な方法８００は、最後にステップ８０３で、パーティションワークマネージャを、アプリケーションサーバ環境内の１つ以上のパーティション各々にフェアシェア値を割当てるように、構成することができ、各フェアシェア値は、１つ以上のパーティションに関連付けられたスレッド使用量を制御するためにシステムが使用するように、設定される。
【００８１】
一実施形態に従うと、図８には示されていないが、この方法は次に、パーティションワークマネージャを、フェアシェア値に加えて、パーティション容量制約と、パーティション最小スレッド制約制限と、パーティション最大スレッド制約とのうちの１つ以上を与えるように、構成することができる。
【００８２】
図９は、アプリケーションサーバ環境において使用するワークマネージャを提供するための代表的な方法９００のフローチャートである。この方法９００はステップ９０１から始まる。ステップ９０１において、その上で実行されるアプリケーションサーバ環境を含む１つ以上のコンピュータに、アプリケーションサーバ環境で使用できるデプロイ可能な複数のリソースと、ドメイン内のデプロイ可能なリソースのグループ分けを規定する１つ以上のリソースグループテンプレートと、各々がドメインの管理およびランタイム区分を提供する１つ以上のパーティションと与えることができる。この方法９００は、ステップ９０２に進んでパーティションワークマネージャを提供することができ、このパーティションワークマネージャはシステムアドミニストレータによって構成可能である。代表的な方法９００は、引続きステップ９０３で、パーティションワークマネージャを、アプリケーションサーバ環境内の１つ以上のパーティション各々にフェアシェア値を割当てるように、構成することができ、各フェアシェア値は、１つ以上のパーティションに関連付けられたスレッド使用量を制御するためにシステムが使用するように、設定される。この方法９００は、ステップ９０４において、１つ以上のパーティションレベルワークマネージャを提供し、１つ以上のパーティションは各々、上記１つ以上のパーティションレベルワークマネージャのうちの１つを含む。最後に、この方法９００は、それぞれのパーティション内で実行されている１つ以上のアプリケーションに対してパーティションフェアシェア値を割当てるように、１つ以上のパーティションレベルワークマネージャ各々を構成する。各パーティションフェアシェア値は、それぞれのパーティションにおいて実行されている１つ以上のアプリケーションに関連付けられたスレッド使用量を制御するためにシステムが使用するように、設定される。
【００８３】
アプリケーションワークマネージャ
一実施形態において、ワークマネージャおよびそのアーティファクト（制約等）を、アプリケーションの中から規定してもよい。このようなアプリケーションがワークマネージャおよび／またはその制約を規定するとき、このようなワークマネージャは、パーティションの中でデプロイすることができる。しかしながら、規定されたワークマネージャおよび／またはその制約は、パーティションワークマネージャを介してシステムアドミニストレータによって課された、または規定されたパーティションレベルワークマネージャを介してパーティションアドミニストレータによって課された、設定された限定とワークマネージャ（たとえばフェアシェア値）に基づいて、調整してもよい。
【００８４】
パーティションＩＤの伝達
ある実施形態において、ワーク要求がスケジュールおよび／または要求されるときに使用されるパーティションＩＤを、ワーク要求が実行されているセルフチューニングスレッドプールに伝達することができる。パーティションＩＤは、コンポーネント呼出しコンテキスト（component invocation context：ＣＩＣ）から取込むことができる。これにより、ワーク要求を、要求の発生元であるパーティションのコンテキストの下で実行することができる。これにより、エラーのロギングと診断および／またはセキュリティをサポートすることができる。
【００８５】
この発明は、この開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【００８６】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または（１つまたは複数の）コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【００８７】
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。
【図１】
0006542810.tif 000002
【図２】
0006542810.tif 000003
【図３】
0006542810.tif 000004
【図４】
0006542810.tif 000005
【図５】
0006542810.tif 000006
【図６】
0006542810.tif 000007
【図７】
0006542810.tif 000008
【図８】
0006542810.tif 000009
【図９】
0006542810.tif 000010