(58)【調査した分野】(Int.Cl.,DB名)
前記1つ以上のコンピュータが、前記第2のアプリケーションサーバドメインへの前記パーティションアーカイブのデプロイメントまたはインポート中に、前記パーティションに関連付けられた複数のエクスポート可能な値または複数の構成可能な値を含む、前記パーティションアーカイブにおける情報を使用して、前記第2のアプリケーションサーバドメインにおいて用いられる前記パーティションを構成するステップをさらに含み、
前記第2のアプリケーションサーバドメインにおいて用いられる前記パーティションは、アドミニストレータまたは別のソースから受信したいずれかの変更済みの複数の構成可能な値を含む、請求項6から8のいずれかに記載の方法。
プログラム命令を機械読取り可能フォーマットで含むコンピュータプログラムであって、前記プログラム命令は、1つ以上のコンピュータに請求項6から10のいずれかに記載の方法を実行させる、コンピュータプログラム。
【発明を実施するための形態】
【0006】
詳細な説明:
一実施形態に従うと、マルチテナントアプリケーションサーバ環境においてポータブルパーティションを提供するためのシステムおよび方法がこの明細書中に記載される。一実施形態に従うと、当該システムは、パーティションを第1のドメインまたはソースドメイン(たとえばテストドメイン)からエクスポートし、別の第2のドメインまたはターゲットドメイン(たとえば生成ドメイン)にインポートすることを可能にする。パーティションアーカイブの作成またはエクスポート中に、パーティション構成、リソースグループまたはリソースグループテンプレート情報、および、任意にはアプリケーションバイナリを含むパーティションアーカイブが作成される。パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするインターフェイスを含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【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】
ポータブルパーティション
一実施形態に従うと、当該システムは、パーティションを第1のドメインまたはソースドメイン(たとえばテストドメイン)からエクスポートし、別の第2のドメインまたはターゲットドメイン(たとえば生成ドメイン)にインポートすることを可能にする。パーティションアーカイブの作成またはエクスポート中に、パーティション構成、リソースグループまたはリソースグループテンプレート情報、および、任意にはアプリケーションバイナリを含むパーティションアーカイブが作成される。パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするインターフェイスを含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【0052】
さまざまな実施形態に従うと、この特徴は、パーティションを、たとえばこれらパーティションが正常に開発されてテストされてきたテスト環境から生産環境に移動させることを所望するアプリケーションサーバ顧客としては、上述のようなシナリオにおいて有用である。
【0053】
図6は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用を示す。
図6に示されるように、一実施形態に従うと、第1のドメインまたはソースドメイン400(たとえばテストドメイン)は、パーティション構成404と1つ以上のパーティション特有のリソースグループ、アプリケーションまたはリソース406とに関連付けられた特定のパーティションA402を含む1つ以上のパーティションを含み得る。
【0054】
任意には、パーティションはリソースグループテンプレート410を参照することができる。各々のリソースグループまたはそのリソースグループを含むパーティションは、そのリソースグループまたはパーティションがターゲット設定されてデプロイされるべきターゲット(ソースドメインにおける仮想ターゲット412など)を定義する仮想ターゲット(たとえば仮想ホスト)情報に関連付けることができる。
【0055】
一実施形態に従うと、別の第2のドメインまたはターゲットドメイン420(たとえば生成ドメイン)にパーティションをインポートすることが所望される可能性がある。この場合、搬送されたパーティションA422は、同様に、パーティション構成424および1つ以上のパーティション特有のリソースグループ、アプリケーションまたはリソース426に関連付けることができ、任意にはリソースグループテンプレート430を参照することができ、そのリソースグループまたはパーティションがターゲット設定されてデプロイされるべきターゲット(ターゲットドメインにおける仮想ターゲット432など)を定義する仮想ターゲット(たとえば仮想ホスト)情報に関連付けることができる。
【0056】
一実施形態に従うと、パーティションアーカイブの作成またはエクスポート440中に、パーティション構成444、リソースグループまたはリソースグループテンプレート情報446、および任意にはアプリケーションバイナリ448を含むパーティションアーカイブ442が作成される。一実施形態に従うと、パーティションアーカイブは、たとえば、ジップタイプのファイルであり得る。
【0057】
一実施形態に従うと、パーティションアーカイブはまた、パーティションに関連付けられたエクスポート可能または構成可能な値452へのアクセスを可能にするJSONインターフェイス450(たとえばJSONファイル)を含み得る。ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート454中に、パーティションに関連付けられたエクスポート可能な値または構成可能な値を含むパーティションアーカイブにおける情報を用いて、ターゲットドメインにおいて使用されるようにパーティションを構成する。
【0058】
システム構成MBeansは時間とともに変化し得るので、システムは、システム上のアノテーションまたはパーティション属性もしくはMBeansを、たとえば、これらのMBeansがパーティションに関連付けられたエクスポート可能な値または構成可能な値として公開されるべきであることを示すアノテーション@portableまたは@ExportCustomizableValueとして認識することができる。
【0059】
一実施形態に従うと、アプリケーションバイナリの重みが大きい可能性があるので、パーティションアーカイブにおけるそれらのバイナリをバンドルしないことが好ましいかもしれず、このため、代わりに、エクスポート・パーティションコマンドを用いて、パーティションアーカイブにバイナリを含めるかまたはバイナリを排除することができる。次いで、ターゲットドメインにおけるユーザは、JSONファイルにおけるアプリケーションバイナリの位置(ソースドメインの位置とは異なる位置であり得る)を指定することができる。
【0060】
図7は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境におけるポータブルパーティションの使用をさらに示す。
図7に示されるように、一実施形態に従うと、上述のように、パーティションアーカイブは、パーティションに関連付けられたエクスポート可能な値または構成可能な値へのアクセスを可能にするJSONインターフェイスを含む。
【0061】
ターゲットドメインへのパーティションアーカイブのデプロイメントまたはインポート中に、変更済みの構成可能な値460は、アドミニストレータからまたは別のソースから受信することができ、パーティションに関連付けられたエクスポート可能な値もしくは構成可能な値を変更するかまたはパーティションに関連付けられたエクスポート可能な値もしくは構成可能な値とともに用いられ、ターゲットドメインにおいて使用されるように修正済みパーティション構成462を提供するのに用いられる。
【0062】
いくつかのパーティション構成情報は、特定のドメインに制限される可能性があるが、ユーザは異なるドメインで使用できるようにこれを変更することができなければならない。たとえば、ユーザが変更できないドメイン下にある1セットの構成MBeansは、ユーザが変更可能であるパーティションにおける同様のセットのMBeansに関連付けることができる。
【0063】
アドミニストレータによって提供されるいずれかの構成変更に基づいて、パーティションサブコンポーネントは、ターゲットドメインにおけるそれらの環境を再作成することができる。ソースドメインにおける或るパーティションが1つのアプリケーションを備えたリソースグループを含む場合、そのパーティションがターゲットドメインにインポートされると、そのリソースグループ内のアプリケーションの構成およびデプロイメントが、ターゲットドメインに適合するようにシステムによって自動的に実行され得る。
【0064】
たとえば、一実施形態に従うと、JSONファイルが公開し得る属性は、ソースドメインと比べて、ユーザがターゲットドメインにおいて異なるPDBを或るパーティションに関連付けることを可能にする。インポート中に、システムは、パーティションアーカイブと同じフォルダ内のJSONファイルをチェックすることができ、それがユーザによるいずれかの変更を発見した場合、それら変更を用いて、ターゲットドメインにおける構成デフォルトを無効にする。
【0065】
図8は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてポータブルパーティションを用いる方法を示す。
図8に示されるように、一実施形態に従うと、ステップ480において、ソフトウェアアプリケーションの実行のためのドメインならびに1つ以上のパーティションおよびリソースグループを含むアプリケーションサーバ環境が提供される。各々のパーティションは、ドメインの管理およびランタイム区分を提供し、1つ以上のリソースグループを含み得る。各々のリソースグループは、リソースグループテンプレートを参照し得るデプロイ可能なアプリケーションまたはリソースの集合である。
【0066】
ステップ482において、ターゲットドメイン(たとえば生成ドメイン)へのインポートのために特定のパーティションをソースドメイン(たとえばテストドメイン)からエクスポートするようにとの要求が受信される。
【0067】
ステップ484において、参照された任意のリソースグループテンプレートからのものも含めて、パーティションにおいて各々のリソースグループおよびリソースのためのパーティション特有の構成エレメントを生成するために用いることができるパーティション構成および他の情報を含むパーティションアーカイブが作成される。パーティションアーカイブは、そこに、エクスポート可能で構成可能な値の変更を可能にするインターフェイスを含む。
【0068】
ステップ486において、特定のパーティションをターゲットドメインにデプロイするために、そのターゲットドメイン内で使用されるように任意の修正済みパーティション構成を適用することを含めて、エクスポート可能で構成可能な値に対する任意の受信済みの変更が、システムによって、パーティションアーカイブと組合わせて用いられる。
【0069】
インプリメンテーションの例
具体的な実施形態を説明する追加の詳細を例示の目的で以下に記載する。
【0070】
エクスポートパーティション
上述のとおり、パーティションは、ソースドメインからエクスポートされると、パーティションアーカイブを生成する。一実施形態に従うと、以下がパーティションアーカイブに含まれ得る:パーティション構成;パーティションに含まれる任意のリソースグループ;それらのリソースグループによって参照される任意のリソースグループテンプレート、および、パーティションのファイルシステムのコンテンツ。上述のとおり、任意には、パーティションにデプロイされたアプリケーションのためのアプリケーションバイナリおよび構成はまた、パーティションアーカイブに含めることができる。いくつかのインスタンスにおいては、ドメインに対するすべての依存性をなくすことはできない。パーティションが参照し得るドメインにおける構成エレメントのいくつかの例は、ターゲットおよびセキュリティ領域を含む。
【0071】
インポートパーティション
いくつかのインスタンスにおいては、パーティションアーカイブをインポートしている間、システムアドミニストレータは、(ターゲットおよびセキュリティ領域などの)ドメインに対する依存性を更新する必要があるかもしれず、任意には、パーティション構成における他の属性を更新してそれを有効にする必要があるかもしれない。更新される必要があるかもしれないいくつかのアイテムはパーティションプロパティ、JDBCSystemResourceOverrideMBean、およびResourceGroupにおける他のリソースを含む。
【0072】
パーティションのインポート中におけるリソースグループテンプレートのコンフリクト
いくつかのインスタンスにおいては、パーティションアーカイブは、ソースドメインにおける他のパーティションと共有されたリソースグループテンプレートを含んでもよい。ターゲットドメインにパーティションアーカイブをインポートする場合、共用リソースグループテンプレートが、場合によってはそれより前のパーティションインポートにより、ターゲットドメインに既に存在している可能性がある。一実施形態に従うと、インポート動作は、両方のツリー(既存のリソースグループテンプレートおよび新しいリソースグループテンプレート)のディープツリー比較を実行することによって、既存のリソースグループテンプレートがアーカイブに含まれているものと同一であるかどうかを検出することとなる。それらが同一であれば、既存のリソースグループテンプレートが用いられることとなる。逆に、それらが同一でなければ、インポートが失敗することとなり、既存のリソースグループテンプレートを用いる代わりに、新しいリソースグループテンプレートを作成するために用いられるだろうリソースグループテンプレートについての新しい名前を示すインポートを再試行することをユーザに要求する。
【0073】
構成データのカテゴリ
一実施形態に従うと、さまざまなカテゴリのパーティション構成が存在する。その各々はわずかに異なる処理を必要とする:
インポート時に変化なし(Won't change on import):これらは、ソースドメインからターゲットドメインに逐語的にコピーされる属性である。これらを変化させる必要がある場合、アドミニストレータは後でパーティションをインポートした後に変化させることができる。例としてWorkManager設定を含む。
【0074】
インポート時に変化の可能性あり(Likely to change on import):これらは、インポート時に変化する可能性が非常に高い属性であり、新しいドメインのために正確に設定されなければ、検証エラーを発生させることとなる。しばしば、これらは、(パーティション外の)ドメインにおけるコンフィグ要素を参照する属性である。例として、TargetsおよびSecurityRealmsの参照を含む。
【0075】
インポート時に変化する可能性もあれば変化しない可能性もある(May or may not change on import):これらは我々がまったく認識していない属性であるが、これら属性が変化する場合、これら属性は、場合によっては(インポート後ではなく)インポート中に変化させるべきである。なぜなら、これら属性が誤っている場合、検証エラーまたは不良な挙動を発生させる可能性があるからである。例として、JDBCSystemResourceOverrideMBean属性(URL、ユーザ、passwdなど)を含む。
【0076】
ライフサイクル管理との統合
パーティションが新しいドメインにインポートされる場合、いくつかの外部システムが新しくインポートされたパーティションを認識するように構成される必要があるかもしれない。たとえば、OTDは新しいパーティションにおけるアプリケーションにバランスをロードするように構成される必要があるかもしれない。
【0077】
パーティションアーカイブフォーマット
一実施形態に従うと、パーティションアーカイブは、表1に示されるようなコンテンツを備えたzipファイルであり得る:
【0079】
exportPartition
一実施形態に従うと、exportPartitionを公開するパブリック層はPortablePartitionManagerMBeanである。
【0081】
この場合:
partitionNameはエクスポートすべきパーティションの名前である。
【0082】
expArchPathは、(クライアントではなく)adminサーバによって理解されるように作成すべきアーカイブファイルへのフルパスである。アーカイブの作成に加えて、exportPartitionは、パーティションアーカイブと同じディレクトリに<PartitionName>-attributes.jsonファイルのコピーを配置することとなる。
【0083】
includeAppsNLibsは、アプリケーションバイナリが如何に処理されるかについて影響を及ぼすブーリアンである。デフォルトで真に設定する。
【0084】
keyFileは、暗号化された属性のための暗号キーとして用いるべきストリングを含んでいるユーザ提供型ファイルである。
【0085】
@ExportCustomizableValueアノテーション
一実施形態に従うと、デフォルトでは、パーティションにおけるすべての構成属性は、パーティションアーカイブにおいて逐語的に保存され、そのまま(すなわち、上述の「変化なし(Won't change)」カテゴリに従って)インポートされる。しかしながら、上述のとおり、いくつかの状況においては、いくつかの属性はインポート中に変更される必要があるかもしれない。一実施形態に従うと、これを示すために、@ExportCustomizableValueアノテーションを用いることができる。構成属性が@ExportCustomizableValueアノテーションを有する場合、パーティションアーカイブconfig.xmlに属性を保存することに加えて、属性もパーティションアーカイブにおける<PartitionName>-attributes.jsonファイルに保存される。これは、属性についての値がインポート時に要求されるべきであることを示している。たとえば、以下のとおりである:
【0087】
上述の例においては、JDBCSystemResourceOverrideMBeanの全属性は、それらの現在値と共に<PartitionName>-attributes.jsonにコピーされる(saveDefaultはデフォルトで真となる)。
【0089】
上述の例においては、パーティションの領域属性は現在値なしで<PartitionName>-attributes.jsonに保存されることとなる。<PartitionName>-attributes.jsonファイルの例は以下のとおりであり得る:
【0091】
importPartition
一実施形態に従うと、importPartitionを公開するパブリック層はPortablePartitionManagerMBeanである。
【0093】
この場合:
archiveFileName:(クライアントではなく)adminサーバによって理解されるようにインポートすべきアーカイブへのフルパス。importPartitionはまた、パーティションアーカイブと同じディレクトリにおけるファイル<PartitionName>-attributes.jsonを探索することとなる。それが発見されると、そのファイルにおける値が、パーティションアーカイブにおけるそれらの値を無効にすることとなる。
【0094】
createNew:(以下を参照)。
partitionName:新しく作成されたパーティションの名前。デフォルトで、パーティションアーカイブにおいて指定された名前となる。
【0095】
keyFile:エクスポート中に暗号化された属性のための暗号キーとして用いられたストリングを含むユーザ提供型ファイルである。
【0096】
config.xmlにおけるパーティション構成を再作成すると共に、アプリケーションおよびシステムリソースが新しいパーティションのためにデプロイされる必要がある。
【0097】
アドミニストレータは、ターゲットドメインに適した変更済み属性を<PartitionName>-attributes.jsonファイルに提供し得る。
【0098】
createNewフラグ(importPartition)
一実施形態に従うと、このフラグはimportPartitionを実行する間に以下のセマンティックを有している:
指定されたフラグなし(No Flag Specified):同じ名前を有する(または、深い比較がサポートされている場合に「同じRGT(same RGT)」ではない同じ名前を有する)既存のRGTがある場合、失敗とする。この場合、インポートが失敗し、次のようなメッセージが得られる:「CompanyRGTという名前のRGTが既に存在している。仮にドメインに既に存在しているCompanyRGTを用いることを所望する場合、このコマンドをcreateNew=falseで再実行せよ。仮に既存のCompanyRGTを無視して、パーティションアーカイブにおける定義およびattributes.jsonファイルを用いて新しいCompanyRGTを作成することを所望する場合、このコマンドをcreateNew=trueで再実行せよ。」
偽(false):インポート中にクラッシュがある場合、既存のRGTを用いる。
【0099】
真(true):クラッシュがある場合、新しいRGTを作成する。
ターゲットドメインにおける既存のRGTはいずれも変更されない。
【0100】
アプリケーション/ライブラリバイナリのエクスポート
一実施形態に従うと、パーティションがエクスポートされると、アプリケーションバイナリがパーティションアーカイブに含まれているか否かが、エクスポート動作時の「includeApps」オプションの値によって判断される。ブーリアン「includeApps」が真であれば、バイナリが含まれており、そうでない場合、バイナリは排除されている。
【0101】
この<partition>-attributes.jsonは、「includeApps」が真に設定されているかまたは偽に設定されているかに関わらず、パーティションと、エクスポートされているパーティション内のリソースグループとに範囲指定された各々のアプリケーションのためのエントリを有するだろう。アプリケーション属性「ソース・経路(source-path)」「プラン・経路(plan-path)」、「ステージング・モード(staging-mode)」は、エンドユーザにとって最も重要である。
【0102】
アプリケーション/ライブラリバイナリのインポート
一実施形態に従うと、importPartition中に、アプリケーションが如何にデプロイされるかは、いくつかのファクタに依存しており、たとえば、アプリケーションバイナリが<partition-name>.zipに存在しているかどうか、または、ステージング・モード属性が<partition-name>-attributes.jsonに存在しているかどうかに依存している。
【0103】
アプリケーションバイナリが<partition-name>.zipに存在している場合、importPartition中に、この(ジップからの)アプリケーションバイナリが用いられる。このバイナリは、親アプリケーションのディレクトリを(それがResourceGroupTemplateであろうと、またはResourceGroupであろうと)アップロードするためにコピーされる。アプリケーションについてのステージング・モードは、パーティションがエクスポートされたときにステージングモードが何であったかにかかわらず、「STAGE」に設定される。
【0104】
アプリケーションバイナリが<partition-name>.zipに存在していない場合、importPartition中に、「ステージング・モード(staging-mode)」属性が<partition-name>-attribute.jsonファイルから読取られ、以下のアクションが取られる。
【0105】
ステージング・モードが「STAGE」である場合、ステージング・モードがステージであればアプリケーションバイナリがエクスポート中にzipファイルに含まれているべきであったことを示唆するエラーメッセージが投入される。
【0106】
ステージング・モードが「NOSTAGE」または「EXTERNAL」である場合、<partition-name>-attributes.jsonから「ソース・経路(source-path)」属性が読取られ、ステージング・モード(staging-mode)およびソース・経路(source-path)が読取られるのに応じて、アプリケーションが(<partition-name>-attributes.jsonファイルからどんなものが読取られていたとしても)「NOSTAGE」または「EXTERNAL」でデプロイされる。アプリケーションバイナリが読取られたソース・経路(source-path)に存在していない場合、エラーが投入され、importPartitionが停止される。
【0107】
暗号化された属性のエクスポート
一実施形態に従うと、ドメインツリーにおける暗号化された各々の属性は、(SerializedSystemIni.datにおいて維持される)ドメインに特有のキーで暗号化することができる。これは、キーであるSerializedSystemIni.datが各ドメイン毎に異なっているので、暗号化された属性をそのままではエクスポートすることができないことを意味している。したがって、暗号化されたデータのエクスポートを処理するために以下のステップが用いられる:
エクスポート中に新しい秘密キーを生成。
【0108】
秘密キーを用いて、partition-config.xmlにおけるすべての暗号化された属性と、<Partition-name>.zipの一部であるいずれかのSystemResource記述子とを暗号化する。
【0109】
ソルト(salt)および第2のキーで秘密キーを暗号化し、これを、エクスポートされたジップ<Partition-name>.zipの一部であるファイルexpPartSecretに保存する。
【0110】
暗号化された属性のインポート
パーティション全体が読取られて、<Partition-name>-attributes.jsonに従って属性が変更された後のインポート中に、暗号化された属性を処理するために次のステップが用いられる:
エクスポートされたジップの一部である秘密キーexpPartSecretを読取る。
【0111】
WLSソースにおけるデフォルトキーまたはインポートするためにkeyFileオプションを用いてユーザによって提供されるキーのいずれかである第2のキーを用いて秘密キーを復号化する。ユーザによって提供されるキーは、インポートの際に用いられるキーと一致するはずである。
【0112】
expPartSecretから読取られたキーを用いて(上述で読取られて変更された)パーティションMBeanにおけるすべての暗号化された属性を復号化する。
【0113】
インポートされたドメインのためのドメイン特有のキー(SerializedSystemIni.dat)でパーティションMBeanにおける暗号化された属性をすべて暗号化する。
【0114】
この発明は、この開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取り可能記憶媒体を含む、1つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【0115】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または(1つもしくは複数の)コンピュータ読取り可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【0116】
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するかまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。