(57)【特許請求の範囲】
【請求項１】
アプリケーションサーバ環境において複数のポータブルパーティションの使用をサポートするためのシステムであって、
アプリケーションサーバ環境を有する１つ以上のコンピュータを備え、
前記アプリケーションサーバ環境は、ソフトウェアアプリケーションの実行のための第１および第２のアプリケーションサーバドメインを含み、
前記第１および第２のアプリケーションサーバドメインの各々は、１つ以上のパーティションを含み、
各々のパーティションは、パーティション構成に関連付けられるとともに、１つ以上のリソースグループを含み、
各々のリソースグループは、１つ以上のアプリケーションおよびリソースを定義するリソースグループテンプレートを参照し得る複数のデプロイ可能なアプリケーションまたはリソースの集合であり、
前記１つ以上のコンピュータは、
パーティションを前記第１のアプリケーションサーバドメインからエクスポートし、前記第２のアプリケーションサーバドメインにインポートするように構成され、
パーティション構成と、リソースグループまたはリソースグループテンプレート情報とを含むパーティションアーカイブを作成するように構成される、システム。
【請求項２】
前記アプリケーションサーバ環境またはクラウド環境はＪａｖａ  ＥＥアプリケーションサーバを含む、請求項１に記載のシステム。
【請求項３】
前記パーティションアーカイブは、前記パーティションに関連付けられた複数のエクスポート可能な値または複数の構成可能な値を含むファイルである、請求項１または２に記載のシステム。
【請求項４】
前記１つ以上のコンピュータは、
前記第２のアプリケーションサーバドメインへの前記パーティションアーカイブのデプロイメントまたはインポート中に、前記パーティションに関連付けられた複数のエクスポート可能な値または複数の構成可能な値を含む、前記パーティションアーカイブにおける情報を使用して、前記第２のアプリケーションサーバドメインにおいて用いられる前記パーティションを構成し、
前記第２のアプリケーションサーバドメインにおいて用いられる前記パーティションは、アドミニストレータまたは別のソースから受信したいずれかの変更済みの複数の構成可能な値を含む、請求項１から３のいずれかに記載のシステム。
【請求項５】
前記システムは、クラウド環境内で動作する複数のテナントをサポートするために前記クラウド環境内に提供され、
前記１つ以上のパーティションは、テナントによって使用されるように、前記テナントに関連付けられる、請求項１から４のいずれかに記載のシステム。
【請求項６】
アプリケーションサーバ環境において複数のポータブルパーティションの使用をサポートするための方法であって、
１つ以上のコンピュータが、アプリケーションサーバ環境を提供するステップを含み、
前記アプリケーションサーバ環境は、ソフトウェアアプリケーションの実行のための第１および第２のアプリケーションサーバドメインを含み、
前記第１および第２のアプリケーションサーバドメインの各々は、１つ以上のパーティションを含み、
各々のパーティションは、パーティション構成に関連付けられるとともに、１つ以上のリソースグループを含み、
各々のリソースグループは、１つ以上のアプリケーションおよびリソースを定義するリソースグループテンプレートを参照し得る複数のデプロイ可能なアプリケーションまたはリソースの集合であり、
前記方法は、さらに、
前記１つ以上のコンピュータが、パーティションを前記第１のアプリケーションサーバドメインからエクスポートし、前記第２のアプリケーションサーバドメインにインポートするステップと、
前記１つ以上のコンピュータが、パーティション構成と、リソースグループまたはリソースグループテンプレート情報とを含むパーティションアーカイブを作成するステップとを含む、方法。
【請求項７】
前記アプリケーションサーバ環境またはクラウド環境はＪａｖａ  ＥＥアプリケーションサーバを含む、請求項６に記載の方法。
【請求項８】
前記パーティションアーカイブは、前記パーティションに関連付けられた複数のエクスポート可能な値または複数の構成可能な値を含むファイルである、請求項６または７に記載の方法。
【請求項９】
前記１つ以上のコンピュータが、前記第２のアプリケーションサーバドメインへの前記パーティションアーカイブのデプロイメントまたはインポート中に、前記パーティションに関連付けられた複数のエクスポート可能な値または複数の構成可能な値を含む、前記パーティションアーカイブにおける情報を使用して、前記第２のアプリケーションサーバドメインにおいて用いられる前記パーティションを構成するステップをさらに含み、
前記第２のアプリケーションサーバドメインにおいて用いられる前記パーティションは、アドミニストレータまたは別のソースから受信したいずれかの変更済みの複数の構成可能な値を含む、請求項６から８のいずれかに記載の方法。
【請求項１０】
前記方法は、クラウド環境内で動作する複数のテナントをサポートするために前記クラウド環境内で実行され、
前記１つ以上のパーティションは、テナントによって使用されるように、前記テナントに関連付けられる、請求項６から９のいずれかに記載の方法。
【請求項１１】
プログラム命令を機械読取り可能フォーマットで含むコンピュータプログラムであって、前記プログラム命令は、１つ以上のコンピュータに請求項６から１０のいずれかに記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
【０００２】
発明の分野：
本発明の実施形態は、概して、アプリケーションサーバおよびクラウド環境に関し、特に、マルチテナントアプリケーションサーバ環境におけるポータブルパーティションのためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景：
アプリケーションサーバは、概して、ソフトウェアアプリケーションをデプロイして実行することができる管理された環境を提供する。クラウドベースの環境は、クラウドによって提供される分散型リソース内でアプリケーションを実行して、当該分散型リソースを利用することを可能にする。このような環境は、多くのユーザまたはテナントをサポートすることができ、それらのうちのいくつかは、そのユーザまたはテナントに特有の特定条件を有する可能性がある。これらは、本発明の実施形態が使用可能となる環境のタイプのいくつかの例に該当する。
【発明の概要】
【０００４】
概要：
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてポータブルパーティションを提供するためのシステムおよび方法がこの明細書中に記載される。一実施形態に従うと、当該システムは、パーティションを第１のドメインまたはソースドメイン（たとえばテストドメイン）からエクスポートし、別の第２のドメインまたはターゲットドメイン（たとえば生成ドメイン）にインポートすることを可能にする。パーティションアーカイブの作成またはエクスポート中に、パーティション構成、リソースグループまたはリソースグループテンプレート情報、および、任意にはアプリケーションバイナリを含むパーティションアーカイブが作成される。パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするインターフェイスを含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【図面の簡単な説明】
【０００５】
【図１】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す図である。
【図２】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。
【図３】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。
【図４】一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す図である。
【図５】一実施形態に従った例示的なマルチテナント環境をさらに示す図である。
【図６】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用を示す図である。
【図７】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用をさらに示す図である。
【図８】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用方法を示す図である。
【発明を実施するための形態】
【０００６】
詳細な説明：
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてポータブルパーティションを提供するためのシステムおよび方法がこの明細書中に記載される。一実施形態に従うと、当該システムは、パーティションを第１のドメインまたはソースドメイン（たとえばテストドメイン）からエクスポートし、別の第２のドメインまたはターゲットドメイン（たとえば生成ドメイン）にインポートすることを可能にする。パーティションアーカイブの作成またはエクスポート中に、パーティション構成、リソースグループまたはリソースグループテンプレート情報、および、任意にはアプリケーションバイナリを含むパーティションアーカイブが作成される。パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするインターフェイスを含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【０００７】
アプリケーションサーバ（たとえば、マルチテナント（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データベースを含むそれぞれのリソース３２４、３３４とに接続するためのものである。同じアプリケーションコードが両方のデータベースに対して実行され得るので、データベースインスタンスは互換性のあるスキーマを用いることができる。システムがパーティションを始動させると、当該システムは、それぞれのデータベースインスタンスに対する接続プールおよび仮想ターゲットを作成することができる。
【００５１】
ポータブルパーティション
一実施形態に従うと、当該システムは、パーティションを第１のドメインまたはソースドメイン（たとえばテストドメイン）からエクスポートし、別の第２のドメインまたはターゲットドメイン（たとえば生成ドメイン）にインポートすることを可能にする。パーティションアーカイブの作成またはエクスポート中に、パーティション構成、リソースグループまたはリソースグループテンプレート情報、および、任意にはアプリケーションバイナリを含むパーティションアーカイブが作成される。パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするインターフェイスを含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【００５２】
さまざまな実施形態に従うと、この特徴は、パーティションを、たとえばこれらパーティションが正常に開発されてテストされてきたテスト環境から生産環境に移動させることを所望するアプリケーションサーバ顧客としては、上述のようなシナリオにおいて有用である。
【００５３】
図６は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用を示す。図６に示されるように、一実施形態に従うと、第１のドメインまたはソースドメイン４００（たとえばテストドメイン）は、パーティション構成４０４と１つ以上のパーティション特有のリソースグループ、アプリケーションまたはリソース４０６とに関連付けられた特定のパーティションＡ４０２を含む１つ以上のパーティションを含み得る。
【００５４】
任意には、パーティションはリソースグループテンプレート４１０を参照することができる。各々のリソースグループまたはそのリソースグループを含むパーティションは、そのリソースグループまたはパーティションがターゲット設定されてデプロイされるべきターゲット（ソースドメインにおける仮想ターゲット４１２など）を定義する仮想ターゲット（たとえば仮想ホスト）情報に関連付けることができる。
【００５５】
一実施形態に従うと、別の第２のドメインまたはターゲットドメイン４２０（たとえば生成ドメイン）にパーティションをインポートすることが所望される可能性がある。この場合、搬送されたパーティションＡ４２２は、同様に、パーティション構成４２４および１つ以上のパーティション特有のリソースグループ、アプリケーションまたはリソース４２６に関連付けることができ、任意にはリソースグループテンプレート４３０を参照することができ、そのリソースグループまたはパーティションがターゲット設定されてデプロイされるべきターゲット（ターゲットドメインにおける仮想ターゲット４３２など）を定義する仮想ターゲット（たとえば仮想ホスト）情報に関連付けることができる。
【００５６】
一実施形態に従うと、パーティションアーカイブの作成またはエクスポート４４０中に、パーティション構成４４４、リソースグループまたはリソースグループテンプレート情報４４６、および任意にはアプリケーションバイナリ４４８を含むパーティションアーカイブ４４２が作成される。一実施形態に従うと、パーティションアーカイブは、たとえば、ジップタイプのファイルであり得る。
【００５７】
一実施形態に従うと、パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能または構成可能な値４５２へのアクセスを可能にするＪＳＯＮインターフェイス４５０（たとえばＪＳＯＮファイル）を含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート４５４中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【００５８】
システム構成MBeansは時間とともに変化し得るので、システムは、システム上のアノテーションまたはパーティション属性もしくはMBeansを、たとえば、これらのMBeansがパーティションに関連付けられたエクスポート可能な値または構成可能な値として公開されるべきであることを示すアノテーション@portableまたは@ExportCustomizableValueとして認識することができる。
【００５９】
一実施形態に従うと、アプリケーションバイナリの重みが大きい可能性があるので、パーティションアーカイブにおけるそれらのバイナリをバンドルしないことが好ましいかもしれず、このため、代わりに、エクスポート・パーティションコマンドを用いて、パーティションアーカイブにバイナリを含めるかまたはバイナリを排除することができる。次いで、ターゲットドメインにおけるユーザは、ＪＳＯＮファイルにおけるアプリケーションバイナリの位置（ソースドメインの位置とは異なる位置であり得る）を指定することができる。
【００６０】
図７は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用をさらに示す。図７に示されるように、一実施形態に従うと、上述のように、パーティションアーカイブは、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするＪＳＯＮインターフェイスを含む。
【００６１】
ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、変更済みの構成可能な値４６０は、アドミニストレータからまたは別のソースから受信することができ、パーティションに関連付けられたエクスポート可能な値もしくは構成可能な値を変更するかまたはパーティションに関連付けられたエクスポート可能な値もしくは構成可能な値とともに用いられ、ターゲットドメインにおいて使用されるように修正済みパーティション構成４６２を提供するのに用いられる。
【００６２】
いくつかのパーティション構成情報は、特定のドメインに制限される可能性があるが、ユーザは異なるドメインで使用できるようにこれを変更することができなければならない。たとえば、ユーザが変更できないドメイン下にある１セットの構成MBeansは、ユーザが変更可能であるパーティションにおける同様のセットのMBeansに関連付けることができる。
【００６３】
アドミニストレータによって提供されるいずれかの構成変更に基づいて、パーティションサブコンポーネントは、ターゲットドメインにおけるそれらの環境を再作成することができる。ソースドメインにおける或るパーティションが１つのアプリケーションを備えたリソースグループを含む場合、そのパーティションがターゲットドメインにインポートされると、そのリソースグループ内のアプリケーションの構成およびデプロイメントが、ターゲットドメインに適合するようにシステムによって自動的に実行され得る。
【００６４】
たとえば、一実施形態に従うと、ＪＳＯＮファイルが公開し得る属性は、ソースドメインと比べて、ユーザがターゲットドメインにおいて異なるＰＤＢを或るパーティションに関連付けることを可能にする。インポート中に、システムは、パーティションアーカイブと同じフォルダ内のＪＳＯＮファイルをチェックすることができ、それがユーザによるいずれかの変更を発見した場合、それら変更を用いて、ターゲットドメインにおける構成デフォルトを無効にする。
【００６５】
図８は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてポータブルパーティションを用いる方法を示す。図８に示されるように、一実施形態に従うと、ステップ４８０において、ソフトウェアアプリケーションの実行のためのドメインならびに１つ以上のパーティションおよびリソースグループを含むアプリケーションサーバ環境が提供される。各々のパーティションは、ドメインの管理およびランタイム区分を提供し、１つ以上のリソースグループを含み得る。各々のリソースグループは、リソースグループテンプレートを参照し得るデプロイ可能なアプリケーションまたはリソースの集合である。
【００６６】
ステップ４８２において、ターゲットドメイン（たとえば生成ドメイン）へのインポートのために特定のパーティションをソースドメイン（たとえばテストドメイン）からエクスポートするようにとの要求が受信される。
【００６７】
ステップ４８４において、参照された任意のリソースグループテンプレートからのものも含めて、パーティションにおいて各々のリソースグループおよびリソースのためのパーティション特有の構成エレメントを生成するために用いることができるパーティション構成および他の情報を含むパーティションアーカイブが作成される。パーティションアーカイブは、そこに、エクスポート可能で構成可能な値の変更を可能にするインターフェイスを含む。
【００６８】
ステップ４８６において、特定のパーティションをターゲットドメインにデプロイするために、そのターゲットドメイン内で使用されるように任意の修正済みパーティション構成を適用することを含めて、エクスポート可能で構成可能な値に対する任意の受信済みの変更が、システムによって、パーティションアーカイブと組合わせて用いられる。
【００６９】
インプリメンテーションの例
具体的な実施形態を説明する追加の詳細を例示の目的で以下に記載する。
【００７０】
エクスポートパーティション
上述のとおり、パーティションは、ソースドメインからエクスポートされると、パーティションアーカイブを生成する。一実施形態に従うと、以下がパーティションアーカイブに含まれ得る：パーティション構成；パーティションに含まれる任意のリソースグループ；それらのリソースグループによって参照される任意のリソースグループテンプレート、および、パーティションのファイルシステムのコンテンツ。上述のとおり、任意には、パーティションにデプロイされたアプリケーションのためのアプリケーションバイナリおよび構成はまた、パーティションアーカイブに含めることができる。いくつかのインスタンスにおいては、ドメインに対するすべての依存性をなくすことはできない。パーティションが参照し得るドメインにおける構成エレメントのいくつかの例は、ターゲットおよびセキュリティ領域を含む。
【００７１】
インポートパーティション
いくつかのインスタンスにおいては、パーティションアーカイブをインポートしている間、システムアドミニストレータは、（ターゲットおよびセキュリティ領域などの）ドメインに対する依存性を更新する必要があるかもしれず、任意には、パーティション構成における他の属性を更新してそれを有効にする必要があるかもしれない。更新される必要があるかもしれないいくつかのアイテムはパーティションプロパティ、JDBCSystemResourceOverrideMBean、およびResourceGroupにおける他のリソースを含む。
【００７２】
パーティションのインポート中におけるリソースグループテンプレートのコンフリクト
いくつかのインスタンスにおいては、パーティションアーカイブは、ソースドメインにおける他のパーティションと共有されたリソースグループテンプレートを含んでもよい。ターゲットドメインにパーティションアーカイブをインポートする場合、共用リソースグループテンプレートが、場合によってはそれより前のパーティションインポートにより、ターゲットドメインに既に存在している可能性がある。一実施形態に従うと、インポート動作は、両方のツリー（既存のリソースグループテンプレートおよび新しいリソースグループテンプレート）のディープツリー比較を実行することによって、既存のリソースグループテンプレートがアーカイブに含まれているものと同一であるかどうかを検出することとなる。それらが同一であれば、既存のリソースグループテンプレートが用いられることとなる。逆に、それらが同一でなければ、インポートが失敗することとなり、既存のリソースグループテンプレートを用いる代わりに、新しいリソースグループテンプレートを作成するために用いられるだろうリソースグループテンプレートについての新しい名前を示すインポートを再試行することをユーザに要求する。
【００７３】
構成データのカテゴリ
一実施形態に従うと、さまざまなカテゴリのパーティション構成が存在する。その各々はわずかに異なる処理を必要とする：
インポート時に変化なし（Won't change on import）：これらは、ソースドメインからターゲットドメインに逐語的にコピーされる属性である。これらを変化させる必要がある場合、アドミニストレータは後でパーティションをインポートした後に変化させることができる。例としてWorkManager設定を含む。
【００７４】
インポート時に変化の可能性あり（Likely to change on import）：これらは、インポート時に変化する可能性が非常に高い属性であり、新しいドメインのために正確に設定されなければ、検証エラーを発生させることとなる。しばしば、これらは、（パーティション外の）ドメインにおけるコンフィグ要素を参照する属性である。例として、TargetsおよびSecurityRealmsの参照を含む。
【００７５】
インポート時に変化する可能性もあれば変化しない可能性もある（May or may not change on import）：これらは我々がまったく認識していない属性であるが、これら属性が変化する場合、これら属性は、場合によっては（インポート後ではなく）インポート中に変化させるべきである。なぜなら、これら属性が誤っている場合、検証エラーまたは不良な挙動を発生させる可能性があるからである。例として、JDBCSystemResourceOverrideMBean属性（ＵＲＬ、ユーザ、passwdなど）を含む。
【００７６】
ライフサイクル管理との統合
パーティションが新しいドメインにインポートされる場合、いくつかの外部システムが新しくインポートされたパーティションを認識するように構成される必要があるかもしれない。たとえば、ＯＴＤは新しいパーティションにおけるアプリケーションにバランスをロードするように構成される必要があるかもしれない。
【００７７】
パーティションアーカイブフォーマット
一実施形態に従うと、パーティションアーカイブは、表１に示されるようなコンテンツを備えたｚｉｐファイルであり得る：
【００７８】
【表１】
0006574794.tif 000002
【００７９】
exportPartition
一実施形態に従うと、exportPartitionを公開するパブリック層はPortablePartitionManagerMBeanである。
【００８０】
【数１】
0006574794.tif 000003
【００８１】
この場合：
partitionNameはエクスポートすべきパーティションの名前である。
【００８２】
expArchPathは、（クライアントではなく）ａｄｍｉｎサーバによって理解されるように作成すべきアーカイブファイルへのフルパスである。アーカイブの作成に加えて、exportPartitionは、パーティションアーカイブと同じディレクトリに<PartitionName>-attributes.jsonファイルのコピーを配置することとなる。
【００８３】
includeAppsNLibsは、アプリケーションバイナリが如何に処理されるかについて影響を及ぼすブーリアンである。デフォルトで真に設定する。
【００８４】
keyFileは、暗号化された属性のための暗号キーとして用いるべきストリングを含んでいるユーザ提供型ファイルである。
【００８５】
@ExportCustomizableValueアノテーション
一実施形態に従うと、デフォルトでは、パーティションにおけるすべての構成属性は、パーティションアーカイブにおいて逐語的に保存され、そのまま（すなわち、上述の「変化なし（Won't change）」カテゴリに従って）インポートされる。しかしながら、上述のとおり、いくつかの状況においては、いくつかの属性はインポート中に変更される必要があるかもしれない。一実施形態に従うと、これを示すために、@ExportCustomizableValueアノテーションを用いることができる。構成属性が@ExportCustomizableValueアノテーションを有する場合、パーティションアーカイブconfig.xmlに属性を保存することに加えて、属性もパーティションアーカイブにおける<PartitionName>-attributes.jsonファイルに保存される。これは、属性についての値がインポート時に要求されるべきであることを示している。たとえば、以下のとおりである：
【００８６】
【数２】
0006574794.tif 000004
【００８７】
上述の例においては、JDBCSystemResourceOverrideMBeanの全属性は、それらの現在値と共に<PartitionName>-attributes.jsonにコピーされる（saveDefaultはデフォルトで真となる）。
【００８８】
【数３】
0006574794.tif 000005
【００８９】
上述の例においては、パーティションの領域属性は現在値なしで<PartitionName>-attributes.jsonに保存されることとなる。<PartitionName>-attributes.jsonファイルの例は以下のとおりであり得る：
【００９０】
【数４】
0006574794.tif 000006
【００９１】
importPartition
一実施形態に従うと、importPartitionを公開するパブリック層はPortablePartitionManagerMBeanである。
【００９２】
【数５】
0006574794.tif 000007
【００９３】
この場合：
archiveFileName：（クライアントではなく）ａｄｍｉｎサーバによって理解されるようにインポートすべきアーカイブへのフルパス。importPartitionはまた、パーティションアーカイブと同じディレクトリにおけるファイル<PartitionName>-attributes.jsonを探索することとなる。それが発見されると、そのファイルにおける値が、パーティションアーカイブにおけるそれらの値を無効にすることとなる。
【００９４】
createNew：（以下を参照）。
partitionName：新しく作成されたパーティションの名前。デフォルトで、パーティションアーカイブにおいて指定された名前となる。
【００９５】
keyFile：エクスポート中に暗号化された属性のための暗号キーとして用いられたストリングを含むユーザ提供型ファイルである。
【００９６】
config.xmlにおけるパーティション構成を再作成すると共に、アプリケーションおよびシステムリソースが新しいパーティションのためにデプロイされる必要がある。
【００９７】
アドミニストレータは、ターゲットドメインに適した変更済み属性を<PartitionName>-attributes.jsonファイルに提供し得る。
【００９８】
createNewフラグ（importPartition）
一実施形態に従うと、このフラグはimportPartitionを実行する間に以下のセマンティックを有している：
指定されたフラグなし（No Flag Specified）：同じ名前を有する（または、深い比較がサポートされている場合に「同じＲＧＴ（same RGT）」ではない同じ名前を有する）既存のＲＧＴがある場合、失敗とする。この場合、インポートが失敗し、次のようなメッセージが得られる：「CompanyRGTという名前のＲＧＴが既に存在している。仮にドメインに既に存在しているCompanyRGTを用いることを所望する場合、このコマンドをcreateNew=falseで再実行せよ。仮に既存のCompanyRGTを無視して、パーティションアーカイブにおける定義およびattributes.jsonファイルを用いて新しいCompanyRGTを作成することを所望する場合、このコマンドをcreateNew=trueで再実行せよ。」
偽（false）：インポート中にクラッシュがある場合、既存のＲＧＴを用いる。
【００９９】
真（true）：クラッシュがある場合、新しいＲＧＴを作成する。
ターゲットドメインにおける既存のＲＧＴはいずれも変更されない。
【０１００】
アプリケーション／ライブラリバイナリのエクスポート
一実施形態に従うと、パーティションがエクスポートされると、アプリケーションバイナリがパーティションアーカイブに含まれているか否かが、エクスポート動作時の「includeApps」オプションの値によって判断される。ブーリアン「includeApps」が真であれば、バイナリが含まれており、そうでない場合、バイナリは排除されている。
【０１０１】
この<partition>-attributes.jsonは、「includeApps」が真に設定されているかまたは偽に設定されているかに関わらず、パーティションと、エクスポートされているパーティション内のリソースグループとに範囲指定された各々のアプリケーションのためのエントリを有するだろう。アプリケーション属性「ソース・経路（source-path）」「プラン・経路（plan-path）」、「ステージング・モード（staging-mode）」は、エンドユーザにとって最も重要である。
【０１０２】
アプリケーション／ライブラリバイナリのインポート
一実施形態に従うと、importPartition中に、アプリケーションが如何にデプロイされるかは、いくつかのファクタに依存しており、たとえば、アプリケーションバイナリが<partition-name>.zipに存在しているかどうか、または、ステージング・モード属性が<partition-name>-attributes.jsonに存在しているかどうかに依存している。
【０１０３】
アプリケーションバイナリが<partition-name>.zipに存在している場合、importPartition中に、この（ジップからの）アプリケーションバイナリが用いられる。このバイナリは、親アプリケーションのディレクトリを（それがResourceGroupTemplateであろうと、またはResourceGroupであろうと）アップロードするためにコピーされる。アプリケーションについてのステージング・モードは、パーティションがエクスポートされたときにステージングモードが何であったかにかかわらず、「ＳＴＡＧＥ」に設定される。
【０１０４】
アプリケーションバイナリが<partition-name>.zipに存在していない場合、importPartition中に、「ステージング・モード（staging-mode）」属性が<partition-name>-attribute.jsonファイルから読取られ、以下のアクションが取られる。
【０１０５】
ステージング・モードが「ＳＴＡＧＥ」である場合、ステージング・モードがステージであればアプリケーションバイナリがエクスポート中にｚｉｐファイルに含まれているべきであったことを示唆するエラーメッセージが投入される。
【０１０６】
ステージング・モードが「ＮＯＳＴＡＧＥ」または「ＥＸＴＥＲＮＡＬ」である場合、<partition-name>-attributes.jsonから「ソース・経路（source-path）」属性が読取られ、ステージング・モード（staging-mode）およびソース・経路（source-path）が読取られるのに応じて、アプリケーションが（<partition-name>-attributes.jsonファイルからどんなものが読取られていたとしても）「ＮＯＳＴＡＧＥ」または「ＥＸＴＥＲＮＡＬ」でデプロイされる。アプリケーションバイナリが読取られたソース・経路（source-path）に存在していない場合、エラーが投入され、importPartitionが停止される。
【０１０７】
暗号化された属性のエクスポート
一実施形態に従うと、ドメインツリーにおける暗号化された各々の属性は、（SerializedSystemIni.datにおいて維持される）ドメインに特有のキーで暗号化することができる。これは、キーであるSerializedSystemIni.datが各ドメイン毎に異なっているので、暗号化された属性をそのままではエクスポートすることができないことを意味している。したがって、暗号化されたデータのエクスポートを処理するために以下のステップが用いられる：
エクスポート中に新しい秘密キーを生成。
【０１０８】
秘密キーを用いて、partition-config.xmlにおけるすべての暗号化された属性と、<Partition-name>.zipの一部であるいずれかのSystemResource記述子とを暗号化する。
【０１０９】
ソルト（salt）および第２のキーで秘密キーを暗号化し、これを、エクスポートされたジップ<Partition-name>.zipの一部であるファイルexpPartSecretに保存する。
【０１１０】
暗号化された属性のインポート
パーティション全体が読取られて、<Partition-name>-attributes.jsonに従って属性が変更された後のインポート中に、暗号化された属性を処理するために次のステップが用いられる：
エクスポートされたジップの一部である秘密キーexpPartSecretを読取る。
【０１１１】
ＷＬＳソースにおけるデフォルトキーまたはインポートするためにkeyFileオプションを用いてユーザによって提供されるキーのいずれかである第２のキーを用いて秘密キーを復号化する。ユーザによって提供されるキーは、インポートの際に用いられるキーと一致するはずである。
【０１１２】
expPartSecretから読取られたキーを用いて（上述で読取られて変更された）パーティションMBeanにおけるすべての暗号化された属性を復号化する。
【０１１３】
インポートされたドメインのためのドメイン特有のキー（SerializedSystemIni.dat）でパーティションMBeanにおける暗号化された属性をすべて暗号化する。
【０１１４】
この発明は、この開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取り可能記憶媒体を含む、１つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【０１１５】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または（１つもしくは複数の）コンピュータ読取り可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【０１１６】
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するかまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。
【図１】
0006574794.tif 000008
【図２】
0006574794.tif 000009
【図３】
0006574794.tif 000010
【図４】
0006574794.tif 000011
【図５】
0006574794.tif 000012
【図６】
0006574794.tif 000013
【図７】
0006574794.tif 000014
【図８】
0006574794.tif 000015