(57)【要約】スマートディレクトリの使用を介して、アプリケーションが分散コンピュータ環境に自動的に展開される（３０５）。ある実施例では、スマートディレクトリは、分散コンピュータ環境に現在展開されたアプリケーションのコピーのリポジトリ（３０５，３１０，３１５）である。スマートディレクトリは、分散コンピュータ環境によってモニタリングされる（３５５）。スマートディレクトリに付加された新たなアプリケーションが、自動的に展開される（３３３）。スマートディレクトリで修正されたアプリケーションは自動的に再展開される（３３８）。スマートディレクトリから除去されたアプリケーションは、自動的に非展開される（３４８）。スマートディレクトリは、１つのファイルにパッケージされ、又は幾つかの構成要素ファイルとしてパッケージされていないアプリケーションを自動的に展開することができる。【選択図】図３
2005505034.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理装置を含む分散コンピュータ領域中にアプリケーションを自動的に展開する方法であって、
（ａ）前記複数の処理装置の少なくとも１つにアクセス可能なアプリケーションディレクトリに格納された非展開（undeployed）アプリケーションを自動的にスキャン（scan）し、
（ｂ）前記アプリケーションディレクトリ内の非展開アプリケーションを認識し、
（ｃ）前記複数の処理装置の選択部分に前記非展開アプリケーションを展開し、その結果、前記アプリケーションが前記複数の処理装置の前記部分により実行され得ることを含む方法。
【請求項２】
（ａ１）前記アプリケーションディレクトリに格納されたアプリケーションリストを得て、
（ｂ１）展開される予定の前記アプリケーションを選択するために、前記アプリケーションディレクトリに格納されたアプリケーションリストと、前に展開されたアプリケーションリストとを比較し、
（ｃ１）前記複数の処理装置の選択部分に前記選択されたアプリケーションを展開するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
（ｂ２）前記アプリケーションが前に展開されたアプリケーションリストにないとき、前記アプリケーションディレクトリに格納されたアプリケーションリストから展開されるアプリケーションを選択するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
（ｂ２）前記アプリケーションに関連する展開標識（deployment indicator）の値が、前に展開されたアプリケーションリストに記録された展開標識の値と異なるとき、前記アプリケーションディレクトリに格納されたアプリケーションリストから展開されるアプリケーションを選択するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記展開標識は、前記アプリケーションを含むファイルの属性であることを特徴とする請求項４に記載の方法。
【請求項６】
前記アプリケーションを含む前記ファイルの属性は、前記ファイルの日付であることを特徴とする請求項５に記載の方法。
【請求項７】
前記展開標識は、前記アプリケーションを含む少なくとも１つの個々のファイルに関連したファイルの属性であることを特徴とする請求項４に記載の方法。
【請求項８】
前記アプリケーションを含む少なくとも１つの個々のファイルに関連した前記ファイルの属性は、前記ファイルの日付であることを特徴とする請求項７に記載の方法。
【請求項９】
前記複数の処理装置は、前記非展開アプリケーションに関連した複数の属性、及び前記分散コンピュータ領域に関連した複数の属性の解析より決定されることを特徴とする請求項２に記載の方法。
【請求項１０】
前記非展開アプリケーションに関連した複数の属性は、展開記述子（deployment descriptor）に含まれることを特徴とする請求項９に記載の方法。
【請求項１１】
前記分散コンピュータ領域に関連した複数の属性は、構成ファイルに含まれることを特徴とする請求項９に記載の方法。
【請求項１２】
前記非展開アプリケーション及び前記分散コンピュータ領域に関連した複数の属性は、複数の拡張マーク付け言語（ＸＭＬ）タグとして表わされることを特徴とする請求項９に記載の方法。
【請求項１３】
前記スキャンステップは、あらかじめ決定された時間間隔が過ぎたあとで周期的に開始されることを特徴とする請求項１に記載の方法。
【請求項１４】
前記非展開アプリケーションは、１つのファイルに含まれる複数のアプリケーション構成要素を含んで構成されることを特徴とする請求項１に記載の方法。
【請求項１５】
前記非展開アプリケーションは、個々のファイルにそれぞれ含まれる複数のアプリケーション構成要素を含んで構成されることを特徴とする請求項１に記載の方法。
【請求項１６】
前記非展開アプリケーションは、Ｊ２ＥＥアプリケーションであることを特徴とする請求項１に記載の方法。
【請求項１７】
前記アプリケーションディレクトリは、不揮発性（non-volatile）情報記憶装置に格納されることを特徴とする請求項１に記載の方法。
【請求項１８】
前記前に展開されたアプリケーションリストは、前記複数の処理装置の少なくとも１つにアクセス可能なメモリ装置に格納されることを特徴とする請求項１に記載の方法。
【請求項１９】
分散コンピュータ領域中にアプリケーションオブジェクトを自動的に維持する方法であって、前記アプリケーションオブジェクトは、少なくとも１つのアプリケーションファイル内に含まれるとともに、前記分散コンピュータ領域は複数の処理装置を含み、
（ａ）アプリケーションディレクトリに配置された前記アプリケーションファイルすべてのリストを復元し、
（ｂ）アプリケーションディレクトリ内に配置された前記ファイルすべてのリストと、前に展開されたアプリケーションオブジェクトに関連するファイルすべてのリストとを比較し、
（ｃ）各アプリケーションファイルのために、前記アプリケーションファイルが前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストにないとき、前記アプリケーションファイルに含まれるアプリケーションオブジェクトを展開し、
（ｄ）各アプリケーションファイルのために、前記アプリケーションファイルが前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストの対応ファイルと異なるとき、前記アプリケーションファイルに含まれるアプリケーションオブジェクトを再展開（redeploy）し、
（ｅ）前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストの各アプリケーションファイルのために、前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストのアプリケーションファイルが、前記アプリケーションディレクトリ内に配置されたアプリケーションファイルすべてのリストにないとき、アプリケーションファイルに関連した前記アプリケーションオブジェクトを非展開する（undeploy）ステップを含む方法。
【請求項２０】
前記再展開ステップにおいて、前記相違が、アプリケーションファイルに関連した展開標識（deployment indicator）の値と、前に展開したアプリケーションオブジェクトのリストに記録された展開標識の値とを比較することによって決定されることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記展開標識は、前記アプリケーションオブジェクトを含むファイルの属性であることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記アプリケーションオブジェクトを含むファイルの属性は、前記ファイルの日付であることを特徴とする請求項２１に記載の方法。
【請求項２３】
前記展開標識は、前記アプリケーションオブジェクトを含む少なくとも１つの個々のファイルに関連したファイルの属性であることを特徴とする請求項２０に記載の方法。
【請求項２４】
前記アプリケーションオブジェクトを含む少なくとも１つの個々のファイルに関連したファイルの属性は、前記ファイルの日付であることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記復元ステップは、あらかじめ決定された時間間隔が過ぎたあとで周期的に開始されることを特徴とする請求項１９に記載の方法。
【請求項２６】
前記アプリケーションオブジェクトは、Ｊ２ＥＥアプリケーションであることを特徴とする請求項１９に記載の方法。
【請求項２７】
前記アプリケーションオブジェクトは、Ｊ２ＥＥエンタープライズビーン（Enterprise Bean）であることを特徴とする請求項１９に記載の方法。
【請求項２８】
前記アプリケーションオブジェクトは、Ｗｅｂ構成要素であることを特徴とする請求項１９に記載の方法。
【請求項２９】
前記アプリケーションディレクトリは、不揮発性情報記憶装置に格納されることを特徴とする請求項１９に記載の方法。
【請求項３０】
前に展開されたアプリケーションオブジェクトに関連した前記ファイルすべてのリストは、前記複数の処理装置の少なくとも１つにアクセス可能なメモリ装置に格納されることを特徴とする請求項１９に記載の方法。
【請求項３１】
複数の処理装置を含みながら、分散コンピュータ領域中にアプリケーションオブジェクトを自動的に維持する方法であって、
（ａ）前記アプリケーションディレクトリに配置されたアプリケーションオブジェクトのリストを生成するために、アプリケーションディレクトリを自動的にスキャンし、
（ｂ）前記アプリケーションディレクトリの各アプリケーションオブジェクトに対応する前に展開されたアプリケーションオブジェクトを見つけるために、アプリケーションオブジェクトのリストと、前に展開されたアプリケーションオブジェクトのリストとを比較し、
（ｃ）前記比較ステップへの応答を生成し、当該応答は、
前記アプリケーションオブジェクトが前に展開されたアプリケーションオブジェクトのリストにないとき、前記複数の処理装置の選択部分に前記アプリケーションオブジェクトを展開し、
前に展開されたアプリケーションオブジェクトの前記リストの対応アプリケーションオブジェクトよりも、前記アプリケーションディレクトリのアプリケーションオブジェクトがより最新であるとき、前記複数の処理装置の選択部分に前記アプリケーションオブジェクトを再展開し、又は
前に展開されたアプリケーションオブジェクトの前記リストのアプリケーションオブジェクトが、アプリケーションディレクトリ内に配置されたアプリケーションオブジェクトの前記リストにないとき、前記アプリケーションオブジェクトを非展開することを含む集まりから選択される、ことを含む方法。
【請求項３２】
前記アプリケーションオブジェクトは、Ｊ２ＥＥアプリケーションであることを特徴とする請求項３１に記載の方法。
【請求項３３】
前記アプリケーションオブジェクトは、Ｊ２ＥＥエンタープライズビーン（Enterprise Bean）であることを特徴とする請求項３１に記載の方法。
【請求項３４】
前記アプリケーションオブジェクトは、Ｗｅｂ構成要素であることを特徴とする請求項３１に記載の方法。
【請求項３５】
前記アプリケーションディレクトリは、不揮発性情報記憶装置に格納されることを特徴とする請求項３１に記載の方法。
【請求項３６】
前に展開されたアプリケーションオブジェクトのリストは、前記複数の処理装置の少なくとも１つにアクセス可能なメモリ装置に格納されることを特徴とする請求項３１に記載の方法。
【請求項３７】
情報が格納される情報記憶媒体を含む製造物であって、前記情報は処理装置上で動作するよう適合されたプロセッサ読み出し可能な命令の集まりを含み、ここで前記プロセッサ読み出し可能な命令の集まりは、請求項１の方法に従って前記処理装置を操作するよう適合されることを特徴とする製造物。
【請求項３８】
情報が格納される情報記憶媒体を含む製造物であって、前記情報は請求項１９の方法に従って前記処理装置を操作するよう適合されたプロセッサ読み出し可能な命令の集まりを含むことを特徴とする製造物。
【請求項３９】
情報が格納される情報記憶媒体を含む製造物であって、前記情報は請求項３１の方法に従って前記処理装置を操作するよう適合されたプロセッサ読み出し可能な命令の集まりを含むことを特徴とする製造物。
【請求項４０】
少なくとも第１の処理装置及び前記第１の処理装置によってアクセス可能なメモリ装置を含む処理システムであって、
前記メモリ装置に格納されたプロセッサ読み出し可能な命令の集まり、及び
（ａ）第１の処理装置にアクセス可能なアプリケーションディレクトリに格納された非展開アプリケーションを自動的にスキャンし、
（ｂ）前記アプリケーションディレクトリ内の非展開アプリケーションを認識し、
（ｃ）前記処理システムの選択部分に前記非展開アプリケーションを展開し、その結果、前記アプリケーションが前記処理システムの前記部分により実行されることができることを含むステップの集まりを実行するために前記第１の処理装置を操作すること、を含む処理システム。
【請求項４１】
前記処理システムの選択部分は、前記第１の処理装置を含むことを特徴とする請求項４０に記載の方法。
【請求項４２】
前記第１の処理装置と連絡する第２の処理装置をさらに含み、
前記処理システムの選択部分は、前記第２の処理装置を含むことを特徴とする請求項４０に記載の処理システム。
【請求項４３】
前記第１の処理装置及び前記第２の処理装置は、第１のコンピュータ上に配置されることを特徴とする請求項４２に記載の処理システム。
【請求項４４】
前記第１の処理装置は第１のコンピュータに配置され、且つ前記第２の処理装置は第２のコンピュータに配置されることを特徴とする請求項４３に記載の処理システム。
【請求項４５】
少なくとも第１の処理装置及び前記第１の処理装置によってアクセス可能なメモリ装置を含む処理システムであって、
前記メモリ装置に格納されたプロセッサ読み出し可能な命令の集まり、及び
（ａ）アプリケーションディレクトリ内に配置された前記アプリケーションファイルすべてのリストを復元し、
（ｂ）アプリケーションディレクトリ内に配置された前記ファイルすべてのリストと、前に展開されたアプリケーションオブジェクトに関連した前記ファイルすべてのリストとを比較し、
（ｃ）各アプリケーションファイルのために、前記アプリケーションファイルが前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストにないとき、前記アプリケーションファイルに含まれるアプリケーションオブジェクトを展開し、
（ｄ）各アプリケーションファイルのために、前記アプリケーションファイルが前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストの対応ファイルと異なるとき、前記アプリケーションファイルに含まれるアプリケーションオブジェクトを再展開し、
（ｅ）前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストの各アプリケーションファイルのために、前に展開されたアプリケーションオブジェクトに関連したファイルすべてのリストのアプリケーションファイルが、前記アプリケーションディレクトリ内に配置されたアプリケーションファイルすべてのリストにないとき、アプリケーションファイルに関連した前記アプリケーションオブジェクトを非展開することを含むステップの集まりを実行するために前記第１の処理装置を操作すること、を含む処理システム。
【請求項４６】
前記アプリケーションオブジェクトは、前記処理装置に展開されることを特徴とする請求項４５に記載の処理システム。
【請求項４７】
前記第１の処理装置と連絡する第２の処理装置を含み、前記アプリケーションオブジェクトは前記第２の処理装置に展開されることを特徴とする請求項４５に記載の処理システム。
【請求項４８】
前記第１の処理装置及び前記第２の処理装置は、第１のコンピュータ上に配置されることを特徴とする請求項４７に記載の処理システム。
【請求項４９】
前記第１の処理装置は第１のコンピュータに配置され、且つ前記第２の処理装置は第２のコンピュータに配置されることを特徴とする請求項４７に記載の処理システム。
【請求項５０】
少なくとも第１の処理装置及び前記第１の処理装置によってアクセス可能なメモリ装置を含む処理システムであって、
前記メモリ装置に格納されたプロセッサ読み出し可能な命令の集まり、及び
（ａ）アプリケーションディレクトリ内に配置された前記アプリケーションオブジェクトのリストを生成するためにアプリケーションディレクトリを自動的にスキャンし、
（ｂ）前記アプリケーションディレクトリの各アプリケーションオブジェクトに対応する前に展開されたアプリケーションオブジェクトを見つけるために、アプリケーションオブジェクトのリストと、前に展開されたアプリケーションオブジェクトのリストとを比較し、
（ｃ）前記比較ステップへの応答を生成し、当該応答は、
前記アプリケーションオブジェクトが前に展開されたアプリケーションオブジェクトのリストにないとき、前記複数の処理装置の選択部分に前記アプリケーションオブジェクトを展開し、
前に展開されたアプリケーションオブジェクトの前記リストの対応アプリケーションオブジェクトよりも、前記アプリケーションディレクトリのアプリケーションオブジェクトがより最新であるとき、前記複数の処理装置の選択部分に前記アプリケーションオブジェクトを再展開し、又は
前に展開されたアプリケーションオブジェクトの前記リストのアプリケーションオブジェクトが、アプリケーションディレクトリ内に配置されたアプリケーションオブジェクトの前記リストにないとき、前記アプリケーションオブジェクトを非展開することを含むステップの集まりを実行するために前記第１の処理装置を操作すること、を含む処理システム。
【請求項５１】
前記アプリケーションオブジェクトは、前記処理装置に展開されることを特徴とする請求項５０に記載の処理システム。
【請求項５２】
前記第１の処理装置と連絡する第２の処理装置を含み、前記アプリケーションオブジェクトは前記第２の処理装置に展開されることを特徴とする請求項５０に記載の処理システム。
【請求項５３】
前記第１の処理装置及び前記第２の処理装置は、第１のコンピュータ上に配置されることを特徴とする請求項５２に記載の処理システム。
【請求項５４】
前記第１の処理装置は第１のコンピュータに配置され、且つ前記第２の処理装置は第２のコンピュータに配置されることを特徴とする請求項５２に記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散コンピュータ環境にわたりアプリケーション及びアプリケーション構成要素を自動的に展開（deploying）、非展開（undeploying）、及び再展開（redeploying）する方法に関するものである。
【背景技術】
【０００２】
分散コンピュータ環境は、様々なコンピュータサービスを提供することに協調したネットワークコンピュータワーキングの集合から成る。このタイプのコンピュータ環境では、ソフトウェアコンピュータは多くのアプリケーション構成要素に分散される。これらの構成要素は１以上のネットワークコンピュータ上に配置されたサーバアプリケーションに分配され、その結果、異なる構成要素がその分散環境内の異なるサーバアプリケーションによって実行される。アプリケーション構成要素は、分散環境で効率的に機能するよう設計される。分散コンピュータ環境のためのアプリケーションを設計する利点は、多数のユーザに適応する柔軟性が増加すること、信頼性が増加すること、そしてコンピュータリソースを効率的に使用することを含んでいる。
【０００３】
分散コンピュータ環境の一例は、サンマイクロシステムズ社によって開発されたＪａｖａ（登録商標）２プラットフォーム、エンタープライズエディション（Ｊ２ＥＥ）アーキテクチャである。Ｊ２ＥＥアプリケーションは、エンタープライズＪａｖａビーンズ（ＥＪＢ）の殆どに含まれ、全てを備えた（self-contained）再使用可能なアプリケーション構成要素であって、Ｊａｖａプログラム言語で書かれている。このＪ２ＥＥアーキテクチャのための仕様が、Ｊａｖａ２プラットフォーム、エンタープライズエディション仕様のｖ１．３で記述されている。それはhttp://java.sun.com/j2ee-1.3-pfd4-spec.pdfで利用可能であり、引用によってここに組み入れられる。
【０００４】
このＪ２ＥＥアーキテクチャにおいて、アプリケーション構成要素は、分散コンピュータ環境の各コンピュータにインストールされたアプリケーションサーバプログラムで実行される。アプリケーションのためのアプリケーション構成要素は、分散コンピュータ環境の多くのアプリケーションサーバ上で拡散したり、又は１つのアプリケーションサーバで集中したりすることができる。
【０００５】
Ｊ２ＥＥアプリケーションサーバプログラムは、分散コンピュータ環境のアプリケーション構成要素により必要とされる低レベルの機能性を提供する。Ｊ２ＥＥアプリケーションサーバにより提供されるこの機能は、分散コンピュータ環境又はこの環境外に置かれた異なるアプリケーション間の通信と同様、分散アプリケーション構成要素間の通信を可能にすることを含む。アプリケーションサーバは、システムリソース、スレッド、メモリ、データベース結合、安全性、クライアント結合性、及びトランザクション管理を統御する。また、アプリケーションサーバは、Ｊ２ＥＥアプリケーションのインストール及び除去を管理する。これは、アプリケーション構成要素を分散コンピュータ環境のアプリケーションサーバに分配することを含んでいる。アプリケーションサーバにこれらの機能を統合することによって、Ｊ２ＥＥプラットフォームは、アプリケーション開発者が分散アプリケーションにより要求される低レベルの機能性よりもむしろ、アプリケーションのビジネス論理を実行することに集中することを許可する。
【０００６】
Ｊ２ＥＥアプリケーションプラットフォームは、分散アプリケーションの開発に関連する多くの複雑さを排除するために設計されるのだが、このプログラムパラダイムを備えたソフトウェア開発には複雑さと困難さが残っている。Ｊ２ＥＥアプリケーションの開発に関連する困難さの１つは、展開の問題である。展開は、分散コンピュータ環境のアプリケーションサーバ上に、アプリケーションを含む様々なアプリケーション構成要素をインストールする処理である。Ｊ２ＥＥアプリケーション構造の説明は、Ｊ２ＥＥアプリケーションを展開することに関連する複雑さを理解する上で役に立つものである。
【０００７】
図１は、十分にパッケージされたＪ２ＥＥアプリケーションの典型的な構造を示している。この形態でのＪ２ＥＥアプリケーションは、分散コンピュータ環境にインストールされるよう準備ができている。パッケージされたＪ２ＥＥアプリケーションは、エンタープライズアプリケーションアーカイブファイル（.EAR）１００に含まれる。この（.EAR）ファイルは、Ｊ２ＥＥアプリケーション１０７及びＪ２ＥＥアプリケーション展開記述子（ＤＤ：deployment descriptor）１０５を含む。Ｊ２ＥＥアプリケーション１０７は、１以上のアプリケーション構成要素を含む。これらのアプリケーション構成要素は、エンタープライズＪａｖａビーンズ（Beans）１１０〜１１２、Ｊ２ＥＥクライアントアプリケーション１２０〜１２２、又はｗｅｂ構成要素１３０〜１３２である。展開記述子（deployment descriptor）１０５は、トランザクション属性又はセキュリティ認証等のＪ２ＥＥアプリケーション属性を記述するファイルである。実施例において、展開記述子は、情報を記述するために広く用いられている言語の拡張マーク付け言語（ＸＭＬ）で符号化される。付加的な展開記述子が、Ｊ２ＥＥアプリケーションの個々の構成要素を記述するために用いられる。
【０００８】
エンタープライズＪａｖａビーンズ（EJB's）は、１１０で詳細に示されているように、Ｊａｖａアーカイブファイル（.JAR）に含まれる。この（.JAR）ファイルは１つのアーカイブファイルの中で複数のファイルを一緒に統御する。典型的には、（.JAR）ファイルは、アプリケーション構成要素に関連したＪａｖａクラスファイル及び予備的なリソースを含む。ＥＪＢのために、（.JAR）ファイルは、ＥＪＢ展開記述子１１３、１以上のEJB.classファイル１１５、及びＥＪＢアプリケーション構成要素１１５により要求された任意の予備的なリソースを含む。（.class）ファイルはＥＬＢの機能を実現するのに必要なソフトウェアコードを含む。ＥＪＢ展開記述子１１３は、EJB.classファイル及び関連リソース１１５の属性を記述する。また、Ｊ２ＥＥアプリケーション展開記述子のように、ＥＪＢ展開記述子はＸＭＬファイルとして符号化される。Ｊ２ＥＥアプリケーションは、かなり多数のEJB.JARファイル及び３つのEJB.jarファイル１１０〜１１２を含み、図１はその説明のために示されているがその数の上限や下限を意図するものではない。
【０００９】
また、Ｊ２ＥＥアプリケーション１０７は、Ｊ２ＥＥクライアントアプリケーション１２０〜１２２を含む。Ｊ２ＥＥクライアントアプリケーションは、ユーザのコンピュータ上で機能を実行し、かつＪ２ＥＥアプリケーションにインタフェースを提供する。Ｊ２ＥＥアプリケーションは、多数のＪ２ＥＥクライアントアプリケーションファイルを含むか、あるいはまた全く含まない。また、エンタープライズＪａｖａビーンズのように、これらのアプリケーション構成要素は、（.JAR）ファイルに含まれる。図１の（.JAR）ファイル１２０に示されるように、Ｊ２ＥＥクライアントアプリケーションは、Ｊ２ＥＥクライアントアプリケーション１２５、及びＪ２ＥＥクライアントアプリケーション展開記述子１２３より成る。
【００１０】
Ｊ２ＥＥクライアントアプリケーション１２５は、１以上のＪ２ＥＥ（.class）ファイルより成り、それはＪ２ＥＥクライアントアプリケーションの機能を実行するＪａｖａコードを含む。また、Ｊ２ＥＥクライアントアプリケーション１２５は、Ｊ２ＥＥクライアントアプリケーションにより要求される予備的なリソースを含む。Ｊ２ＥＥクライアントアプリケーション展開記述子１２３は、Ｊ２ＥＥクライアントアプリケーション１２５の属性を詳述する。
【００１１】
また、Ｊ２ＥＥアプリケーション１０７は、１以上のｗｅｂ構成要素を含む。ｗｅｂ構成要素は、ｗｅｂ型クライアントと通信するためにＪ２ＥＥアプリケーションにより用いられるサーバ側のオブジェクトである。これらのオブジェクトは、ｗｅｂユーザの要求を処理し、かつ応答するユーザのために静的又は動的なコンテンツを生成する。例えば、ｗｅｂ構成要素は、Ｊ２ＥＥアプリケーションが各ユーザのためにカスタマイズされたｗｅｂページを表示することを許可する。
【００１２】
ｗｅｂ構成要素は、（.WAR）ファイル１３０〜１３２に含まれる。ファイル１３０でより詳細に示されているように、（.WAR）ファイルはｗｅｂ構成要素１３５及びｗｅｂ展開記述子１３３を含む。ｗｅｂ展開記述子１３３は、ｗｅｂ構成要素を記述する（.XML）ファイルである。ｗｅｂ構成要素１３５は、一緒にパッケージされた１以上のｗｅｂ型構成要素ファイルを構成する。ｗｅｂ構成要素の例は、Ｊａｖａサーバページ（.JSP）ファイル、Ｊａｖａサーブレット．クラスファイル、ハイパテキスト・マーク付け言語（.HTML）ファイル、又はジフ（.GIF）ファイルを含む。
【００１３】
Ｊ２ＥＥアプリケーションを展開することは、数ステップを要求する。第１に、ユーザは、図１に開示されているような非常に多くのアプリケーション構成要素のそれぞれを、（.JAR）ファイル又は（.WAR）ファイルにパッケージしなければならない。各アプリケーション構成要素を個別のファイルにパッケージした後、ユーザはそのアプリケーション構成要素ファイルを１つのＪ２ＥＥアプリケーション（.EAR）ファイルに集めなければならない。完全にパッケージされたＪ２ＥＥアプリケーションファイルが生成されるようになると、ユーザはソフトウェアアプリケーションを用いながら完全な（.EAR）ファイルをＪ２ＥＥアプリケーションサーバにインストールする。このアプリケーションは、展開される予定のＪ２ＥＥアプリケーション、及びアプリケーションを展開するためのアプリケーションサーバを手動で選択することをユーザに要求する。
【００１４】
アプリケーション構成要素を（.JAR）又は（.WAR）ファイル、そして次に.EARファイルにパッケージする処理は、非常に時間を消費する可能性がある。大きなＪ２ＥＥアプリケーションは、アプリケーションを展開する前に（.EAR）ファイルに集められることを必要とする、５００以上の異なるアプリケーション構成要素を有する。ソフトウェア開発者がこれらのアプリケーション構成要素のほんの１つを修正する場合でも、（.EAR）ファイルをパッケージする全体処理が繰り返されなければならない。同様に、パッケージ処理は、小さなアプリケーションに関して無駄が多い可能性がある。Ｊ２ＥＥアプリケーションが１つのみのアプリケーション構成要素のみを含む場合、この１つのアプリケーション構成要素は（.JAR）ファイルにまずパッケージされる。次に、この生じた（.JAR）ファイルは、さらに（.EAR）ファイルにパッケージされる。１つのアプリケーション構成要素に関するこの二重のパッケージは、ソフトウェア開発者の時間を消費し、そしてＪ２ＥＥアプリケーションを展開することに何の利点ももたらさない。
【００１５】
分散コンピュータ環境においてＪ２ＥＥアプリケーションを展開することは、一連の複雑なパッケージ及び分散ステップを伴うので、新たなアプリケーションの展開は、ソフトウェア管理者にとっての困難な仕事となる。このソフトウェア管理者は、アプリケーションが展開されるアプリケーションサーバを手作業で指示し、そして次に、展開処理を手作業で開始するために、個々のソフトウェアアプリケーションを使用しなければならない。この処理は、ソフトウェア管理者が改訂し又は更新されたバージョンのアプリケーションを展開したいときはいつでも繰り返されなければならない。さらに、ソフトウェア管理者は、アプリケーションサーバから旧式のアプリケーションを手作業で非展開しなければならない。
【００１６】
ソフトウェア開発者にとって、複雑にされたアプリケーション展開処理はソフトウェア開発の妨げとなる。ソフトウェア開発において、開発者はアプリケーションソースコードを頻繁に変更しなければならないかもしれない。それぞれを変更した後、開発したアプリケーションをテストするために、開発者は骨の折れる同様の展開処理を繰り返さなければならない。これは、Ｊ２ＥＥアプリケーションを開発することにおける時間と困難性をかなり増加させる。
【００１７】
したがって、１）分散コンピュータ環境の１以上のコンピュータに、新たな又は更新されたアプリケーションを自動的に展開する、２）分散コンピュータ環境の１以上のコンピュータから、不必要又は旧式のアプリケーション又はアプリケーション構成要素を自動的に非展開する、３）分散コンピュータ環境の１以上のコンピュータに、余分なパッケージステップを持つことなくアプリケーション構成要素を自動的に展開する、という分散コンピュータ環境を有することが望ましい。
【００１８】
（発明の概要）
本発明に従い、一般的に、分散コンピュータ環境のアプリケーションを自動的に展開する方法を実行するために、分散コンピュータ環境が適合される。この分散コンピュータ環境は、１つのコンピュータ又は複数のコンピュータを含むことができる。各コンピュータは１以上のアプリケーションサーバを含み、アプリケーション又はアプリケーション構成要素実行する。本方法の実施例は、非展開されたアプリケーションを捜し出すためにアプリケーションディレクトリを自動的にスキャン（scan）する。本方法は、アプリケーションディレクトリ内の非展開されたアプリケーションを認識し、そして分散コンピュータ環境の少なくとも１つのアプリケーションサーバに本アプリケーションを展開する。
【００１９】
実施例において、本方法はアプリケーションディレクトリをスキャンし、アプリケーションディレクトリに格納された全アプリケーションのリストを得る。次に、本実施例は、展開されるべきアプリケーションを選択するために、このアプリケーションリストと、前に展開したアプリケーションのリストとを比較する。
【００２０】
別の実施例において、本方法は、アプリケーションに関連する展開標識（deployment indicator）を調べることによって修正されたアプリケーションを特定する。展開標識は、アプリケーションを含むファイルの属性、あるいはまた、アプリケーションを含むファイルから分離したファイルの属性である。修正されたアプリケーションは、分散コンピュータ環境の少なくとも１つのコンピュータに非展開される。
【００２１】
実施例において、本方法は、アプリケーションディレクトリをスキャンし、アプリケーションディレクトリに格納された全アプリケーションのリストを得る。次に、本実施例は、展開されるべきアプリケーションを選択するために、このアプリケーションリストと、前に展開したアプリケーションのリストとを比較する。アプリケーションディレクトリに存在しない前に展開されたアプリケーションは、分散コンピュータ環境から非展開される。
【００２２】
他の実施例及び本発明の利点は、以下の図、詳細な説明、及びクレームを検討することで理解されることができる。
【００２３】
（詳細な説明）
本発明は、必要とされるときにアプリケーション及びアプリケーション構成要素を自動的に展開かつ非展開することによって、先の分散コンピュータ環境の欠点に取り組む。本発明の実施例は、アプリケーション知識（savvy）ファイルディレクトリ又はディレクトリ集合の使用を介してこれらの目標を達成する。スマートディレクトリとして引用されるこれらアプリケーション知識（savvy）ディレクトリは、分散コンピュータ環境で現在展開されるアプリケーション及びアプリケーション構成要素のコピーのための保管庫（レポジトリー）である。普通のファイルディレクトリのように、スマートディレクトリは、アプリケーション又はアプリケーション構成要素の関連ファイルとしての情報ファイルをデータ記憶装置に構成するために用いられる。加えて、スマートディレクトリは、他のスマートディレクトリの内部にネスト（nest）されることができる。複数のスマートディレクトリが用いられるのだが、本発明の実施例では、分散コンピュータ環境において１つのスマートディレクトリのみを要求する。
【００２４】
実施例において、スマートディレクトリは、分散コンピュータ内の少なくとも１つのコンピュータと連絡をとっている。これは、分散コンピュータ環境のサーバプログラムを使用できるようにして、スマートディレクトリのコンテンツを監視（モニタ）する。スマートディレクトリにおける新たなアプリケーションファイルの検出によって、分散コンピュータ環境は、この新たなファイルに関連したアプリケーション又はアプリケーション構成要素を自動的に展開する。また、スマートディレクトリは、既存ファイルの削除を検出し、かつこの削除したファイルに関連するアプリケーション又はアプリケーション構成要素を自動的に非展開する。
【００２５】
最後に、スマートディレクトリは、既存ファイルがより新しいバージョンのファイルに置き換えられたことを検出し、そして、この新たなバージョンファイルに関連するアプリケーション又はアプリケーション構成要素を自動的に非展開する。これは、明らかな一連のコンフィグレーションステップ（構成ステップ）を実行するよりもむしろ、スマートディレクトリのアプリケーションファイルを単に追加、削除、又は更新することによって、分散されたアプリケーションの展開をユーザが変更できるようにしている。
【００２６】
本発明の例示の実施例は、Ｊ２ＥＥアーキテクチャによって定義された分散コンピュータ環境内で機能するように適合される。この実施例では、スマートディレクトリは、Ｊ２ＥＥ分散コンピュータ内の少なくとも１つのアプリケーションサーバと連絡をとっている。スマートディレクトリは、Ｊ２ＥＥ分散コンピュータ内の任意のアプリケーションサーバ上で展開されたＪ２ＥＥアプリケーションすべてに関連する全ファイルを含む。この実施例は、スマートディレクトリ内の対応するアプリケーションファイルが追加、移動、又は更新されるとき、Ｊ２ＥＥアプリケーションを自動的に展開、非展開及び再展開する。
【００２７】
本発明における本実施例のさらなるバリエーションでは、スマートディレクトリは、明らかなパッケージステップを有することなく、アプリケーションサーバにＪ２ＥＥアプリケーション及びアプリケーション構成要素を展開できるようにする。J2EE.EARファイルとしてパッケージされたＪ２ＥＥアプリケーションを展開するよりも、スマートディレクトリは、分離したＪ２ＥＥアプリケーションをその構成ファイルに展開することができる。これらのファイルは、Ｊ２ＥＥクライアントアプリケーション（.JAR）ファイル、（EJB.JAR）ファイル、及びｗｅｂコンポーネント（.WAR）を含む。パッケージされていないファイルを展開するこの能力は、Ｊ２ＥＥアプリケーションコンポーネントファイルと同じように拡張する。一緒にまとめられた多くのファイルには、（.JAR）ファイル及び（.WAR）ファイル自体を含んでいるので、スマートディレクトリは、（.class）ファイル、（GIF）ファイル、（.XML）ファイル、（.HTML）ファイル、（.JSP）ファイル、又はアプリケーション構成要素に関連する他のタイプのファイルのような構成ファイルに、個々のアプリケーション構成要素を展開することができる。
【００２８】
スマートディレクトリは、パッケージされていないＪ２ＥＥアプリケーション及びアプリケーション構成要素を、それらのパッケージされたものと同様な方法で展開することをユーザに許可している。ユーザは、スマートディレクトリのパッケージされていないファイルを単純に追加、移動、又は修正する。次に、スマートディレクトリは、これに応答してアプリケーション構成要素を展開、非展開、又は再展開する。ある実施例では、アプリケーション又はアプリケーション構成要素それぞれの構成ファイルすべてが個々のディレクトリ又はサブディレクトリ内に含まれる。これは、ユーザがアプリケーション又はアプリケーション構成要素のそれぞれに関連するファイルの集まりを特定することを容易にさせる。また、それは、他のアプリケーション又はアプリケーション構成要素を妨げることなく、あるアプリケーション又はアプリケーション構成要素に関連するファイルを容易に扱うことをユーザに許可する。また、個々のディレクトリ又はサブディレクトリは、スマートディレクトリである。ある実施例では、スマートディレクトリに作られたサブディレクトリがスマートディレクトリと同様に自動的に扱われる。
【００２９】
図２は、本発明の実施例に組み入れられる分散コンピュータ環境を示している。この分散コンピュータ環境２００は、複数のコンピュータ２１０，２２０，２３０，２４０を含む。ここでの説明のためにこの４つのコンピュータが示されている。分散コンピュータ環境は、１つのコンピュータから非常に多くのコンピュータまでを含む。そのコンピュータのそれぞれは、分散コンピュータ環境で機能するのに必要な下線のハードウェア及びソフトウェアを含む。これは１以上の演算処理装置、メモリ装置、データ記憶装置、通信装置、及び任意の関連ソフトウェアを含む。分散コンピュータ環境におけるこれらハードウェア及びソフトウェアの使用は、本技術分野では公知である。図２には示されていないが、分散コンピュータ環境２００は、クライアントコンピュータ、データベース、及び他のエンタープライズシステムや、モニタリングシステム、並びにデータ記憶システムのような外部システムと情報交換する通信接続（communication connection）を含む。
【００３０】
分散コンピュータ環境２００のすべてのコンピュータは、通信線２５０経由で互いに通信している。通信線２５０は、ローカルエリアネットワーク又はワイドエリアネットワークのようなコンピュータネットワークであってもよく、そして情報を伝達することができる任意のタイプの通信技術を用いている。図１に示される通信線２５０を含む通信接続（communication connection）の数及び配置は説明として用いられており、そして、通信線２５０はコンピュータ接続の分野で知られる適当な方法で構成される。
【００３１】
コンピュータ２１０は、サーバプログラム２１２及び２１４を含む。これらの各サーバプログラムは、１以上の分散アプリケーション又はアプリケーション構成要素を独立に実行することができる。サーバプログラム２１２及び２１４は、説明のためとして図２に示されており、そして、コンピュータ２１０は１つのサーバプログラムから非常に多数のサーバプログラムに至るまでを含む。同様に、コンピュータ２３０及び２４０は、サーバプログラム２３２，２３４，２４２，２４４をそれぞれ含む。ある実施例では、各サーバプログラムが、１以上のＪ２ＥＥアプリケーション又はアプリケーション構成要素を実行することができるＪ２ＥＥアプリケーションサーバである。
【００３２】
コンピュータ２２０は、アドミンサーバプログラム２２５を含む。このアドミンサーバ２２５は、個々のアプリケーション又はアプリケーション構成要素の展開、非展開及び再展開を管理する。ある実施例では、１つのアドミンサーバ２２５が、完全な分散コンピュータ環境２００のためにこの機能を実行する。また、コンピュータ２２０は、図２に示されていない他のプログラムも含むことができる。ある実施例では、コンピュータ２２０は、前述したような１以上のサーバプログラムと同様なアドミンサーバ２２２５を含む。
【００３３】
また、コンピュータ２２０は、アプリケーション記憶装置２２３と連絡を取っている。アプリケーション記憶装置２２３は、アプリケーション及びアプリケーション構成要素に関連したファイルを格納、かつ再生することができる記憶装置である。アドミンサーバ２２５は、アプリケーション及びアプリケーション構成要素を展開、非展開、又は再展開するために、アプリケーション記憶装置２２３のコンテンツにアクセスすることができる。また、アプリケーション記憶装置２２３はコンピュータ２２０、或いはまた分散コンピュータ環境の別のコンピュータを通してユーザにアクセスすることができる。ある実施例では、アプリケーション記憶装置２２３は、コンピュータ２２０と連絡する汎用の記憶装置の一部である。
【００３４】
ある実施例において、アプリケーション及びアプリケーション構成要素に関連するファイルが、アプリケーション記憶装置２２３に位置づけられた１以上のスマートディレクトリに格納される。このスマートディレクトリは、汎用の記憶装置と結合して用いられるディレクトリと同様に、１以上の標準ファイルディレクトリとして実行される。スマートディレクトリは、分散コンピュータ環境で展開されたアプリケーション及びアプリケーション構成要素に関連するすべてのファイルのコピーを含む。スマートディレクトリのコンテンツは、アプリケーション及びアプリケーション構成要素の展開、非展開、又は再展開を統御するために、アドミンサーバ２２５によって監視（モニタリング）される。
【００３５】
図３は、アドミンサーバ２２５によって用いられるモニタリング処理３００の実施例を示している。この実施例では、アドミンサーバ２２５は、周期的な間隔でスマートディレクトリのコンテンツを検査する。この検査は、ステップ３０５で、すべてのスマートディレクトリのリストをまず再生することにより開始する。ある実施例では、このリストは、スマートディレクトリとして指定されたファイルディレクトリに関するユーザ提供リストより生成される。或いはまた、１以上のスマートディレクトリが、アドミンサーバ２２５の初期構成（コンフィグレーション）により前もって決定される。さらなる実施例では、スマートディレクトリそのものとして、スマートディレクトリ内のサブディレクトリを自動的に指定することができる。この実施例において、アドミンサーバ２２５は、すべてのサブディレクトリを捜しだすためにスマートディレクトリのそれぞれを繰り返しスキャン（scan）し、その結果、ステップ３０５でディレクトリリストは、スマートディレクトリ及びそのサブディレクトリすべてを含むだろう。
【００３６】
ステップ３１０で、アドミンサーバ２２５は、次のディレクトリをディレクトリリストから選択する。ステップ３１０は、ディレクトリリスト上の各ディレクトリのために、アドミンサーバ２２５によって反復される処理ループの最初のステップである。これがこのループでアドミンサーバ２２５の最初の繰り返しである場合、アドミンサーバ２２５は、ディレクトリリストから最初のディレクトリを選択するだろう。その他の場合、アドミンサーバ２２５は、次のディレクトリを前記リストから選択するだろう。ディレクトリリスト上のディレクトリは、任意の順序で提供されるように準備され、ディレクトリリスト上のすべてのディレクトリがアドミンサーバ２２５によって結局選択かつ処理される。ある実施例では、ディレクトリリスト上のディレクトリが、動作速度、メモリ使用、又はアプリケーション記憶装置２２３へのアクセスを最適化するように準備されることができる。
【００３７】
アドミンサーバ２２５は、ステップ３１５で、選択されたディレクトリ内に配置されたすべてのファイルのリストを復元する。このファイルリストは、完全なアプリケーション又はアプリケーション構成要素に関連したファイルを含む。ある実施例では、そのファイルは、Ｊ２ＥＥアプリケーションの各アプリケーション構成要素のために、パッケージされた（.EAR）ファイル又は個々のファイルに分離されたものの何れかとして、完全なＪ２ＥＥアプリケーションを含むことができる。アプリケーション構成要素ファイルは、（.JAR）ファイル又は（.WAR）ファイルとしてパッケージされたり、又はJava.classファイル、xml展開記述子、（.HTML）ファイル、（.GIF）画像ファイル（.JSP）Javaサーブ（serve）ページファイル、又は分散コンピュータ環境におけるアプリケーション構成要素の展開に関連する他のタイプのファイルのような、個々のファイルにさらに分離されたりする。パッケージされていないアプリケーション又はアプリケーション構成要素ファイルの場合、アドミンサーバ２２５の実施例はサブディレクトリのパッケージされていないファイルのすべてが、普通のアプリケーション又はアプリケーション構成要素に関連しているとみなすだろう。
【００３８】
ステップ３２０で、アドミンサーバ２２５は、次のファイルをファイルリストから選択する。ステップ３２０は、ファイルリスト上の各ファイルのためにアドミンサーバ２２５により繰り返される処理ループの最初のステップである。これがこのループでアドミンサーバ２２５の最初の繰り返しである場合、アドミンサーバ２２５は、ファイルリストから最初のファイルを選択するだろう。その他の場合、アドミンサーバ２２５は、次のファイルを前記ファイルリストから選択するだろう。ファイルリスト上のファイルは、任意の順序で提供されるように準備され、ファイルリスト上のすべてのファイルがアドミンサーバ２２５によって結局選択かつ処理される。ある実施例では、ファイルリスト上のファイルが、動作速度、メモリ使用、又はアプリケーション記憶装置２２３へのアクセスを最適化するように準備されることができる。
【００３９】
ステップ３３０で、アドミンサーバ２２５は、選択されたファイルを内部保持された管理用リストと比較する。この管理用リストは、分散コンピュータ環境２００で現在展開されたアプリケーション及びアプリケーション構成要素に関連する全ファイルのリストである。ある実施例では、この管理用リストが、アプリケーション及びアプリケーション構成要素の展開中に、アドミンサーバ２２５の前の繰り返しで構成される。これの詳細については後述する。管理用リストにファイルがまったく無い場合、分散コンピュータ環境２００で現在展開されたアプリケーション及びアプリケーション構成要素は何もない。
【００４０】
アドミンサーバ２２５は、管理用リストを調べ、選択されたファイルが管理用リストに既にあるか否かを判断する。選択されたファイルが管理用リストに存在しないことは、選択されたファイルに関連するアプリケーション又はアプリケーション構成要素が展開されていないことを示している。次に、選択されたファイルに関連するアプリケーション又はアプリケーション構成要素の展開が、ステップ３３３によって実行される。この展開処理の詳細は、以下で議論される。さらに、ステップ３３３は、成功した展開の完了に従って管理用リストにこの選択されたファイルを追加する。この方法で、管理用リストが生成されかつ更新される。
【００４１】
ステップ３３０で、選択されたファイルが管理用リストに既に位置付けられている場合、次にソ３３５で、アドミンサーバ２２５は、選択されたファイルが前に展開されたバージョンより修正されたアプリケーション又はアプリケーション構成要素を含んでいるかどうかを判断する。これは、バージョン番号、ファイルチェックサム（file checksum）、又は他の識別方法のようなソフトウェア又はソフトウェア構成要素のバージョンを特定するための普通に用いられる任意の方法を通して判断されることができる。この特定のために必要な情報は、管理用リスト上に格納されることができる。選択されたファイルが管理用リスト上のその写し（counterpart）から修正されている場合、選択されたファイルに関連するアプリケーション又はアプリケーション構成要素がステップ３３８で展開される。これの詳細は、以下で議論される。管理用リストからの情報が修正されたファイルを特定するために用いられる場合、この情報は、成功した再展開の完了に従って更新される。この方法で、管理用リストは、展開されたアプリケーション及びアプリケーション構成要素の最新バージョンで更新される。
【００４２】
ある実施例では、管理用リストは、前に展開されたアプリケーション及びアプリケーション構成要素に関連するファイルの名前のみならず、各ファイルの日付も同様に含む。多くの共有ファイルシステムにおいて、全ファイルは、ファイルが更新されるときは常に修正される対応した日付を有している。この実施例では、アドミンサーバ２２５が、選択されたファイルの日付と、管理用リストに格納された対応したファイルの日付とを比較する。アプリケーション又はアプリケーション構成要素の展開及び再展開が要求されるので、管理用リストのその写し（counterpart）より最新の選択ファイルの日付は、選択されたファイルに関連するアプリケーション又はアプリケーション構成要素が更新されたことを示す。再展開はステップ３３８で実行される。
【００４３】
必要な場合には選択されたファイルに関連するアプリケーション又はアプリケーション構成要素の展開又は再展開に従って、ステップ３４０で、アドミンサーバ２２５は、ファイルリストに残っているまだ選択されていないファイルがあるかどうかをみるためにチェックする。ファイルリストから非選択の各ファイルのために、ステップ３４０を介したステップ３２０が繰り返される。ファイルリストから全ファイルが選択された場合、ステップ３４５で、アドミンサーバ２２５は管理用リストを調べる。アドミンサーバ２２５は、選択されたディレクトリのためにその写し（counterpart）がファイルリストから消えていく管理用リストのファイルを捜しだす。これは、アプリケーション又はアプリケーション構成要素に関連するファイルがスマートディレクトリから削除されたことを示す。その結果、対応するアプリケーション又はアプリケーション構成要素が、分散コンピュータ環境２００から非展開されるべきである。管理用リスト上のファイルに関連するアプリケーション又はアプリケーション構成要素すべての非展開、及びファイルリストからの不存在は、ステップ２４８で実行され、これの詳細は以下で議論される。アプリケーション又はアプリケーション構成要素の成功した非展開に従い、選択されたファイルが管理用リストから除去される。
【００４４】
アプリケーション又はアプリケーション構成要素の選択的な非展開に従い、アドミンサーバ２２５は、ステップ３５０で、ディレクトリリスト上の前に選択されていない任意のディレクトリがあるかどうかをみるためにチェックする。ディレクトリリスト上の非選択の各ディレクトリのために、ステップ３５０を介したステップ３１０が繰り返される。選択するためのディレクトリがもはや残っていない場合、アドミンサーバ２２５は、モニタリング処理を再び開始する前に、ステップ３５５である時間間隔待つ。ある実施例では、この時間間隔は３秒である。
【００４５】
展開３３３及び再展開３３８のステップは、分散コンピュータ環境２００の１以上のサーバプログラムで動作するアプリケーション又はアプリケーション構成要素を使用可能にする。これらの処理の詳細な説明は、分散コンピュータ環境のアーキテクチャに依存して変化するだろうが、一般に、サーバプログラム上の展開及び再展開は、サーバプログラムに関連したメモリに格納されるべき、及び分散コンピュータ環境で動作するために構成されるべきアプリケーション又はアプリケーション構成要素を要求する。非展開ステップ３４８では、一般に展開処理の逆を行う。本発明のこの実施例は、非展開処理そのものよりも、展開又は非展開のためにアプリケーション又はアプリケーション構成要素の自動的選択に向かって方向付けられるので、この処理の詳細は、分散コンピュータ環境のタイプにかかわらず、この実施例の動作によって大きく変わることはない。
【００４６】
Ｊ２ＥＥ分散コンピュータ環境に適合された本発明のある実施例において、展開は、エンタープライズＪａｖａビーンズ又はＪａｖａサーバページ、セキュリティの構成、トランザクション、動作環境、及びアプリケーション構成要素とＪＮＤＩネーミングサービスをもつリソースとの登録の付加的な編集を含むことができる。Ｊａｖａネーミング及びディレクトリインタフェース（Java naming and directory interface：ＪＮＤＩ）は、Ｊａｖａオブジェクトを捜し出すための拡張標準Ｊａｖａ言語である。Ｊ２ＥＥ分散環境の実施例では、アプリケーションサーバは、ＨＴＴＰ要求経由で展開される予定のアプリケーション又はアプリケーション構成要素のコピーを要求する。この要求は、Ｊａｖａサーブレットによって受信され、それは特定のアプリケーション又はアプリケーション構成要素に応答する。
【００４７】
Ｊ２ＥＥ分散コンピュータ環境に適合された本発明の別の実施例において、アドミンサーバ２２５と連絡する構成（configuration）ファイルは、完全な分散コンピュータ環境２００に関する情報を格納する。これは、コンピュータ、アプリケーションサーバ、アプリケーション、アプリケーション構成要素、及び分散コンピュータ環境２００の他の管理可能な任意のエンティティそれぞれに関する情報を含む。また、この構成ファイルは、分散コンピュータ環境２００内の異なるアプリケーションサーバに対するアプリケーション及びアプリケーション構成要素の情報を含む。分散コンピュータ環境２００内のアプリケーション及びアプリケーション構成要素の分配は、各アプリケーションサーバのリソース及び能力によって決定される。アプリケーション及びアプリケーション構成要素は、構成情報に基づく異なるアプリケーションサーバに展開される。
【００４８】
構成ファイルのある実施例は、ＸＭＬデータファイルである。このファイルは、一連のＸＭＬデータタグとして分散コンピュータ環境の構成情報を格納する。ある実施例では、この構成情報は、ユーザによって手動で生成される。この構成ファイルは、分散コンピュータ環境の各アプリケーションのためのＸＭＬデータタグを含む。各アプリケーションＸＭＬデータタグは、アプリケーションに関連する各アプリケーション構成要素に対応した一連のＸＭＬタグを含む。これらのアプリケーション構成要素のＸＭＬタグは、個々のアプリケーション構成要素が展開されるべき場所を指定する。各アプリケーション構成要素のＸＭＬタグは、特定のアプリケーションサーバ、アプリケーションサーバの集まり、又は分散コンピュータ環境のすべてのアプリケーションサーバを指定する。
【００４９】
ＸＭＬ構成ファイルの使用のある実施例として、以下の例示のアプリケーションＸＭＬタグがより詳細に議論されるだろう。
【００５０】
2005505034.tif 000003
【００５１】
例示アプリケーションのアプリケーションＸＭＬタグでは、これは”Ｆｏｏ”と称される。アプリケーションＸＭＬデータは、タグ＜Application＞で始まり、タグ＜/Application＞で終わる。＜Application＞タグは、さらに’Name’属性を含み、これは”Ｆｏｏ”に設定される。他の属性は、’URI’のようなタグに含まれ、これは”Ｆｏｏ”アプリケーションの配置を指定する。２つの＜Application＞タグ間は、アプリケーション構成要素のＸＭＬタグである。第１のアプリケーション構成要素タグは、＜EJBComponent＞である。このＸＭＬタグは、’bar’と称される’Ｆｏｏ’アプリケーションに関連したＥＪＢアプリケーション構成要素を指定する。アプリケーション構成要素ＸＭＬタグ属性に従い、’bar’アプリケーション構成要素は、’bar.jar’ファイルに含まれ、そしてアプリケーションサーバ’MyServer’上で展開されるべきである。同様に、第２のアプリケーション構成要素ＸＭＬタグは、ファイル’baz.jar’内に含まれるｗｅｂ構成要素’baz’を指定する。このアプリケーション構成要素のため、’MyDomain’への’Target’属性の設定は、この構成要素のための展開目標が完全な分散コンピュータ環境であることを指定する。
【００５２】
アドミンサーバ２２５の初期の活性で、構成ファイルに記述されたエンティティのそれぞれはアドミンサーバ２２５によってMBeanに変換される。MBeanは、Ｊａｖａ管理拡張（Java Management Extension：ＪＭＸ）標準に従って作られたエンタープライズＪａｖａビーンズである。Ｊａｖａ管理拡張標準の詳細は、http://java.sun.com/aboutJava/communityprocess/final/jsr003/index.htmlにあり、そして引用によってここに組み入れられている。この実施例において、アプリケーション及びアプリケーション構成要素の展開、再展開、及び非展開が、MBeanの使用を通して統御される。
【００５３】
アプリケーション又はアプリケーション構成要素の展開の間、アドミンサーバ２２５は、現在選択されたファイルを表わすMBeanを検索する。ある実施例では、この検索はネーミングサービスに従って作られたＪＮＤＩを通して処理される。アドミンサーバ２２５が、アプリケーション及びアプリケーション構成要素に関連したファイルのためにMBeanを見つける場合、アプリケーション又はアプリケーション構成要素は、MBeanによって特定されたアプリケーションサーバ上に展開される。MBeanがまったく見つからない場合は、新たなMBeanが生成され、そしてアプリケーション又はアプリケーション構成要素が、構成ファイルによって特定されたアプリケーションサーバ上に展開される。
【００５４】
図３に示される実施例は、（.JAR）ファイル、（.EAR）ファイル、又は（.WAR）ファイルのようなパッケージされたファイル、又は（.class）、（.XML）、（.HTML）、又は（.JSP）ファイルのようなパッケージされていないファイルを用いている。パッケージされていないファイルを展開又は再展開することにおいて、アドミンサーバ２２５は、不完全なアプリケーション又はアプリケーション構成要素を不注意に展開してはならない。アプリケーション又はアプリケーション構成要素を生成又は修正することにおいて、必要な変化をもたらすために、ソフトウェア開発者はいくつかの異なるソースファイルをしばしば改変する。ファイルの１つで要求された改変が完了されるとき、このファイルのデータはすぐに更新され、それは、アプリケーション又はアプリケーション構成要素が、展開のために用意されたこのファイルに関連していたことをアドミンサーバ２２５に知らせるだろう。
【００５５】
しかしながら、アプリケーション又はアプリケーション構成要素に関連した他のファイルに対する要求された改変は、まだ完了されていない。この時点でこれらのファイルに関連したアプリケーション又はアプリケーション構成要素を展開することは、不完全な展開を結果として生じさせるかもしれない。少なくとも、この不完全な展開はシステムリソースを消費する。また、システムの誤動作及びデータ破壊のようなより重要な帰結が、不完全な展開より生じる可能性がある。
【００５６】
不完全なアプリケーション又はアプリケーション構成要素の不注意な展開のために、本発明の別の実施例は、パッケージされたファイルからパッケージされていない異なるファイルの展開を統御する。全てのソースファイルの生成又は修正が完了した後に、パッケージステップが発生するので、不完全な展開はパッケージされたファイルでは不可能である。したがって、この実施例において、図３に関して議論された処理に従い、パッケージされたファイルに関連するアプリケーション及びアプリケーション構成要素が展開される。
【００５７】
パッケージされていないファイルにより、ユーザが展開オブジェクトを設定するまで、展開及び再展開処理が遅延される。展開オブジェクトは、新たな又は修正されたファイルに関連するアプリケーション及びアプリケーション構成要素すべてが展開又は再展開されるよう準備されていることをアドミンサーバ２２５へ知らせる。ある実施例では、この展開オブジェクトは、個々のファイルに存在することができる。ある実施例では、ファイルは、アドミンサーバ２２５によって知られたあらかじめ決められた名前を有している。アドミンサーバ２２５は、展開オブジェクトの属性を監視（モニタリング）する。この属性は、ファイル又はそのコンテンツの性質である。展開オブジェクトの属性をモニタリングすることによって、ユーザはアドミンサーバ２２５に対して、アプリケーション及びアプリケーション構成要素に関連したファイルの生成又は修正が完了したこと、及びアプリケーション及びアプリケーション構成要素が展開のために準備されていることを知らせる。
【００５８】
ある実施例では、この展開オブジェクトは、エンプティ（empty）又はヌル（null）ファイルであり、そしてモニタリングされた属性はこのヌルファイルに関連したデータである。ユーザは、このヌルファイル上のデータを更新することによって、アプリケーション及びアプリケーション構成要素が展開のために準備されていることを知らせる。多くのオペレーティングシステムにおいて、これは、’touch’コマンドによって行われることができる。展開オブジェクトを更新することで、アドミンサーバ２２５は新たな、又は新たに修正されたパッケージされていないファイルに関連するアプリケーション及びアプリケーション構成要素を展開するだろう。
【００５９】
パッケージされていないファイルのために、図３に関して議論された処理が、次のように修正される。アドミンサーバ２２５がステップ３３０で展開されるべき選択されたファイルを決定する場合、そのアドミンサーバ２２５は、選択されたファイルがパッケージされたファイルかパッケージされていないファイルかをまず判断する。ある実施例は、この判断を行うために選択されたファイルの拡張子を調べる。Ｊ２ＥＥアプリケーションのために適合された実施例では、パッケージされたファイルは、（.EAR）、（.JAR）、及び（.WAR）のようなファイル拡張子をもつ。他のファイル拡張子はパッケージされたファイルと同様に用いられる。
【００６０】
選択されたファイルがパッケージされたファイルでない場合、アドミンサーバ２２５は、展開オブジェクトを調べる。展開オブジェクトがユーザによって更新されていなかった場合、展開処理は無視（bypass）され、選択されたファイルに関連するアプリケーション及びアプリケーション構成要素が展開されない。反対に、展開オブジェクトが更新されていた場合、選択されたファイルに関連するアプリケーション及びアプリケーション構成要素はアドミンサーバ２２５により展開される。
【００６１】
パッケージされていないアプリケーション及びアプリケーション構成要素に関する展開、非展開、及び再展開が、パッケージされた写し（counterpart）と同様の方法で起きる。ある実施例では、パッケージされていないアプリケーション又はアプリケーション構成要素が展開されるために準備されていることをアドミンサーバ２２５が判断すると、アドミンサーバ２２５は、プリケーション又はアプリケーション構成要素に関連するファイルすべてを、サーバプログラムへ分配する前のパッケージされたファイルへ自動的にパッケージすることができる。この自動的なパッケージングは、ユーザが介入することなく実行され、そしてサーバプログラムへの分配を容易に行う。
【００６２】
本発明の好ましい実施例に関する先の記述は、図及び説明のために提供されている。それは、本発明が開示された厳密な形式に徹底させたり制限されたりすることを意図していない。明らかに、本技術分野の当業者であれば多くの修正及びバリエーションが適用可能であろう。本発明の原理及びその実際の応用を最良に説明するために実施例が選択されかつ記載されていた。したがって、本技術分野の当業者であれば、様々な実施例及び考慮された特定の使用に適合させるための様々な修正によって本発明を理解することが可能であろう。本発明の範囲は、特許請求の範囲及びその均等物により定義されることが意図される。
【００６３】
本発明は、以下の図面を参照して説明されるだろう。
本発明は、図面及び詳細な説明を参照しながらよく理解されるだろう。図において同じ符号は同じ構成要素を示す。
【図面の簡単な説明】
【００６４】
【図１】完全にパッケージされたＪ２ＥＥアプリケーションの構造を示す図である。
【図２】本発明の実施例を用いた分散コンピュータ環境を示す図である。
【図３】本発明に従う方法の実施例を示す図である。
【図３】
2005505034.tif 000004
【国際公開パンフレット】
2005505034.tif 000005
2005505034.tif 000006
2005505034.tif 000007
2005505034.tif 000008
2005505034.tif 000009
2005505034.tif 000010
2005505034.tif 000011
2005505034.tif 000012
2005505034.tif 000013
2005505034.tif 000014
2005505034.tif 000015
2005505034.tif 000016
2005505034.tif 000017
2005505034.tif 000018
2005505034.tif 000019
2005505034.tif 000020
2005505034.tif 000021
2005505034.tif 000022
2005505034.tif 000023
2005505034.tif 000024
2005505034.tif 000025
2005505034.tif 000026
2005505034.tif 000027
2005505034.tif 000028
2005505034.tif 000029
2005505034.tif 000030
2005505034.tif 000031
2005505034.tif 000032
2005505034.tif 000033
2005505034.tif 000034
2005505034.tif 000035
2005505034.tif 000036
2005505034.tif 000037
2005505034.tif 000038
2005505034.tif 000039
2005505034.tif 000040
2005505034.tif 000041
2005505034.tif 000042
2005505034.tif 000043
2005505034.tif 000044
2005505034.tif 000045
2005505034.tif 000046
2005505034.tif 000047
2005505034.tif 000048
2005505034.tif 000049
2005505034.tif 000050
【国際調査報告】
2005505034.tif 000051