(57)【要約】本開示は、クラスタベースのＪａｖａアプリケーションシステムのコードをロードする装置および方法の実施形態を開示する。本開示によって与えられるロード手法は、クラスタ内の各サーバーに最新コードを配信（ｐｕｂｌｉｓｈ）する必要がなく、クラスタの各サーバー内のＪａｖａアプリケーションを再起動する必要もない。このロード手法で必要とされるのは、ＳＶＮサーバーなどのコード格納サーバー内のコードを更新することだけである。クラスタ内の各サーバーは最新コードを自動的にロードし、これによりＪａｖａクラスタシステムの有用性が向上する。
2013511766.tif 000002
【特許請求の範囲】
【請求項１】
Ｊａｖａクラスタのサーバーに配置された、クラスタベースのＪａｖａアプリケーションシステムのコードをロードするための装置であって、
ロードすべき最初のＪａｖａクラスのクラス名を含む、クラスをロードするための要求をサーバーから受け取る受信ユニットと、
前記クラス名に従ってクラス登録情報から前記最初のＪａｖａクラスのエンティティの格納アドレスを発見し、前記格納アドレスに従って前記最初のＪａｖａクラスの最新バージョン番号を取得する発見ユニットと、
前記最初のＪａｖａクラスの前記最新バージョン番号が以前にロードされてローカルに格納されている前記最初のＪａｖａクラスのバージョン番号と同一であるかどうかを判定する判定ユニットと、
前記クラスをロードするために前記格納アドレスから前記最初のＪａｖａクラスの前記最新バージョンを取得し、前記最初のＪａｖａクラスの前記最新バージョンが以前にロードされてローカルに格納されている前記最初のＪａｖａクラスの前記バージョン番号と異なる場合、クラスバージョンレコード内の前記最初のＪａｖａクラスの前記最新バージョン番号を更新する処理ユニットであって、前記最初のＪａｖａクラスの前記最新バージョンが以前にロードされてローカルに格納されている前記最初のＪａｖａクラスの前記バージョン番号と異ならない場合、前記最初のＪａｖａクラスを直接ロードする、処理ユニットと、を備える、装置。
【請求項２】
前記発見ユニットは、前記クラス登録情報の内容をクラスアドレステーブルに記録する、請求項１に記載の装置。
【請求項３】
前記クラスアドレステーブルの主キーが前記最初のＪａｖａクラスの前記クラス名を記録し、前記クラスアドレステーブルの前記主キーの値が前記最初のＪａｖａクラスの前記格納アドレスを記録する、請求項２に記載の装置。
【請求項４】
前記発見ユニットは、前記最初のＪａｖａクラスのバージョン情報をクラスバージョンテーブルに記録する、請求項１に記載の装置。
【請求項５】
前記クラスバージョンテーブルの主キーが前記最初のＪａｖａクラスの前記クラス名を記録し、前記クラスバージョンテーブルの前記主キーの値が前記以前にロードされたＪａｖａクラスの前記バージョン番号を記録する、請求項４に記載の装置。
【請求項６】
クラス登録情報を維持するために使用されるクラス登録のためのシステムであって、
Ｊａｖａクラスデータベースを前記Ｊａｖａクラスデータベースの格納アドレスに従って取得する取得ユニットと、
前記Ｊａｖａクラスデータベースを横断検索し、クラス登録情報に記録されておらず、Ｊａｖａクラスデータベースには含まれる新しいクラスを前記クラス登録情報に挿入する追加ユニットと、
前記Ｊａｖａクラスデータベースを横断検索し、前記Ｊａｖａクラスデータベースに記録されている各Ｊａｖａクラスの前記それぞれの格納アドレスに従って、前記クラス登録情報内の対応するＪａｖａクラスの前記格納アドレスを更新する更新ユニットと、を備える、システム。
【請求項７】
前記クラス登録情報は、クラス名、クラスデータベース名、および前記Ｊａｖａクラスデータベースの前記格納アドレスを含む、請求項６に記載のシステム。
【請求項８】
クラスタベースのＪａｖａアプリケーションシステムのコードをロードするためのＪａｖａクラスタのサーバーで使用される方法であって、
ロードすべき最初のＪａｖａクラスのクラス名を含む、クラスをロードする要求をサーバーから受け取ることと、
前記クラス名に従ってクラス登録情報から前記最初のＪａｖａクラスの格納アドレスを発見することと、
前記格納アドレスに従って前記最初のＪａｖａクラスの最新バージョン番号を取得することと、
前記最初のＪａｖａクラスの最新バージョン番号が以前にロードされてローカルに格納されている前記最初のＪａｖａクラスのバージョン番号と同一であるかどうかを判定することと、
前記最初のＪａｖａクラスの前記最新バージョンが以前にロードされてローカルに格納されている前記最初のＪａｖａクラスの前記バージョン番号と異なる場合に、前記最初のＪａｖａクラスの前記最新バージョンをロードし、かつクラスバージョンレコード内の前記最初のＪａｖａクラスの前記バージョン番号を更新することと、
前記最初のＪａｖａクラスの前記最新バージョンが以前にロードされてローカルに格納されている前記最初のＪａｖａクラスの前記バージョン番号と異なっていない場合に、前記最初のＪａｖａクラスを直接ロードすることと、を含む、方法。
【請求項９】
前記クラス登録情報の内容がクラスアドレステーブルに記録される、請求項８に記載の方法。
【請求項１０】
前記クラスアドレステーブルに記録された前記クラス登録情報の内容が、
前記最初のＪａｖａクラスの前記クラス名を記録する前記クラスアドレステーブルの主キーと、
前記最初のＪａｖａクラスの前記格納アドレスを記録する前記クラスアドレステーブルの前記主キーの値と、を含む、請求項９に記載の方法。
【請求項１１】
前記クラス登録情報の内容がクラスバージョンテーブルに記録された、請求項８に記載の方法。
【請求項１２】
前記クラスバージョンテーブルに記録された前記最初のＪａｖａクラスのバージョン情報は、
前記最初のＪａｖａクラスの前記クラス名を記録する前記クラスバージョンテーブルの主キーと、
前記以前にロードされたＪａｖａクラスの前記バージョン番号を記録する前記クラスバージョンテーブルの前記主キーの値と、を含む、請求項１１に記載の方法。
【請求項１３】
クラス登録の方法であって、
Ｊａｖａクラスデータベースを前記Ｊａｖａクラスデータベースの格納アドレスに従って取得することと、
クラス登録情報に記録されておらず、前記Ｊａｖａクラスデータベースには含まれる新しいクラスを前記クラス登録情報に挿入することと、
前記Ｊａｖａクラスデータベースに記録されたＪａｖａクラスの前記格納アドレスに従って、前記クラス登録情報内の対応するＪａｖａクラスの前記格納アドレスを更新することと、を含む、方法。
【請求項１４】
前記クラス登録情報は、クラス名、クラスデータベース名、および前記Ｊａｖａクラスデータベースの前記格納アドレスを含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００９年１１月２３日に出願された中国特許出願第２００９１０２２１９８０．７号「クラスタベースのＪＡＶＡアプリケーションシステムのコードをロードおよび更新する装置および方法」からの優先権を主張し、また、その全体を参照により本明細書に組み込む。
【０００２】
本開示はネットワークデータ処理分野に関し、より具体的には検索方法およびシステムに関する。
【背景技術】
【０００３】
一般にクラスタベースのシステムは複数の同種または異種コンピュータによって接続され、協調して特定のタスクを完了する。クラスタベースのＪａｖａアプリケーションシステムは、クラスタ配備に基づくＪａｖａアプリケーションシステムである。
【０００４】
Ｊａｖａ  ＷｅｂアプリケーションシステムまたはＪａｖａタスククラスタシステムなどの一般的なクラスタベースのＪａｖａアプリケーションシステムでは、必要なクラスデータベースをクライアント側で導入および配備することがシステム運用のために必要とされる。コードまたはクラスデータベースの更新が必要になると、その更新されるコードをクラスタ内の全サーバーに配信（ｐｕｂｌｉｓｈ）するとともに、サーバー内のＪａｖａアプリケーションを再起動する必要がある。
【０００５】
現在のクラスタベースのＪａｖａアプリケーションシステムは、典型的には、コードの更新またはリロードの対象であるか否かにかかわらず、クラスタ内の全サーバーに対する更新コードのリロードまたは更新を必要とする。その結果、各サーバーでのＪａｖａアプリケーションの再起動が必要になる。仕事量が多ければ、このプロセスに多大な時間が消費されて効率が低下することになりがちである。
【発明の概要】
【０００６】
本開示の目的は、クラスタベースのＪａｖａアプリケーションシステムのコードをロードおよび更新する装置および方法を提供し、コードの効率的なロードおよび更新を実現することである。
【０００７】
上記の目的を達成するため、本開示は以下に要約する手法を提供する。
【０００８】
１つの態様において、クラスタベースのＪａｖａアプリケーションシステムのコードをロードするための装置がＪａｖａクラスタのサーバーに配置される。この装置は、受信ユニット、発見ユニット、判定ユニット、および処理ユニットを備えてもよい。
【０００９】
受信ユニットは、ロードすべき最初のＪａｖａクラスのクラス名が含まれる、クラスをロードするように求める要求をサーバーから受け取ってもよい。
【００１０】
発見ユニットは、クラス名に従ってクラス登録情報から最初のＪａｖａクラスのエンティティの格納アドレスを発見してもよく、その格納アドレスに従って最初のＪａｖａクラスの最新バージョン番号を取得する。
【００１１】
判定ユニットは、最初のＪａｖａクラスの最新バージョン番号が以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と同一であるか判定してもよい。
【００１２】
処理ユニットは、当該クラスをロードするために上記の格納アドレスから最初のＪａｖａクラスの最新バージョンを取得してもよく、最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なる場合、クラスバージョンレコード内の最初のＪａｖａクラスの最新バージョン番号を更新する。最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なっていない場合、処理ユニットは最初のＪａｖａクラスを直接ロードしてもよい。
【００１３】
１つの実施形態において、発見ユニットは、クラス登録情報の内容をクラスアドレステーブルに記録してもよい。
【００１４】
１つの実施形態において、クラスアドレステーブルの主キーは最初のＪａｖａクラスのクラス名を記録してもよく、クラスアドレステーブルの主キーの値は最初のＪａｖａクラスの格納アドレスを記録してもよい。
【００１５】
１つの実施形態において、発見ユニットは、最初のＪａｖａクラスのバージョン情報をクラスバージョンテーブルに記録してもよい。
【００１６】
１つの実施形態において、クラスバージョンテーブルの主キーは最初のＪａｖａクラスのクラス名を記録してもよく、クラスバージョンテーブルの主キーの値は以前にロードされたＪａｖａクラスのバージョン番号を記録してもよい。
【００１７】
別の態様において、クラス登録情報を維持するために使用されるクラス登録用のシステムは、取得ユニット、追加ユニット、および更新ユニットを備えてもよい。
【００１８】
取得ユニットは、Ｊａｖａクラスデータベースの格納アドレスに従ってＪａｖａクラスデータベースを取得してもよい。
【００１９】
追加ユニットは、Ｊａｖａクラスデータベースを横断検索し、クラス登録情報に記録されておらず、Ｊａｖａクラスデータベースには含まれている新しいクラスをクラス登録情報に挿入してもよい。
【００２０】
更新ユニットは、Ｊａｖａクラスデータベースを横断検索し、Ｊａｖａクラスデータベースに記録されている各Ｊａｖａクラスのそれぞれの格納アドレスに従ってクラス登録情報内の対応するＪａｖａクラスの格納アドレスを更新してもよい。
【００２１】
１つの実施形態において、クラス登録情報は、クラス名、クラスデータベース名、およびＪａｖａクラスデータベースの格納アドレスを含んでもよい。
【００２２】
さらに別の態様において、クラスタベースのＪａｖａアプリケーションシステムのコードをロードするためにＪａｖａクラスタのサーバーで使用される方法は、ロードすべき最初のＪａｖａクラスのクラス名が含まれる、クラスをロードする要求をサーバーから受け取ってもよく、上記方法は、そのクラス名に従ってクラス登録情報から最初のＪａｖａクラスの格納アドレスを発見してもよく、その格納アドレスに従って最初のＪａｖａクラスの最新バージョン番号を取得してもよく、その最初のＪａｖａクラスの最新バージョン番号が以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と同一であるか判定してもよく、その最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なる場合、その最初のＪａｖａクラスの最新バージョンをロードして、クラスバージョンレコード内の最初のＪａｖａクラスのバージョン番号を更新してもよく、かつ、最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なっていない場合には、その最初のＪａｖａクラスを直接ロードしてもよい。
【００２３】
１つの実施形態において、クラス登録情報の内容はクラスアドレステーブルに記録されてもよい。クラスアドレステーブルに記録されるクラス登録情報の内容は、最初のＪａｖａクラスのクラス名を記録するクラスアドレステーブルの主キー、および最初のＪａｖａクラスの格納アドレスを記録するクラスアドレステーブルの主キーの値を含んでもよい。
【００２４】
１つの実施形態において、クラス登録情報の内容はクラスバージョンテーブルに記録されてもよい。クラスバージョンテーブルに記録された最初のＪａｖａクラスのバージョン情報は、最初のＪａｖａクラスのクラス名を記録するクラスバージョンテーブルの主キー、および以前にロードされたＪａｖａクラスのバージョン番号を記録するクラスバージョンテーブルの主キーの値を含んでもよい。
【００２５】
さらに別の態様において、クラス登録の方法は、Ｊａｖａクラスデータベースの格納アドレスに従ってＪａｖａクラスデータベースを取得してもよく、クラス登録情報に記録されておらず、Ｊａｖａクラスデータベースには含まれている新しいクラスをクラス登録情報に挿入してもよく、Ｊａｖａクラスデータベースに記録されたＪａｖａクラスの格納アドレスに従ってクラス登録情報内の対応するＪａｖａクラスの格納アドレスを更新してもよい。
【００２６】
１つの実施形態において、クラス登録情報は、クラス名、クラスデータベース名、およびＪａｖａクラスデータベースの格納アドレスを含んでもよい。
【００２７】
本開示のこの実施形態において、受信ユニットは、サーバーから送信されるクラスのロード要求を受け取るように構成される。このクラスロード要求には、ロードすべき最初のＪａｖａクラスのクラス名が含まれる。発見ユニットは、そのクラス名に従ってクラス登録情報から最初のＪａｖａクラスのエンティティの格納アドレスを発見し、その格納アドレスに従って最初のＪａｖａクラスの格納アドレスから最初のＪａｖａクラスの最新バージョン番号を取得するように構成される。判定ユニットは、その最初のＪａｖａクラスの最新バージョン番号が以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と同一であるか判定するように構成される。処理ユニットは、ロードすべき最初のＪａｖａクラスの格納アドレスから最初のＪａｖａクラスの最新バージョンを取得するとともに、その最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なる場合には最初のＪａｖａクラスのバージョン番号を更新し、異なっていなければ最初のＪａｖａクラスを直接ロードするように構成される。本開示によって与えられるロード手法は、クラスタ内の各サーバーに最新コードを配信する必要がなく、クラスタ内の各サーバーのＪａｖａアプリケーションを再起動する必要もない。ＳＶＮサーバーなどのコード格納サーバーにおいてコードが更新されると、クラスタ内の各サーバーはその最新コードを自動的にロードすることができ、それによりＪａｖａクラスタシステムの有用性が向上する。
【００２８】
本開示の実施形態または最新技術の手法をより的確に例示するものとして、次にその実施形態の説明に使用される図を簡単に紹介する。以下の図は、本開示のいくつかの実施形態にのみ関係する。本開示の図に基づき、当業者は、これ以外の図を創造的な努力なしに取得することができる。
【図面の簡単な説明】
【００２９】
【図１】本開示に基づく例示的な実施形態の装置の図である。
【図２】本開示に基づくアプリケーションのシナリオにおける別の実施形態の装置の図である。
【図３】本開示に基づく例示的な実施形態の装置内のユニットを示す。
【図４】本開示に基づく例示的システムの図である。
【図５】本開示に基づく例示的方法のフローチャートを示す。
【図６】本開示に基づく別の例示的方法のフローチャートを示す。
【図７】本開示に基づく例示的方法のフローチャートを示す。
【図８】本開示に基づく例示的方法のフローチャートを示す。
【発明を実施するための形態】
【００３０】
当業者が本開示の手法をより的確に理解できるようにするため、本開示は、図面に示した各図を参照して、当該手法を明確かつ完全に説明する。これらの図は、本開示のすべての実施形態ではなく、一部の実施形態にのみ関係する。当業者は、本開示の実施形態に基づき、創造的な努力なしに他の実施形態を取得することができる。それらの実施形態はすべて本開示の保護範囲に属する。
【００３１】
図１は、本開示に基づくクラスタベースのＪａｖａアプリケーションシステムをロードするための装置の図である。この装置はＪａｖａクラスタの各サーバー内に配置されてもよい。この装置は、受信ユニット１０１、発見ユニット１０２、判定ユニット１０３、および処理ユニット１０４を備える。
【００３２】
受信ユニット１０１は、サーバーからクラスのロード要求を受け取るように構成される。このクラスロード要求には、最初のＪａｖａクラスのクラス名が含まれる。
【００３３】
最初のＪａｖａクラスとは、クラスロード要求に入っているロードすべきＪａｖａクラスのことを指す。たとえば、ロードすべき１つのＪａｖａクラスはｃｏｍ．ｆｏｏ．ｈｅｌｌｏｗｏｒｌｄである。
【００３４】
発見ユニット１０２は、上記のクラス名に従ってクラス登録情報から最初のＪａｖａクラスのエンティティの格納アドレスを発見するとともに、その格納アドレスに従って最初のＪａｖａクラスの格納アドレスから最初のＪａｖａクラスの最新バージョン番号を取得するように構成される。
【００３５】
テーブルによってクラス登録情報を記録することができる。たとえば、本開示の一実施形態では、クラス登録テーブル（ＣｌａｓｓＴａｂｌｅ）にクラス登録情報が記録される。
【００３６】
Ｊａｖａクラスおよび各Ｊａｖａクラスの格納アドレスを記録するために、クラス登録テーブルをデータベースに格納することができる。
【００３７】
図２は、本開示に基づく実施形態の装置の図である。図２において、クラス登録テーブルはデータベース２０１に格納される。この実施形態によって与えられるコードロード装置２０２は、データベース２０１と接続されたサーバー２０３に配置される。コードロード装置２０２は、データベース２０１と通信して、データベース２０１に格納されたクラス登録情報を読み出すことができる。
【００３８】
通常、Ｊａｖａクラスはｊａｒ形式のｚｉｐパッケージに圧縮される。本実施形態はこの方法を採用している。図２の実施形態において、Ｊａｖａクラスがｊａｒパッケージに圧縮された後、そのｊａｒパッケージがサブバージョン（ＳＶＮ）サーバー２０４にアップロードされる。ＳＶＮサーバーは、ｊａｒパッケージを格納し、各ｊａｒパッケージのバージョン情報を記録する。ＳＶＮは評価が高いソースコードバージョン管理システムである。ＳＶＮサーバー２０４は、ソースコードを格納および管理するためにサブバージョンによって使用されるサーバーである。ＳＶＮサーバーに格納された各ｊａｒパッケージはＳＶＮアドレスを有し、そのＳＶＮアドレスに従って発見される。
【００３９】
図２において、ＳＶＮサーバー２０４はサーバー２０３と接続されている。サーバー２０３上のコードロード装置２０２は、ＳＶＮサーバー２０４と通信し、各ＪａｖａクラスのそれぞれのＳＶＮアドレスに従ってＳＶＮサーバー２０４から各Ｊａｖａクラスを取得することができる。
【００４０】
下記の表１は、本開示の実施形態によって与えられるクラス登録テーブルの例である。クラス登録テーブルに記録される情報には、Ｊａｖａクラス名、そのＪａｖａクラスが属するｊａｒパッケージの名前、およびそのＪａｖａクラスが属するｊａｒパッケージのＳＶＮアドレスが含まれる。
【００４１】
表１に示した例において、Ｊａｖａクラス名はｃｏｍ．ｆｏｏ．ｈｅｌｌｏｗｒｏｌｄである。そのＪａｖａクラスが属するｊａｒパッケージの名前はｈｅｌｌｏ−ｂｉｚである。そのＪａｖａクラスが属するｊａｒパッケージのＳＶＮアドレスは、ｈｔｔｐ：／／ｓｖｎ．ｆｏｏ−ｉｎｃ．ｃｏｍ／ｒｅｐｏｓ／ｅｘａｍｐｌｅ／ｈｅｌｌｏｊａｒである。
【００４２】
【表１】
2013511766.tif 000003
【００４３】
ＳＶＮサーバー２０４は、Ｊａｖａクラスのすべての更新を記録する。ユーザーがＪａｖａコードを改訂し、ＳＶＮクライアントソフトウェアを介してその改訂ＪａｖａコードをＳＶＮサーバー２０４に提出した後、ＳＶＮサーバー２０４は、新しいバージョンの改訂Ｊａｖａコードを生成して、その新バージョンを記録する。実際的には、バージョン番号を使用して各バージョンのＪａｖａコードを記録することができる。同じＪａｖａクラスの場合は、バージョンが新しいほどバージョン番号が高くなる。たとえば、１つのＪａｖａクラスのバージョン番号は１５５１６である。ユーザーがＪａｖａクラスを改訂し、その改訂版をＳＶＮサーバーに提出した後、ＳＶＮサーバー２０４はバージョン番号を１５５１７に更新し、以前のバージョン１５５１６は過去バージョンになる。
【００４４】
データ検索の速度を向上させるため、本開示のいくつかの実施形態において、発見ユニット１０２は、アドレス情報および最初のＪａｖａクラスのバージョン情報をそれぞれクラスアドレステーブルおよびクラスバージョンテーブルによって記録することができる。
【００４５】
具体的には、クラスアドレステーブルの主キーに最初のＪａｖａクラスのクラス名が記録され、クラスアドレステーブルの主キーの値に最初のＪａｖａクラスの格納アドレスが記録される。
【００４６】
【表２】
2013511766.tif 000004
【００４７】
表２は、クラスアドレステーブルの例である。上記の表に示すように、Ｊａｖａクラスはｊａｒパッケージに圧縮される。そのｊａｒパッケージがＳＶＮサーバー２０４に格納される。クラスアドレステーブルは主キーによってクラス名を記録する。表２の例において、クラス名はｃｏｍ．ｆｏｏ．ｈｅｌｌｏｗｏｒｌｄである。クラスアドレステーブルは、そのＪａｖａクラスが属するｊａｒパッケージのＳＶＮアドレスを記録する。表２の例において、そのアドレスはｈｔｔｐ：／／ｓｖｎ．ｆｏｏ−ｉｎｃ．ｃｏｍ／ｒｅｐｏｓ／ｅｘａｍｐｌｅ／ｈｅｌｌｏｊａｒである。
【００４８】
【表３】
2013511766.tif 000005
【００４９】
表３は、クラスバージョンテーブルの例である。クラス名を記録するために主キーが使用される。図３の例において、クラス名はｃｏｍ．ｆｏｏ．ｈｅｌｌｏｗｏｒｌｄである。そのＪａｖａクラスが属するｊａｒパッケージの以前にロードされたバージョンを記録するために主キーの値が使用される。図３の例において、ｃｏｍ．ｆｏｏ．ｈｅｌｌｏｗｏｒｌｄクラスが属するｊａｒパッケージの以前にロードされたバージョンは２２１６２である。
【００５０】
判定ユニット１０３は、最初のＪａｖａクラスの最新バージョン番号が以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と同一であるか判定するように構成される。
【００５１】
クラス登録情報は、すべての記録されたクラスに関する情報を記録する。本開示のこの実施形態では、クラスアドレスおよびバージョン情報がクラスアドレステーブルおよびクラスバージョンテーブルによって記録される。
【００５２】
処理ユニット１０４は、ロードすべき最初のＪａｖａクラスの格納アドレスから最初のＪａｖａクラスの最新バージョンを取得し、その最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なる場合、最初のＪａｖａクラスのバージョン番号を更新するように構成される。最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスバージョン番号と異なっていなければ、処理ユニット１０４は、最初のＪａｖａクラスを直接ロードする。
【００５３】
処理ユニット１０４は、毎回クラスをロードする時に、ＳＶＮサーバー２０４内の当該クラスが格納されているｊａｒパッケージが更新されていないか確認する。更新されていれば、処理ユニット１０４は、クラスバージョンテーブル内の対応バージョンを主キーの最新の値に更新する。
【００５４】
この実施形態において、特定のＪａｖａクラスがすでにロードされており、そのバージョンが同一である場合、コードロード装置２０２は、そのクラスを直接ロードしてローカルに実行する。バージョンが同一でなければ、コードロード装置２０２は、サーバー２０３からＪａｖａクラスの最新バージョンを取得し、その最新バージョンをロードして実行する必要がある。
【００５５】
図３を参照して、本開示の一実施形態によるコードロード装置２０２は、Ｊａｖａクラスをｊａｒ形式のｚｉｐパッケージに圧縮し、そのｊａｒパッケージをＳＶＮサーバー２０４に格納する。図３に示すように、図１に示した処理ユニット１０４は、第一の取得サブユニット３０１、第二の取得サブユニット３０２、第一の処理サブユニット３０３、および第二の処理サブユニット３０４を備えることができる。
【００５６】
第一の取得ユニット３０１は、最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なる場合、当該Ｊａｖａクラスの最新バージョンが属するｊａｒパッケージのＳＶＮアドレスを取得するように構成される。
【００５７】
第二の取得ユニット３０２は、そのＳＶＮアドレスに従ってＪａｖａクラスの最新バージョンを取得するように構成される。
【００５８】
第一の処理ユニット３０３は、最初のＪａｖａクラスをロードするとともに、クラスバージョンレコード内の最初のＪａｖａクラスのバージョン番号を更新するように構成される。
【００５９】
第二の処理ユニット３０４は、最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と同一である場合、最初のＪａｖａクラスを直接ロードするように構成される。
【００６０】
既存のコード更新手法では、最新コードをクラスタの各サーバーに頻繁に配信することが必要とされる。これには時間がかかり、人的資源および物理的資源を浪費することになりがちである。クラスタ内に多数のサーバーが存在する場合には、コードをロードする効率が著しく低下する。本開示によって与えられるコードロード装置２０２は、クラスタ内の各サーバーに最新コードを配信する必要がなく、クラスタの各サーバー内のＪａｖａアプリケーションを再起動する必要もない。コードロード装置２０２が必要とするのは、ＳＶＮサーバー２０４などのコード格納サーバー内のコードを更新することだけである。システム内の各サーバーは、最新コードを自動的にロードし、それによりＪａｖａクラスタシステムの有用性およびコードのロード効率が向上する。
【００６１】
さらに、既存のコード更新手法では、コードロードプロセスにおいて、クラスタ内の１つ以上のサーバーが更新を逃すか、または更新に失敗すると、バージョンの異なるコードがクラスタ内の異なるサーバー上で同時に実行されることになる。そのような状況ではデータを損傷する恐れがあり、回復不能な重大な結果を生じる場合もある。本開示によって与えられるコードロード装置２０２は、ＳＶＮサーバー２０４などのコード格納サーバー内のコードに従って各サーバーに更新を実行させ、各サーバーが自動的に最新バージョンをロードできることを保証するものである。これにより、バージョンの異なるコードが異なるサーバー上で同時に実行されるという状況から生じるデータの損傷が回避される。本開示に提案された手法によれば、回復不能な重大な結果の発生も回避され、クラスタベースのＪａｖａアプリケーションシステム全体の運用の安定性が向上する。
【００６２】
コードロード装置２０２がクラス登録テーブルから正確で完全なクラス情報を取得できることをさらに保証するものとして、本開示は、とくにクラス登録テーブルを維持することを目的としたクラス登録システムも提供する。図４を参照して、クラス登録システムは、取得ユニット４０１、追加ユニット４０２、および更新ユニット４０３を備えることができる。
【００６３】
取得ユニット４０１は、受け取ったＪａｖａクラスデータベースの格納アドレスに従ってＪａｖａクラスデータベースを取得するように構成される。
【００６４】
追加ユニット４０２は、Ｊａｖａクラスデータベースを横断検索し、クラス登録テーブルに記録されていないがＪａｖａクラスデータベースには含まれる新しいクラスをクラス登録テーブルに挿入するように構成される。
【００６５】
更新ユニット４０３は、Ｊａｖａクラスデータベースを横断検索し、Ｊａｖａクラスデータベースに記録されたＪａｖａクラスの格納アドレスに従ってクラス登録テーブル内の対応するＪａｖａクラスの格納アドレスを更新するように構成される。
【００６６】
本開示によって与えられるクラス登録システムは、Ｊａｖａクラスデータベース内の新しいクラスをクラス登録テーブルに即座に記録し、Ｊａｖａクラスデータベースに記録されている各Ｊａｖａクラスの格納アドレスに従ってクラス登録テーブル内の対応Ｊａｖａクラスの格納アドレスを更新することができる。これにより、クラス登録テーブルが最新かつ完全なＪａｖａクラス情報を記録することが保証され、システムによるロード動作の強力な保護が実現される。
【００６７】
本開示の一実施形態により、Ｊａｖａクラスタのサーバーで使用するためのクラスタベースのＪａｖａアプリケーションシステムのコードをロードする方法が提供される。図５を参照して、この方法を以下に説明する。
【００６８】
Ｓ５０１において、本方法は、クラスをロードするように求める要求をサーバーから受け取る。このクラスロード要求には、ロードすべき最初のＪａｖａクラスのクラス名が含まれる。
【００６９】
Ｓ５０２において、本方法は、上記のクラス名に従ってクラス登録テーブルから最初のＪａｖａクラスの格納アドレスを発見し、その格納アドレスに従って最初のＪａｖａクラスの格納アドレスから最初のＪａｖａクラスの最新バージョン番号を取得する。
【００７０】
データ検索の速度を向上させるため、本開示のいくつかの実施形態では、クラスアドレステーブルを使用してクラス登録テーブルの内容を記録することができる。具体的には、クラスアドレステーブルの主キーによって最初のＪａｖａクラスのクラス名を記録し、クラスアドレステーブルの主キーの値によって最初のＪａｖａクラスの格納アドレスを記録する。
【００７１】
任意選択により、最初のＪａｖａクラスのバージョン情報を記録するためにクラスバージョンテーブルが使用される。具体的には、クラスバージョンテーブルの主キーを使用してクラス名を記録する。また、クラスバージョンテーブルの主キーの値を使用して、最初のＪａｖａクラスの以前にロードされたバージョンを記録する。
【００７２】
Ｓ５０３において、本方法は、最初のＪａｖａクラスの最新バージョン番号が以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と同一であるか判定する。
【００７３】
５０４において、最初のＪａｖａクラスの最新バージョンが以前にロードされてローカルに格納されている最初のＪａｖａクラスのバージョン番号と異なる場合、本方法は、最初のＪａｖａクラスの最新バージョンをロードし、クラスバージョンレコード内の最初のＪａｖａクラスのバージョン番号を更新する。２つが異なっていなければ、本方法は、最初のＪａｖａクラスを直接ロードする。
【００７４】
図５に示すロード方法の実装をさらに保証するものとして、本開示の一実施形態は、クラス登録の方法も提供する。図６を参照して、その方法を以下に説明する。
【００７５】
Ｓ６０１において、本方法は、受け取ったＪａｖａクラスデータベースの格納アドレスに従ってＪａｖａクラスデータベースを取得する。
【００７６】
Ｓ６０２において、本方法は、Ｊａｖａクラスデータベースを横断検索し、クラス登録テーブルに記録されておらず、Ｊａｖａクラスデータベースには含まれる新しいクラスをクラス登録テーブルに挿入する。
【００７７】
クラス登録テーブルの内容には、クラス名、クラスデータベース名、およびクラスデータベースの格納アドレスが含まれる。
【００７８】
Ｓ６０３において、本方法は、Ｊａｖａクラスデータベースを横断検索し、Ｊａｖａクラスデータベースに記録されたＪａｖａクラスの格納アドレスに従ってクラス登録テーブル内の対応Ｊａｖａクラスの格納アドレスを更新する。
【００７９】
本開示によって与えられる方法は、動作Ｓ６０２によって新しいクラスの登録を実行し、Ｊａｖａデータベースの完全性を保証する。本方法はまた、動作Ｓ６０３によって各Ｊａｖａクラスの格納アドレスをリアルタイムで更新し、Ｊａｖａデータベースに格納された情報の正確さを保証する。これにより、図５に示す方法の実装が保証される。
【００８０】
本開示の一実施形態によって与えられるコード装置方法を図７に示す。説明のための一例として、プログラマＡが１つのＪａｖａクラスを書く場合を想定する。そのＪａｖａクラスの機能は、Ｗｅｂページに“ｈｅｌｌｏ，ｗｏｒｌｄ”と表示することであり、そのＪａｖａクラスのクラス名はｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓである。このＪａｖａクラスはｈｅｌｌｏ．ｊａｒというＪａｖａパッケージに圧縮され、ＳＶＮサーバーにアップロードされる。
【００８１】
この実施形態において、ｈｅｌｌｏ．ｊａｒ  Ｊａｖａパッケージ内のすべてのクラスおよびｈｅｌｌｏ．ｊａｒ  Ｊａｖａパッケージの対応ＳＶＮサーバーのＵＲＬがクラス登録テーブルに記録される。
【００８２】
Ｊａｖａクラスタ内のサーバーにあるプログラムＡＡＡＡがｈｅｌｌｏ．ｗｏｒｌｄクラスを使用することが必要になった場合、本開示によって与えられるコード装置方法は、以下に説明する多数の動作を実行する。
【００８３】
Ｓ７０１において、プログラムＡＡＡＡが開始されると、そのサーバー上のクラスロード装置がクラス登録テーブル内のレコードを横断検索し、すべてのクラスおよび対応するＳＶＮ  ＵＲＬレコードをローカルに格納されたクラスアドレステーブル（ＳｖｎＵｒｌＭａｐ）に記録する。
【００８４】
Ｓ７０２において、プログラムＡＡＡＡにｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓを使用する必要が生じると、クラスロード装置がＳｖｎＵｒｌＭａｐからｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓのｊａｒパッケージに対応するＳＶＮ  ＵＲＬを発見する。
【００８５】
Ｓ７０３において、上記のＳＶＮ  ＵＲＬに従ってＳＶＮサーバーにアクセスし、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓに対応するｈｅｌｌｏ．ｊａｒパッケージを取得するとともに、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓの最新バージョンを取得する。
【００８６】
たとえば、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓの現在の最新バージョンは１００００である。
【００８７】
Ｓ７０４において、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓのクラス名および最新バージョンをローカルクラスバージョンテーブル（ＣｌａｓｓＶｅｒｓｉｏｎＭａｐ）に記録する。ＣｌａｓｓＶｅｒｓｉｏｎＭａｐの主キーは“ｈｅｌｌｏｗｏｒｌｄ”であり、主キーの値は１００００である。
【００８８】
Ｓ７０５において、ＳＶＮサーバーからｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓをダウンロードする。
【００８９】
Ｓ７０６において、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓをロードして、そのｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓを実行する。
【００９０】
その後、プログラマＡがｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓを改訂し、ｈｅｌｌｏ．ｊａｒを再圧縮して、それをＳＶＮサーバーに提出したと仮定すれば、ＳＶＮサーバーは、その最新のｈｅｌｌｏ．ｊａｒを受け入れて、最新バージョン番号１０００１を生成する。
【００９１】
プログラムＡＡＡＡが再び実行された場合、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓを使用する必要が生じた時点で、図８に示すように、本開示の一実施形態によって後述のようなロード方法が提供される。
【００９２】
Ｓ８０１において、プログラムＡＡＡＡが配置されているサーバー上のロード装置が“ｈｅｌｌｏｗｏｒｌｄ”に従ってＳｖｎＵｒｌＭａｐから対応ＳＶＮ  ＵＲＬを発見する。
【００９３】
図７に示す方法により、ｈｅｌｌｏｗｏｒｌｄクラスの情報がすでに記録されている。そのクラスを再び使用する時、本方法はローカルのＳｖｎＵｒｌＭａｐにあるそのクラスの対応ＵＲＬを直接検索することができる。
【００９４】
Ｓ８０２において、本方法は、上記のＳＶＮ  ＵＲＬに従ってＳＶＮサーバーにアクセスし、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓの最新バージョンを取得する。この例では１０００１が最新バージョンである。
【００９５】
Ｓ８０３において、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓの最新バージョン番号をＣｌａｓｓＶｅｒｓｉｏｎＭａｐにローカルに格納されたｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓのバージョン番号と比較する。２つが同一ならば動作Ｓ８０５に進み、同一でなければ動作Ｓ８０４に移る。
【００９６】
この実施形態において、ローカルに記録されたｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓのバージョン番号は１００００であり、ＳＶＮサーバーからのｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓの最新バージョン番号は１０００１である。比較すると、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓの最新バージョン番号はローカルに記録されたバージョン番号よりも高い。これは、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓがすでに更新されていることを示す。
【００９７】
Ｓ８０４において、ＳＶＮ  ＵＲＬに従ってＳＶＮサーバーから最新のｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓをダウンロードする。
【００９８】
Ｓ８０５において、ｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓをロードして、そのｈｅｌｌｏｗｏｒｌｄ．ｃｌａｓｓを実行する。
【００９９】
本方法は、新しい各クラスを事前に記録する。特定のクラスを使用する可能性がある場合、そのクラスの格納アドレスがそのクラスの登録情報に従って取得され、そのクラスのバージョン情報が上記の格納アドレスに従ってクラスの格納場所から取得される。比較後、そのクラスの最新バージョンが取得され、ロード後に使用される。本方法では、クラスタ内の各サーバーに最新コードを配信する必要がなく、クラスタ内の各サーバーのＪａｖａアプリケーションを再起動する必要もない。更新に備えてコードをＳＶＮサーバー２０４などのコード格納サーバーに格納する必要があるだけである。クラスタ内の各サーバーは最新コードを自動的にロードし、それによりＪａｖａクラスタシステムの有用性が向上するとともにコードのロード効率が向上する。
【０１００】
説明の便宜上、上述のシステムおよび装置は各種ユニットに機能的に分割されており、それらが別々に説明されている。開示されたシステムおよび装置を実現する場合、各種ユニットの機能は、ソフトウェアおよび／またはハードウェアの１つまたは複数のインスタンスに実装されてもよい。
【０１０１】
上述の例示的な実施形態から、当業者は、開示された方法およびシステムがソフトウェアおよび普遍的なハードウェアプラットフォームを使用して実現可能であることを明確に理解することができる。この理解に基づき、本開示の技術的スキーム、または既存の技術に寄与する部分は、ＲＯＭ／ＲＡＭ、ハードドライブ、光ディスクなどの１つ以上のコンピュータ可読記憶媒体に格納されたソフトウェア製品という形で実装されてもよい。このソフトウェアには、本開示の例示的な実施形態に記述された方法を計算装置（例：パーソナルコンピュータ、サーバーまたはネットワーク装置）に実行させるための命令が含まれる。
【０１０２】
本開示では、さまざまな例示的な実施形態が漸次的に説明されている。例示的な実施形態の同一部分または同様の部分は相互に参照可能である。各例示的な実施形態はそれぞれ他の例示的な実施形態とは焦点が異なる。具体的には、例示的方法と基本的に一致したものとして、各システム例示的な実施形態が比較的簡略に説明されている。その詳細については、例示的方法の関連部分を参照することができる。
【０１０３】
本開示は、汎用または専用のコンピュータシステムの環境または構成で利用されてもよい。その例には、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルド型装置または携帯型装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットアップボックス、プログラム可能な顧客電子装置、ネットワークＰＣ、小型コンピュータ、大型コンピュータ、およびそのいずれかのシステムまたは装置を含む分散コンピューティング環境が含まれる。
【０１０４】
本開示の内容は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的な文脈の中に位置づけられる。一般的に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、モジュール、データ構造などが含まれる。開示された方法およびシステムは、分散コンピューティング環境で実現されてもよい。分散コンピューティング環境では、通信ネットワークを介して接続された遠隔処理装置によってタスクが実行される。分散コンピューティング環境において、プログラムモジュールは、ローカルおよびリモートコンピュータの記憶媒体（記憶装置を含む）に配置されてもよい。
【０１０５】
本開示を実施形態によって説明したが、当然ながら、当業者は本開示の趣旨および範囲から逸脱することなく、さまざまな方法で本開示を変更または修正することができる。したがって、これらの修正および変形は、本開示およびその等価物に関する特許請求の範囲に含まれるものとみなされるべきである。
【図１】
2013511766.tif 000006
【図２】
2013511766.tif 000007
【図３】
2013511766.tif 000008
【図４】
2013511766.tif 000009
【図５】
2013511766.tif 000010
【図６】
2013511766.tif 000011
【図７】
2013511766.tif 000012
【図８】
2013511766.tif 000013
【国際調査報告】
2013511766.tif 000014