(57)【要約】【課題】  「親」Ｍｂｅａｎが複数の「子」Ｍｂｅａｎを生成および管理する、Ｍｂｅａｎの固有クラスを作成するための方法を提供する。【解決手段】  親クラス・オブジェクト記述に基づいて、親クラス・オブジェクトに関するメモリを割り振ること、親クラス・オブジェクトにより、子クラス・オブジェクト記述に基づいて第１の子クラス・オブジェクトに関するメモリを割り振ること、第１の子クラス・オブジェクトに、第２の子クラス・オブジェクトに対応する第２の識別子から固有の第１の識別子を割り当てることであって、第２の子クラス・オブジェクトも、子クラス・オブジェクト記述に基づいて親クラス・オブジェクトによって割り振られる、割り当てること、および、第１の子クラス・オブジェクトを第２の子クラス・オブジェクトと区別できるように、第１の識別子を格納することを含む、方法。【選択図】  図１
2011504268.tif 000002
【特許請求の範囲】
【請求項１】
親クラス・オブジェクト記述に基づいて、親クラス・オブジェクトに関するメモリを割り振るステップと、
前記親クラス・オブジェクトにより、子クラス・オブジェクト記述に基づいて第１の子クラス・オブジェクトに関するメモリを割り振るステップと、
前記第１の子クラス・オブジェクトに、第２の子クラス・オブジェクトに対応する第２の識別子とは異なる第１の識別子を割り当てるステップであって、前記第２の子クラス・オブジェクトも、前記子クラス・オブジェクト記述に基づいて前記親クラス・オブジェクトによって割り振られる、ステップと、
前記第１の子クラス・オブジェクトを前記第２の子クラス・オブジェクトと区別できるように、前記第１の識別子を格納するステップと、
を含む、方法。
【請求項２】
前記第１の子クラス・オブジェクトにクライアント状態情報を渡すステップと、
前記第１の子クラス・オブジェクトと共に、前記クライアント状態情報を格納するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記クライアント状態情報が、関連付けられたクライアントとデータベースとの間の接続に対応する情報である、請求項１に記載の方法。
【請求項４】
前記親クラス・オブジェクトを呼び出すステップと、
前記親クラス・オブジェクトへの前記呼び出しと共に、前記親クラス・オブジェクトに識別子を渡すステップと、
前記渡された識別子を、前記第１の識別子または前記第２の識別子のいずれかと相関するステップと、
前記渡された識別子を、それぞれ前記第１の識別子または前記第２の識別子のいずれと相関するかに基づいて、前記第１の子クラス・オブジェクトまたは前記第２の子クラス・オブジェクトのいずれかを呼び出すステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記親クラス・オブジェクト、前記第１の子クラス・オブジェクト、および前記第２の子クラス・オブジェクトが、ＪＡＶＡ（Ｒ）プログラミング・オブジェクトである、請求項１に記載の方法。
【請求項６】
前記第１の子クラス・オブジェクトが第１のデータベースへの接続を提供し、前記第２の子クラス・オブジェクトが第２のデータベースへの接続を提供する、請求項１に記載の方法。
【請求項７】
前記第１の子クラス・オブジェクトが第１の通信チャネルへの接続を提供し、前記第２の子クラス・オブジェクトが第２の通信チャネルへの接続を提供する、請求項１に記載の方法。
【請求項８】
親クラス・オブジェクト記述と、
子クラス・オブジェクト記述と、
前記親クラス・オブジェクト記述に従って生成された親クラス・オブジェクトにより、前記子クラス・オブジェクト記述に基づいて子クラス・オブジェクトを生成するための論理と、
前記第１の子クラス・オブジェクトに対応する第１の識別子と、
前記第１の識別子に基づいて、前記第１の子クラス・オブジェクトを第２の子クラス・オブジェクトと区別するための論理であって、前記第２の子クラス・オブジェクトが、前記子クラス・オブジェクト記述に基づいており、前記親クラス・オブジェクトによって生成される、区別するための論理と、
を備える、システム。
【請求項９】
前記親クラス・オブジェクトを生成するクライアントに対応するクライアント状態情報と、
前記クライアント状態情報を前記第１の子クラス・オブジェクトに渡すための論理と、
前記クライアント状態情報を前記第１の子クラス・オブジェクトと共に格納するための論理と、
をさらに備える、請求項８に記載のシステム。
【請求項１０】
前記クライアント状態情報が、前記クライアントとデータベースとの間の接続に対応する情報である、請求項９に記載のシステム。
【請求項１１】
前記親クラス・オブジェクトを呼び出すための論理と、
前記親クラス・オブジェクトへの前記呼び出しと共に、前記親クラス・オブジェクトに識別子を渡すための論理と、
前記渡された識別子を、前記第１の識別子または前記第２の識別子のいずれかと相関するための論理と、
前記渡された識別子を、それぞれ前記第１の識別子または前記第２の識別子のいずれと相関するかに基づいて、前記第１の子クラス・オブジェクトまたは前記第２の子クラス・オブジェクトのいずれかを呼び出すための論理と、
をさらに備える、請求項８に記載のシステム。
【請求項１２】
前記親クラス・オブジェクト、前記第１の子クラス・オブジェクト、および前記第２の子クラス・オブジェクトが、ＪＡＶＡ（Ｒ）プログラミング・オブジェクトである、請求項８に記載のシステム。
【請求項１３】
前記第１の子クラス・オブジェクトが第１のデータベースへの接続を提供し、前記第２の子クラス・オブジェクトが第２のデータベースへの接続を提供する、請求項８に記載のシステム。
【請求項１４】
前記第１の子クラス・オブジェクトが第１の通信チャネルへの接続を提供し、前記第２の子クラス・オブジェクトが第２の通信チャネルへの接続を提供する、請求項８に記載のシステム。
【請求項１５】
メモリと、
親クラス・オブジェクト記述に基づいて、親クラス・オブジェクトに関するメモリを割り振るための、プロセッサ上での実行のために前記メモリ上に格納された、論理と
前記親クラス・オブジェクトにより、子クラス・オブジェクト記述に基づいて第１の子クラス・オブジェクトに関するメモリを割り振るための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と
前記第１の子クラス・オブジェクトに、第２の子クラス・オブジェクトに対応する第２の識別子とは異なる第１の識別子を割り当てるための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理であって、前記第２の子クラス・オブジェクトも、前記子クラス・オブジェクト記述に基づいて前記親クラス・オブジェクトによって割り振られる、割り当てるための論理と、
前記第１の子クラス・オブジェクトを前記第２の子クラス・オブジェクトと区別できるように、前記第１の識別子を格納するための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と
を備える、コンピュータ・プログラミング。
【請求項１６】
前記第１の子クラス・オブジェクトにクライアント状態情報を渡すための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と、
前記第１の子クラス・オブジェクトと共に、前記クライアント状態情報を格納するための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と、
をさらに備える、請求項１５に記載のコンピュータ・プログラミング。
【請求項１７】
前記クライアント状態情報が、関連付けられたクライアントとデータベースとの間の接続に対応する情報である、請求項１６に記載のコンピュータ・プログラミング。
【請求項１８】
前記親クラス・オブジェクトを呼び出すための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と、
前記親クラス・オブジェクトへの前記呼び出しと共に、前記親クラス・オブジェクトに識別子を渡すための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と、
前記渡された識別子を、前記第１の識別子または前記第２の識別子のいずれかと相関するための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と、
前記渡された識別子を、それぞれ前記第１の識別子または前記第２の識別子のいずれと相関するかに基づいて、前記第１の子クラス・オブジェクトまたは前記第２の子クラス・オブジェクトのいずれかを呼び出すための、前記プロセッサ上での実行のために前記メモリ上に格納された、論理と、
をさらに備える、請求項１５に記載のコンピュータ・プログラミング。
【請求項１９】
前記親クラス・オブジェクト、前記第１の子クラス・オブジェクト、および前記第２の子クラス・オブジェクトが、ＪＡＶＡ（Ｒ）プログラミング・オブジェクトである、請求項１５に記載のコンピュータ・プログラミング。
【請求項２０】
前記第１の子クラス・オブジェクトが第１のデータベースへの接続を提供し、前記第２の子クラス・オブジェクトが第２のデータベースへの接続を提供する、請求項１５に記載のコンピュータ・プログラミング。
【発明の詳細な説明】
【技術分野】
【０００１】
請求される主題は、一般的には、管理コンピュータ・プログラミング・オブジェクトに関する技術に関し、より具体的には、追加のＭａｎａｇｅｄ  ＪａｖａＢｅａｎオブジェクトを生成し管理することができるＭａｎａｇｅｄ  ＪａｖａＢｅａｎ（Ｍｂｅａｎ）プログラミング・オブジェクトに関する。
【背景技術】
【０００２】
ここ数十年の間、コンピュータは互いに接続されるようになった。もともと、コンピュータはスタンド・アロン型のデバイスであり、通常は、それぞれが特定のタスク向けに設計およびプログラミングされるものであった。しかし、すぐにコンピュータをネットワークに結合することの利点が明らかとなった。コンピュータのネットワークによって、プリンタやメモリなどのリソースを共有でき、最終的には処理タスクも共有し分配することができる。たとえば、データベースの異なるセグメントを検索するために異なるプロセッサあるいはコンピュータまたはその両方を割り当てることによって、大規模データベースの検索を複数の相互に排他的なタスクに分割することができることがある。
【０００３】
コンピュータの相互接続が進むにつれて、複数のコンピュータが協働できるようにするための技術が開発されてきた。こうした開発の１つが、元来、カリフォルニア州マウンテンビューのサン・マイクロシステムズ社によって開発された高水準プログラミング言語の、ＪＡＶＡ（Ｒ）である。ＪＡＶＡ（Ｒ）は、プログラマが、プラットフォームに依存しないコードを開発できるようにするものである。簡単に言えば、ＪＡＶＡ（Ｒ）プログラミング言語で作成されたコードは、コンピュータ上で実行しているＪＡＶＡ（Ｒ）仮想マシン（ＪＶＭ）によって、特定のコンピュータに対応する実際のコンピュータ命令に変換、すなわち「解釈」される。言い換えれば、特定のコンピュータ・ハードウェアおよび関連付けられたオペレーティング・システムに対応するＪＶＭをインストールすることによって、プログラマは、特定のハードウェアおよびオペレーティング・システムに関係なくコードを作成することができる。
【０００４】
従来型コンピュータの接続の増加に加えて、コンピューティング・コンポーネントを組み込んだ多くのデバイスも相互接続され、ＪＡＶＡ（Ｒ）対応型になってきている。その例には、インターネットすなわち「ウェブ」電話、ケーブル・ボックスおよびテレビジョン、ならびにアプリケーション・クライアントおよびサーバが含まれる。こうしたＪＡＶＡ（Ｒ）対応型リソースの管理を容易にするために、ＪＡＶＡ（Ｒ）Ｍａｎａｇｅｍｅｎｔ  Ｅｘｔｅｎｓｉｏｎｓ（ＪＭＸ）が開発された。ＪＭＸは、ＪＡＶＡ環境においてデバイス、アプリケーション、およびサービスを管理および監視するための標準である。ＪＭＸは、ＪＡＶＡ（Ｒ）リソースおよびプログラミング・オブジェクトを管理するために、管理アーキテクチャ、設計パターン、アプリケーション・プログラミング・インターフェース（ＡＰＩ）、ならびに、ウェブ・ベース、分散型、動的、およびモジュール式のソリューションを構築するためのサービスを定義する。
【０００５】
ＪＭＸは、管理の対象となるオブジェクトを表すプログラミング・オブジェクトである、ＪＡＶＡ（Ｒ）Ｍａｎａｇｅｄ  Ｂｅａｎすなわち「Ｍｂｅａｎ」の作成および実装を提供する。各Ｍｂｅａｎは、対応するリソースの特定構成パラメータの監視、管理、およびこれに対する変更の通知受け取りを、ユーザまたはプログラムが実行できるようにする、管理インターフェースを有する。たとえば、あるアプリケーションを表すＭｂｅａｎは、そのアプリケーションのキャッシュ・サイズに対応する属性および方法を含むことができる。この例では、「ｃａｃｈｅＳｉｚｅ」属性を読み取ることで、アプリケーションのキャッシュ・サイズを戻し、「ｃａｃｈｅＳｉｚｅ」属性を書き込むことで、アプリケーションのキャッシュのサイズを更新し、すなわちアプリケーションの構成を変更することになる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マルチ・ユーザの分散型環境に呼び出しを含めるためにＪＭＸ仕様が改訂されてきたが、通常、ＪＭＸ  Ｍｂｅａｎはスタンド・アロン型オブジェクトである。すなわち、Ｍｂｅａｎは機能に関して階層状に編成されていない。言い換えれば、当分野の現状では、エンド・ユーザは事前に定義されたＭｂｅａｎにアクセスすることはできるが、個々のＭｂｅａｎが「親」Ｍｂｅａｎによって管理され、割り当てられた名前に基づいてアクセスされる、Ｍｂｅａｎのクラスを生成することはできない。加えて、Ｍｂｅａｎは「単体（singleton）」オブジェクトである。任意の特定タイプのうちの単一のＭｂｅａｎのみがインスタンス化され、その単一のＭｂｅａｎはいかなるクライアント状態情報も格納しない。特定タイプのＭｂｅａｎが呼び出されるごとに、クライアント状態情報がＭｂｅａｎに渡されなければならない。
【課題を解決するための手段】
【０００７】
「親」Ｍｂｅａｎが複数の「子」Ｍｂｅａｎを生成および管理する、Ｍｂｅａｎの固有クラスを作成するための方法が提供される。ユーザが特定のＭｂｅａｎの機能を要求する場合、特定タイプのＭｂｅａｎ、すなわち親Ｍｂｅａｎが呼び出される。親Ｍｂｅａｎは、要求を実行するのではなく、要求を実行するための子Ｍｂｅａｎを生成する、ファクトリ・メソッドである。子Ｍｂｅａｎには、同じ親の他の子とその子とを区別する名前が割り当てられ、親を呼び出したプロセスにその名前が与えられる。このようにして、呼び出し側プロセスは、割り当てられた名前を使用して、今後の要求のために特定の子Ｍｂｅａｎにアクセスすることができる。
【０００８】
開示された技術は、１つまたは複数のプロセスが固有の機能に関して特定の子Ｍｂｅａｎを調整できるようにすることによって、Ｍｂｅａｎの機能を拡張する。たとえば、第１の子Ｍｂｅａｎは１つの特定データベースへのアクセスを提供し、第２の子Ｍｂｅａｎは異なるデータベースへのアクセスを提供することができる。第１および第２の両方のＭｂｅａｎは、単一の親Ｍｂｅａｎによって管理される。割り当てられた名前によって指定され、異なるデータベースに接続されるが、それ以外は同様の、２つの異なるＭｂｅａｎを呼び出すための機能により、Ｍｂｅａｎの管理が簡略化される。コンピューティング分野の当業者であれば、開示された技術がデータベース接続に加えて機能を提供できることを理解されたい。たとえば、提供される機能は、通信チャネルまたは特定処理タスクへの接続とすることができる。
【０００９】
さらに、開示された技術は、クライアントＭｂｅａｎ内の状態情報を維持する手段を提供する。親Ｍｂｅａｎは、たとえばデータベース接続情報を含むクライアント状態情報を格納するために、子Ｍｂｅａｎを作成する。親Ｍｂｅａｎ内で、キーまたは子の名前と共に、特定のメソッドが呼び出された場合、このメソッド呼び出しは、クライアント状態情報を格納する適切な子Ｍｂｅａｎに転送される。
【００１０】
この概要は、記載された主題の包括的説明であるものとは意図されておらず、むしろ、それらに関連付けられた機能の一部の簡単な概略を提供することが意図されている。当業者であれば、以下の図面および詳細な説明の検証時に、記載された主題の他のシステム、方法、機能、特徴、および利点が明らかとなろう。
【００１１】
本発明の好ましい諸実施形態について、以下の図面を参照しながら単なる例として説明する。
【図面の簡単な説明】
【００１２】
【図１】本発明の好ましい実施形態に従った、コンピューティング・システムの一例を示すブロック図である。
【図２】本発明の好ましい実施形態に従った、図１のコンピューティング・システム上で実行し、技法をサポートする、コンピュータ・アーキテクチャの一例を示すブロック図である。
【図３】本発明の好ましい実施形態に従った、一実装例で採用されるＣｈｉｌｄＭｂｅａｎＴａｂｌｅＯｂｊｅｃｔ（ＣＭＴＯ）メモリ・オブジェクトの一例を示す図である。
【図４】本発明の好ましい実施形態に従った、一例で採用されるＣｌｉｅｎｔＳｔａｔｅＩｎｆｏｒｍａｔｉｏｎＯｂｊｅｃｔ（ＣＳＩＯ）メモリ・オブジェクトの一例を示す図である。
【図５】本発明の好ましい実施形態に従った、Ｍｂｅａｎセットアップ・プロセスの一例を示す流れ図である。
【図６】図５と共に紹介された例で採用されるＭｂｅａｎ呼び出しプロセスを示す流れ図である。
【図７】図６のプロセスと共に採用される照会実行プロセスを示す流れ図である。
【図８】図５のＭｂｅａｎセットアップ・プロセスと共に採用される例外処理プロセスを示す流れ図である。
【発明を実施するための形態】
【００１３】
特にＪＡＶＡ（Ｒ）Ｍａｎａｇｅｍｅｎｔ  Ｅｘｔｅｎｓｉｏｎｓ（ＪＭＸ）標準を参照しながら説明するが、本発明の諸実施形態は、複数のアプリケーション・ユーザによるプログラミング・オブジェクトへのアクセスが望ましい、任意の情報技術（ＩＴ）で実装可能である。コンピューティング分野の当業者であれば、開示された諸実施形態が、以下で説明する環境に加えて、多様なコンピューティング環境に関連するものであることを理解されよう。さらに、ＪＡＶＡ（Ｒ）管理ビーン（ＭＢｅａｎ）およびＪＡＶＡ環境に関して説明するが、本発明の諸実施形態は他のタイプの管理モジュール、アプリケーション、または、１つのプログラミング・オブジェクトが他のプログラミング・オブジェクトを生成および管理するために作成される、任意の他のタイプの相互依存コンピュータ論理にも適用可能である。言い換えれば、開示された技術は、相互依存コンピュータ・コードが存在し、ユーザまたは開発者が、コンピューティング環境が高度に信頼可能であることを保証する必要があるかまたはそれを望む、任意の状況に適用可能である。
【００１４】
加えて、開示された技術の方法は、ソフトウェア、ハードウェア、あるいはソフトウェアおよびハードウェアの組み合わせで、実装可能である。ハードウェア部分は、特化された論理を使用して実装可能であり、ソフトウェア部分は、メモリに格納し、マイクロプロセッサ、パーソナル・コンピュータ（ＰＣ）、またはメインフレームなどの、好適な命令実行システムによって実行可能である。
【００１５】
本書との関連において、「メモリ」または「記録メディア」とは、命令実行のシステム、装置、またはデバイスによって、またはこれらと共に、プログラムあるいはデータまたはその両方を、含む、格納する、通信する、伝搬する、または移送する、任意の手段とすることができる。メモリおよび記録メディアは、電子、磁気、光、電磁、または半導体の、システム、装置、またはデバイスとすることができるが、これらに限定されることはない。メモリおよび記録メディアは、たとえば、ポータブル・コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、およびポータブル・コンパクト・ディスク読み取り専用メモリ、または、プログラムあるいはデータまたはその両方が格納可能な他の好適なメディア、などを含むこともできるが、これらに限定されることはない。
【００１６】
記載された主題に従い、一実施形態は、ＪＡＶＡ  ＭＢｅａｎの有用性を簡略化および拡張するためのプログラム化された方法を対象とする。「プログラム化された方法」という用語は、本明細書で使用される場合、現在実行されている１つまたは複数のプロセス・ステップ、または別の方法として、将来のある時点で実行可能とされた１つまたは複数のプロセス・ステップを表すために、定義される。「プログラム化された方法」という用語は、３つの代替形式を予想する。第１に、プログラム化された方法は、現在実行されているプロセス・ステップを備える。第２に、プログラム化された方法は、コンピュータによって実行された場合に１つまたは複数のプロセス・ステップを実行する、コンピュータ命令を具体化する、コンピュータ読み取り可能メディアを備える。最後に、プログラム化された方法は、１つまたは複数のプロセス・ステップを実行するために、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせによってプログラミングされた、コンピュータ・システムを備える。「プログラム化された方法」という用語は、同時に複数の代替形式を有するものと解釈されるのではなく、むしろ、任意の所与の時点で、複数の代替形式のうちの１つのみが存在する、代替形式の最も真の意味で解釈されるものであることを理解されよう。
【００１７】
次に図面を参照すると、図１は、本発明の好ましい実施形態に従った、コンピューティング・システム・アーキテクチャ１００の一例を示すブロック図である。コンピューティング・システム１００は、中央処理ユニット（ＣＰＵ）１０４を含み、モニタ１０６、キーボード１０８、およびマウス１１０に結合された、クライアント・コンピュータ１０２を含む。モニタ１０６、キーボード１０８、およびマウス１１０は、コンピューティング・システム１００およびクライアント・コンピュータ１０２との人間の対話を容易にする。ＣＰＵ１０４には、ＣＰＵ１０４に組み込まれる、すなわち内部デバイスであるか、または、ユニバーサル・シリアル・バス（ＵＳＢ）ポート（図示せず）などであるがこれに限定されない様々な一般に使用可能な接続デバイスによって、ＣＰＵ１０４に外部的に接続されることが可能な、データ・ストレージ・コンポーネント１１２が接続される。
【００１８】
データ・ストレージ１１２は、第１のＭｂｅａｎまたは「Ｍｂｅａｎ＿１」１１４、第２のＭｂｅａｎまたは「Ｍｂｅａｎ＿１Ａ」１１８、および第３のＭｂｅａｎまたは「Ｍｂｅａｎ＿１Ｂ」１２０を含む、いくつかの例示的Ｊａｖａ管理バンドルまたは「Ｍｂｅａｎ」を格納するように示されている。典型的なアプリケーションまたはシステムは、多くのＭｂｅａｎを含むことができるが、簡潔にするために、３つのみが示されていることに留意されたい。データ・ストレージ１１２上には、オペレーティング・システム（ＯＳ）１２２およびＪＡＶＡ実行エンジン（ＪＸＥ）１２４も格納される。Ｍｂｅａｎ＿１  １１４と共に、子テーブルまたは「Ｃｈｉｌｄ＿Ｔａｂｌｅ＿１」１１６が格納される。Ｃｈｉｌｄ＿Ｔａｂｌｅ＿１  １１６は、Ｍｂｅａｎ＿１  １１４の一部として示されているが、Ｍｂｅａｎ＿１  １１４の子Ｍｂｅａｎに加えて、他の親Ｍｂｅａｎ（図示せず）に関連付けられた、子Ｍｂｅａｎの作成および管理を容易にする、スタンド・アロン型エンティティとすることができる。Ｍｂｅａｎ＿１Ａ  １１８およびＭｂｅａｎ＿１Ｂ  １２０と共に、それぞれ、クライアント状態情報オブジェクト（ＣＳＩＯ）１１８および１２１が格納される。
【００１９】
以下の説明では、Ｍｂｅａｎ＿１  １１４、Ｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６、Ｍｂｅａｎ＿１Ａ  １１８、ＣＳＩＯ＿１Ａ  １１９、Ｍｂｅａｎ＿１Ｂ  １２０、およびＣＳＩＯ＿１Ｂ  １２１は、本発明の好ましい実施形態に従って作成および管理されたオブジェクトである。Ｍｂｅａｎ＿１  １１４は、親Ｍｂｅａｎであり、Ｍｂｅａｎ＿１Ａ  １１８およびＭｂｅａｎ＿１Ｂ  １２０は、Ｍｂｅａｎ＿１  １１４の子Ｍｂｅａｎである。Ｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６は、Ｍｂｅａｎ＿１Ａ  １１８およびＭｂｅａｎ＿１Ｂ  １２０の作成および管理のために、Ｍｂｅａｎ＿１  １１４によって使用される。Ｍｂｅａｎ＿１Ａ  １１８およびＭｂｅａｎ＿１Ｂ  １２０は、同じタイプのオブジェクトであるが、異なるインスタンス化であるため、Ｍｂｅａｎ＿１Ａ  １１８およびＭｂｅａｎ＿１Ｂ  １２０がそれぞれ専用のクライアント状態情報を、それぞれＣＳＩＯ＿１Ａ  １１９およびＣＳＩＯ＿１Ｂ  １２１に格納できるようにする。以下の例では、クライアント状態情報は、それらそれぞれの名前および接続に関するデータを含む。本発明のいくつかの実施形態は、多くの他のタイプのクライアント状態情報の格納が可能であり、接続情報は単なる一例として使用されている。Ｍｂｅａｎ＿１  １１４、Ｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６、Ｍｂｅａｎ＿１Ａ  １１８、ＣＳＩＯ＿１Ａ  １１９、Ｍｂｅａｎ＿１Ｂ  １２０、ＣＳＩＯ＿１Ｂ  １２１、ＯＳ１２２、およびＪＸＥ１２４については、図２〜図８に関して、以下でより詳細に説明する。
【００２０】
クライアント・コンピュータ１０２はインターネット１２８に接続され、インターネット１２８はサーバ・コンピュータ１３０にも接続される。この例では、クライアント・コンピュータ１０２およびサーバ１３０はインターネット１２８を介して通信的に結合されているが、ローカル・エリア・ネットワーク（ＬＡＮ）（図示せず）および直接有線接続などであるがこれらに限定されない、任意数の通信メディアを介しても結合可能である。
【００２１】
図２は、クライアント・コンピュータ１０２（図１）によって表される、コンピューティング・プラットフォームまたはハードウェア上で実行する、コンピューティング・システム・アーキテクチャ１４０のブロック図である。他の可能なプラットフォームには、サーバ１３０（図１）などのコンピューティング・プラットフォーム、テレビジョン・セット・トップ・ボックス、サービス・ゲートウェイ、ケーブル・モデム、大衆消費電子デバイス、パーソナル・コンピュータ（ＰＣ）、産業用コンピュータ、および自動車などが含まれるが、これらに限定されるものではない。ＯＳ１２２（図１）は、クライアント・コンピュータ１０２のリソースを管理する。本発明の諸実施形態をサポート可能な３つのＯＳの例には、Ｌｉｎｕｘ、Ｍａｃｉｎｔｏｓｈ、および様々なバージョンのＷｉｎｄｏｗｓが含まれ、それらのすべてならびにその他が、コンピューティング分野の当業者に良く知られているものとする。
【００２２】
前述のように、この例では、ＯＳ１２２はＪＸＥ１２４（図１）をサポートし、ＪＸＥ１２４は、カリフォルニア州サンタクララのサン・マイクロシステムズ社の製品である、ＪＡＶＡ（Ｒ）プログラミング言語を実装する。ＪＸＥ１２４は、ＪＡＶＡ（Ｒ）プログラムを実行するＪＡＶＡ（Ｒ）ランタイム・エンジン（ＪＲＥ）（図示せず）を含み、ＪＡＶＡ（Ｒ）プログラムは、固有の機械コードにコンパイルされるのではなく、ＪＸＥ１２４のＪＲＥによって解釈されるバイト・コードにコンパイルされる。このようにして、任意のハードウェア・プラットフォーム１０２、およびＪＸＥ１２４のような対応するＪＸＥを含むＯＳ１２２上で実行するための、特定のＪＡＶＡ（Ｒ）プログラムを作成することができる。
【００２３】
ＪＸＥ１２４は、とりわけ、この例では、ＪＡＶＡ（Ｒ）Ｍａｎａｇｅｍｅｎｔ  Ｅｘｔｅｎｓｉｏｎ（ＪＭＸ）１４２によって管理される、Ｍｂｅａｎ＿１  １１４（図１）、Ｍｂｅａｎ＿１Ａ  １１８（図１）、およびＭｂｅａｎ＿１Ｂ  １２０を含む、Ｍｂｅａｎのための実行環境を提供する。以下の説明では、Ｍｂｅａｎ１１４、１１８、および１２０は、本発明の好ましい実施形態に従ってＪＭＸ１４２によって管理されるＭｂｅａｎの例として使用される。Ｍｂｅａｎ１１４、１１８、および１２０は、ハードウェア・プラットフォーム１２０上に常駐するものとして示されるが、たとえばサーバ１３０（図１）に関連付けられ、サーバ１３０上で実行される、メモリ（図示せず）に格納されるなど、それぞれが異なるプラットフォーム上に位置することが可能である。
【００２４】
図３は、本発明の好ましい実施形態に従って採用される、ＣｈｉｌｄＭｂｅａｎＴａｂｌｅＯｂｊｅｃｔ（ＣＭＴＯ）１５０メモリ・オブジェクト１５０の一例である。ＣＭＴＯ１５０は、図１および図２と共に紹介される、ｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６の１つの可能な実施形態の例である。ＣＭＴＯメモリ・オブジェクト１５０は、単にオブジェクト２００の名前、すなわち「ＣｈｉｌｄＭｂｅａｎＴａｂｌｅＯｂｊｅｃｔ」を記述するタイトル・セクション１５２と、ＣＭＴＯメモリ・オブジェクト１５０に関連付けられたメモリ要素または属性を含む属性セクション１５４と、ＣＭＴＯメモリ・オブジェクト１５０と共に実行可能な関数または方法を含む方法セクション１５６とを含む。説明される属性および方法は、単なる例示のために使用されることに留意されたい。追加あるいは異なる、またはその両方の、属性および方法が、本発明の諸実施形態を実装するために採用可能である。
【００２５】
属性セクション１５４は、「ｃｍｔｏＩＤ」属性１５８および「ｃｈｉｌｄＭｂｅａｎＩＤｓ」属性１６０を含む。この例では、オブジェクト１５０のインスタンス化は、Ｍｂｅａｎ＿１  １１４（図１および図２）と共にｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６として格納される。ＣｍｔｏＩＤ属性１５８は、オブジェクト１５０の特定インスタンスへの参照を含むタイプＣＭＴＯｂｊｅｃｔＩＤの変数である。オブジェクト１５０の各インスタンスは、各インスタンスを固有に識別可能にする、属性に関する固有の値１５８を有する。ＣｈｉｌｄＭｂｅａｎＩＤｓ属性１６０は、開示された技術に従って作成された、子Ｍｂｅａｎのインスタンス化への参照を格納する、タイプＶｅｃｔｏｒの変数である。Ｍｂｅａｎ＿１Ａ  １１８およびＭｂｅａｎ＿１Ｂ  １２０は、属性１６０によって参照される子Ｍｂｅａｎの例である。属性１５８および１６０の両方について、図４〜図８と共に、以下でより詳細に説明する。
【００２６】
オブジェクト１５０の方法セクション１５６は、２つの例示的関数または方法、すなわち、ＡｄｄＣｏｎｎｅｃｔｉｏｎ方法１６２およびＴｒａｎｓｍｉｔＳｔａｔｅｍｅｎｔ方法１６４を含む。簡潔にするために、２つの方法のみが示されている。プログラミング分野の当業者であれば、オブジェクト１５０などのオブジェクトは、通常、様々な属性に関する値を設定および取得するためのコンストラクタ、デストラクタ、および方法を含むが、これらに限定されない、多くの追加の方法を含むことを理解されたい。ＣＭＴＯメモリ・オブジェクト１５０は、本発明の好ましい実施形態に従って使用可能な、メモリ・オブジェクトの単なる一例であることも理解されたい。より少ない、より多い、あるいは異なる、またはそれらすべての、属性および方法を備えた、他のメモリ・オブジェクトを採用することが可能である。加えて、本発明の好ましい実施形態に従って、機能およびデータ・ストレージを実装するためのオブジェクト１５０を採用する以外に、多くの方法がある。たとえば、諸実施形態は、関係データベースと共にコンピュータ・プログラムによって実装可能である。
【００２７】
ＡｄｄＣｏｎｎｅｃｔｉｏｎ方法１６２は、Ｍｂｅａｎセットアップ・プロセス２００（図５を参照）のＭｂｅａｎ作成ブロック２６２中に呼び出される。方法１６２は、タイプＣＳＩＯｂｊｅｃｔの変数である、１パラメータ、ｃｓｉＯｂｊｅｃｔパラメータで呼び出される。タイプＣＳＩＯｂｊｅｃｔの変数については、図４と共に、以下でより詳細に説明する。簡単に言えば、方法１６２は、ユーザが特定データベース（図示せず）への新しい接続を作成したい場合に呼び出される。ｃｓｉＯｂｊｅｃｔパラメータ内の情報は、Ｍｂｅａｎ＿１Ａ  １１８（図１および図２）またはＭｂｅａｎ＿１Ｂ  １２０（図１および図２）などの新しい子Ｍｂｅａｎを作成し、指定されたデータベースへの接続を確立し、呼び出しプロセスに対応するクライアント状態情報を新しい子Ｍｂｅａｎに提供するために、Ｍｂｅａｎ＿１  １１４（図１および図２）などの親Ｍｂｅａｎに必要な情報を提供する。
【００２８】
ＴｒａｎｓｍｉｔＳｔａｔｅｍｅｎｔ方法１６４は、Ｍｂｅａｎ呼び出しプロセス２５０（図６を参照）の子Ｍｂｅａｎ呼び出しブロック２７０中に呼び出される。方法１６４は、タイプＣｈｉｌｄＭｂｅａｎＩＤのＭｂｅａｎＩＤパラメータおよびタイプＳｔｒｉｎｇのｓｑｌＳｔａｔｅｍｅｎｔパラメータという、２つのパラメータで呼び出される。ＭｂｅａｎＩＤパラメータは、Ｍｂｅａｎ＿１  １１４が、ｓｑｌＳｔａｔｅｍｅｎｔパラメータ内で具体化される要求の送信先である適切な子Ｍｂｅａｎを識別できるようにする。クライアント状態情報または照会の宛先である特定データベースに関する任意の情報は、伝送の必要がないことに留意されたい。Ｍｂｅａｎ＿１  １１４は、ＭｂｅａｎＩＤパラメータで適切な子Ｍｂｅａｎを識別し、クライアント状態情報は、ＡｄｄＣｏｎｎｅｃｔｉｏｎ方法１６２で子が作成された場合に伝送された。ＳｑｌＳｔａｔｅｍｅｎｔパラメータは、回答を予測してｃｏｎｎｅｃｔｉｏｎＩＤ属性１８２（図４を参照）に関連付けられたデータベースに伝送される、構造化照会言語（ＳＱＬ）ステートメントを格納する。
【００２９】
データベースの接続および照会が、開示された技術を採用するために可能な方法の一例に過ぎないことに留意されたい。コンピューティング分野の当業者であれば、本発明の好ましい実施形態に従った応用例から恩恵を受けるはずである、多くの他の応用例を理解されよう。
【００３０】
図４は、本発明の好ましい実施形態に従って採用される、ＣｌｉｅｎｔＳｔａｔｅＩｎｆｏｒｍａｔｉｏｎＯｂｊｅｃｔ（ＣＳＩＯ）メモリ・オブジェクト１７０の一例である。ＣＳＩＯ１７０は、図１と共に上記で紹介された、ＣＳＩＯ＿１Ａ  １１９およびＣＳＩＯ＿１Ｂ  １２１の一実施形態の例である。ＣＳＩＯ１７０は、単にオブジェクト２００の名前、すなわち「ＣｈｉｌｄＳｔａｔｅＩｎｆｏｒｍａｔｉｏｎＯｂｊｅｃｔ」を記述するタイトル・セクション１７２と、ＣＳＩＯ１７０に関連付けられたメモリ要素または属性を含む属性セクション１７４と、ＣＳＩＯ１７０と共に実行可能な関数または方法を含む方法セクション１７６とを含む。説明される属性および方法は、単なる例示のために使用されることに留意されたい。追加あるいは異なる、またはその両方の、属性および方法が、本発明の諸実施形態を実装するために採用可能である。
【００３１】
ＣＳＩＯ１７０の属性セクション１７２は、ｃｓｉｏＩＤ属性１７８、ｃｈｉｌｄＭｂｅａｎＩＤ属性１８０、ｃｏｎｎｅｃｔｉｏｎＩＤ属性１７２、ｓｅｒｖｅｒＮａｍｅ属性１８４、ｐｏｒｔＮｕｍｂｅｒ属性１８６、ｄａｔａｂａｓｅＡｌｉａｓ属性１８８、およびｕｓｅｒＮａｍｅ属性１９０を含む。ＣｓｉｏＩＤ属性１７８は、オブジェクト１７０の特定インスタンスへの参照を含む、タイプＣＳＩＯｂｊｅｃｔＩＤの変数である。オブジェクト１７０の各インスタンスは、各インスタンスを固有に識別可能にする、属性に関する固有の値１７８を有する。
【００３２】
タイプＣＳＩＯｂｊｅｃｔＩＤの変数であるＣｈｉｌｄＭｂｅａｎＩＤ属性１８０は、オブジェクト１７０が関連付けられた特定のＭｂｅａｎを識別する。タイプＭｂｅａｎＩＤの変数であるＣｏｎｎｅｃｔｉｏｎＩＤ属性１８２は、対応する子Ｍｂｅａｎが関連付けられた特定の接続を識別する。ＳｅｒｖｅｒＮａｍｅ属性１８４、ｐｏｒｔＮｕｍｂｅｒ属性１８６、ｄａｔａｂａｓｅＡｌｉａｓ属性１８８、およびｕｓｅｒＮａｍｅ属性１９０は、すべてタイプＳｔｒｉｎｇの変数であり、接続を確立するために必要なデータベース名および特定情報を含む、関連付けられた接続に関する情報を格納する。
【００３３】
オブジェクト１７０の方法セクション１７６は、２つの例示的な関数または方法、すなわちＣｏｎｎｅｃｔＴｏＤａｔａｂａｓｅ方法１９２およびＴｒａｎｓｍｉｔＱｕｅｒｙ方法１９４を含む。ＣｏｎｎｅｃｔＴｏＤａｔａｂａｓｅ方法１９２は、タイプＣｏｎｎｅｃｔｉｏｎＩＤの値を戻す、Ｍｂｅａｎ呼び出しプロセス２５０（図６を参照）のＭｂｅａｎ作成ブロック２６２中に呼び出される関数である。方法１９２は、参照されるデータベースへの接続を確立するために、属性１８４、１８６、１８８、および１９０に格納された情報を採用する。戻された値はｃｏｎｎｅｃｔｉｏｎＩＤ属性１８２に格納される。ＴｒａｎｓｍｉｔＱｕｅｒｙ方法１９４は、タイプＳｔｒｉｎｇの値を戻す関数である。戻り値は、属性１８２で参照されたデータベースから方法１９４のパラメータに格納された照会への回答、すなわち、ｓｑｌＳｔａｔｅｍｅｎｔ、タイプＳｔｒｉｎｇの変数を表す。
【００３４】
簡潔にするために、２つの方法のみが示されている。プログラミング分野の当業者であれば、オブジェクト１７０などのオブジェクトは、通常、様々な属性に関する値を設定および取得するためのコンストラクタ、デストラクタ、および方法を含むが、これらに限定されない、多くの追加の方法を含むことを理解されたい。ＣＳＩＯ１７０は、本発明の諸実施形態を実装するために使用可能な、メモリ・オブジェクトの単なる一例であることも理解されよう。より少ない、より多い、あるいは異なる、またはそれらすべての、属性および方法を備えた、他のメモリ・オブジェクトを採用することが可能である。加えて、本発明の諸実施形態において、機能およびデータ・ストレージを実装するためのオブジェクト１７０を採用する以外に、多くの方法がある。たとえば、諸実施形態は、関係データベースと共にコンピュータ・プログラムによって実装可能である。
【００３５】
図５は、本発明の好ましい実施形態に従った実装の一例である、Ｍｂｅａｎセットアップ・プロセス２００の流れ図である。この例では、プロセス２００はデータ・ストレージ１１２（図１）に格納され、ＣＰＵ１０４（図１）のプロセッサ（図示せず）上で実行され、そのどちらも、クライアント・システム１０２（図１）に組み込まれている。もちろん、プロセス２００、ライブラリ、および任意の他の必要なコードは、データ・ストレージ１１２以外の場所に格納することができる。たとえば、プロセス２００は、任意の必要なコードを、インターネット１２８（図１）を介してサーバ１３０（図１）から取り出すことができる。
【００３６】
プロセス２００は「Ｍｂｅａｎのセットアップ開始」ブロック２０２で開始され、すぐに「ライブラリのインポート」ブロック２０４へと進む。ブロック２０４中に、プロセス２００は、所望の機能を実装するために必要な可能性のある任意の必要なライブラリ・モジュール（図示せず）を、データ・ストレージ１１２から取り出す。「Ｍｂｅａｎクラスをロード」ブロック２０６中に、プロセス２００は、この例ではＭｂｅａｎ＿１  １１４（図１および図２）のインスタンス化である、親Ｍｂｅａｎのインスタンス化を定義するために、データ・ストレージ１１２から適切なクラス定義を取り出す。「Ｍｂｅａｎの作成」ブロック２０８中に、プロセス２００は、ブロック２０６で取り出されたクラス定義およびブロック２０４で取り出されたライブラリに対してメモリを割り振ることによって、Ｍｂｅａｎ＿１  １１４を作成する。
【００３７】
「子テーブルを作成」ブロック中に、プロセス２００は、この例ではｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６（図１および図２）である、子テーブルを作成する。子テーブルの構造の一例が、図３と共に上記で説明した、ＣｈｉｌｄＴａｂｌｅＯｂｊｅｃｔ１５０である。ｃｈｉｌｄ＿ｔａｂｌｅ＿１が作成されると、プロセス２００は「Ｍｂｅａｎのセットアップを終了」ブロック２１９へと進み、ここでプロセスは完了する。
【００３８】
ブロック２０４、２０６、２０８、および２１０に関連付けられた処理中に、たとえばメモリまたは必要なコードの特定部片が使用不可能であるなどのエラーが発生した場合、非同期割り込み２１２が生成される。その場合、プロセス２００は「例外をキャッチ」ブロック２１４へ進む。ブロック２１４中に、プロセス２００は現在実行中のいずれの処理をも中止し、移行ポイントＡへ進む。例外の生成に関連付けられた処理が実行されると、プロセス２００は「Ｍｂｅａｎのセットアップを終了」ブロック２１９に戻り、ここでプロセス２００は伝送ポイントＢを介して完了する。移行ポイントＡ、Ｂ、ならびにポイントＡとＢの間で発生する例外処理について、図８と共に以下でより詳細に説明する。
【００３９】
図６は、図５と共に紹介された実装で採用されるＭｂｅａｎ呼び出しプロセス２５０の流れ図である。この例では、プロセス２５０はデータ・ストレージ１１２（図１）に格納され、ＣＰＵ１０４（図１）のプロセッサ（図示せず）上で実行され、そのどちらも、クライアント・システム１０２（図１）に組み込まれている。プロセス２５０は、図４と共に上記で説明したＭｂｅａｎセットアップ・プロセス２００によってＭｂｅａｎ＿１  １１４がインスタンス化されると、Ｍｂｅａｎ＿１  １１４（図１および図２）によって実行される処理を表す。
【００４０】
プロセス２５０は「Ｍｂｅａｎの呼び出しを開始」ブロック２５２で開始され、すぐに「呼び出しまで待機」ブロック２５４へと進む。ブロック２５４中に、プロセス２５０は、Ｍｂｅａｎ＿１Ａ  １１８（図１および図２）またはＭｂｅａｎ＿１Ｂ  １２０（図１および図２）などの子Ｍｂｅａｎにアクセスするための要求が受信されるまで、中断状態待機である。要求が受信されると、プロセス２５０は「呼び出しを受信」ブロック２５６へと進み、その後、「呼び出しを解析」ブロック２５８へと進む。ブロック２５８中に、プロセス２５０は、特定の呼び出しと共に含められた情報に基づいて、実行と共に処理する方法を決定する。
【００４１】
「新しいＭｂｅａｎであるか」ブロック２６０中に、プロセス２５０は、ブロック２５６中に受信され、ブロック２５８中に解析された呼び出しが、未だ存在しない子Ｍｂｅａｎへのアクセス要求を表すか否かを決定する。これを表す場合、プロセス２５０は「Ｍｂｅａｎを作成」ブロック２６２へと進み、ここで要求された子Ｍｂｅａｎが作成される。ブロック２６２中に新しいＭｂｅａｎが作成されると、プロセスは、「ＩＤを割り当て」ブロック２６４中に、Ｍｂｅａｎを固有に識別するためのｃｈｉｌｄＭｂｅａｎＩＤ１８０（図４）を作成する。「テーブル・エントリを作成」ブロック２６６中に、プロセス２５０は、新しく作成されたＭｂｅａｎに関する情報を、この例ではｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６（図１および図２）である、Ｍｂｅａｎセットアップ・プロセス２００のブロック２１０（図５）中に作成されたＣｈｉｌｄＭｂｅａｎＴａｂｌｅＯｂｊｅｃｔ１５０に追加する。
【００４２】
ブロック２６０中に、ブロック２５８中に受信された呼び出しが既に存在するＭｂｅａｎに関連付けられている旨をプロセスが決定した場合、制御は「子Ｍｂｅａｎを識別」ブロック２６８へと進む。ブロック２６８中に、プロセス２５０は、ｃｈｉｌｄ＿ｔａｂｌｅ＿１  １１６に格納された情報に基づいて、受信した呼び出しを特定の子Ｍｂｅａｎに対して相関する。
【００４３】
ブロック２６８およびブロック２６６に続き、制御は「子Ｍｂｅａｎを呼び出し」ブロック２７０へと進む。ブロック２７０中にプロセス２５０は、ブロック２６８中に識別されたか、またはブロック２６２中にインスタンス化された、子Ｍｂｅａｎへの呼び出しを実行する。ブロック２５６中に受信された呼び出しが、単に子Ｍｂｅａｎの作成に関する要求であった場合、プロセス２５０は、呼び出しを実行せずにブロック２７０を通過することに留意されたい。適切なＭｂｅａｎが呼び出されると（または、ブロック２５６中に受信された呼び出しが子Ｍｂｅａｎを作成するための要求であった場合）、プロセス２５０は「結果を伝送」ブロック２７２へと進み、ここでプロセス２５０は、ブロック２５６中に受信した呼び出しを開始したプロセスに、現行の処理の結果を伝送する。結果は、図７と共に以下で説明する照会実行プロセス３００によって生成された照会結果、作成されたＭｂｅａｎを呼び出しプロセスが今後のいずれかの呼び出しで指定できるような、ブロック２６４中に生成されたｃｈｉｌｄＭｂｅａｎＩＤの戻り、あるいはその両方を、含むことができる。その後、プロセス２５０は「呼び出しまで待機」ブロック２５４に戻り、前述のように処理が続行される。
【００４４】
プロセス２５０は、Ｍｂｅａｎ＿１  １１４が実行されている限り、動作を続行するように設計される。ユーザによって明示的に、または他の関連プロセスの結果として自動的に、Ｍｂｅａｎ＿１  １１４が終了された場合、非同期割り込み２７４が生成される。割り込み２７４から、プロセス２５０は「クリーンアップ」ブロック２７６へと進み、ここでＭｂｅａｎ＿１  １１４を終了するために任意の必要な機能が実行される。クリーンアップ・プロセスの２つの例は、任意の関連子Ｍｂｅａｎの終了と、作成および実行プロセス２５０中に割り振られた可能性のある任意のメモリの解放である。最後に、プロセス２５０は「Ｍｂｅａｎの呼び出しを終了」ブロック２７９へと進み、ここでプロセス２５０は完了する。
【００４５】
図７は、図６のプロセス２５０と共に採用される照会実行プロセス３００の流れ図である。この例では、プロセス３００はデータ・ストレージ１１２（図１）に格納され、ＣＰＵ１０４（図１）のプロセッサ（図示せず）上で実行され、そのどちらも、クライアント・システム１０２（図１）に組み込まれている。プロセス３００は、Ｍｂｅａｎ＿１  １１４（図１および図２）などの親Ｍｂｅａｎへの特定の呼び出しと相関する。
【００４６】
プロセスは「照会の実行を開始」ブロック３０２で開始され、すぐに「ＭｂｅａｎＩＤおよびステートメントを取得」ブロック３０４へと進む。ブロック３０４中に、Ｍｂｅａｎ＿１  １１４は、プロセス３００を介して、特定のデータベースからのデータに対する要求を表すＳＱＬステートメントと共に、ｃｈｉｌｄＭｂｅａｎ属性１８０（図４）に格納されたようなｃｈｉｌｄＭｂｅａｎＩＤを受信する。図４および図６と共に上記で説明したように、ｃｈｉｌｄＭｂｅａｎＩＤは、特定の子Ｍｂｅａｎ、およびこの例では特定データベースへの接続を、固有に識別する。「Ｍｂｅａｎを識別」ブロック３０６中に、プロセス３００は、ブロック３０４中に受信したｃｈｉｌｄＭｂｅａｎＩＤを、この例ではＭｂｅａｎ＿１Ａ  １１８（図１および図２）である特定の子Ｍｂｅａｎと相関する。
【００４７】
「ステートメントを伝送」ブロック３０８中に、ブロック３０４中に受信したＳＱＬステートメントが、ブロック３０６中に識別されたＭｂｅａｎ＿１Ａ  １１８へと伝送される。「結果を受信」ブロック３１０中に、プロセス３００は、ブロック３０８中に伝送された照会に応答して、Ｍｂｅａｎ＿１Ａ  １１８から回答を受信する。「結果を処理」ブロック３１２中に、プロセス３００は、ブロック３１０中に受信した回答を評価し、すなわち、回答が真正な回答であるかまたはエラー・メッセージであるかを判別し、適宜動作する。「結果を伝送」ブロック３１４中に、プロセス３００は、ブロック３１０中に受信した回答、またはブロック３１２中に生成されたエラー・メッセージを、ブロック３０４中に受信したステートメントに起因するプロセスに伝送する。最後に、プロセス３００は「照会の実行を終了」ブロック３１９に進み、ここでプロセス３００は完了する。
【００４８】
開示された技術の処理によって、この例では、プロセスが、複数のデータベース接続を確立すること、およびそれらの接続をＭｂｅａｎ＿１  １１４によって管理させることを、実行可能となることに留意されたい。これにより、そうでなければ複数のＭｂｅａｎを管理することになる内容が、大幅に簡略化される。コンピューティング分野の当業者であれば、開示された技術がデータベース接続以外の多くの分野で応用されることを理解されたい。
【００４９】
図８は、図５のＭｂｅａｎセットアップ・プロセスと共に採用される例外処理プロセス３５０の流れ図である。この例では、プロセス３５０はデータ・ストレージ１１２（図１）に格納され、ＣＰＵ１０４（図１）のプロセッサ（図示せず）上で実行され、そのどちらも、クライアント・システム１０２（図１）に組み込まれている。プロセス３５０は、Ｍｂｅａｎセットアップ・プロセス２００（図５）に関連付けられた例外処理機能に関して説明されるが、説明されるか否かにかかわらず、開示された技術に関連付けられたいずれのプロセスも、同様の例外処理機能を有することになる。
【００５０】
プロセス３５０は、プロセス２００から移行ポイントＡ（図５）を介して開始され、すぐに「例外を受信」ブロック３５２へと進む。ブロック３５２中に、プロセス３５０は、プロセス２００の「例外をキャッチ」ブロック２１４（図５）中にキャッチされた例外を受信する。「メッセージをプリント」ブロック３５４中に、プロセス２００を開始したユーザまたはプロセスに適切なエラー・メッセージが伝送される。加えて、クライアント・システム１０２のモニタ１０６（図１）上に、メッセージを表示することができる。「追跡をプリント」ブロック３５６中に、プロセス３５０は、必要であればプロセス２００を開始したユーザまたはプロセスが例外の原因を決定できるように、実行追跡ファイルをログ記録する。最後に、プロセス３５０は移行ポイントＢ（図５）に入り、図５と共に上記で説明したように、「Ｍｂｅａｎのセットアップを終了」ブロック２１９に制御を戻す。
【００５１】
以上、本発明の諸実施形態について、その特定の諸実施形態を参照しながら図示および説明してきたが、当業者であれば、形および細部における前述および他の変更が実行可能であることを理解されよう。
【図１】
2011504268.tif 000003
【図２】
2011504268.tif 000004
【図３】
2011504268.tif 000005
【図４】
2011504268.tif 000006
【図５】
2011504268.tif 000007
【図６】
2011504268.tif 000008
【図７】
2011504268.tif 000009
【図８】
2011504268.tif 000010
【手続補正書】
【提出日】平成22年5月27日(2010.5.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
親クラス・オブジェクト記述に基づいて、親クラス・オブジェクトに関するメモリを割り振るステップと、
前記親クラス・オブジェクトにより、子クラス・オブジェクト記述に基づいて第１の子クラス・オブジェクトに関するメモリを割り振るステップと、
前記第１の子クラス・オブジェクトに、第２の子クラス・オブジェクトに対応する第２の識別子とは異なる第１の識別子を割り当てるステップであって、前記第２の子クラス・オブジェクトも、前記子クラス・オブジェクト記述に基づいて前記親クラス・オブジェクトによって割り振られる、ステップと、
前記第１の子クラス・オブジェクトを前記第２の子クラス・オブジェクトと区別できるように、前記第１の識別子を格納するステップと、
を含む、方法。
【請求項２】
前記第１の子クラス・オブジェクトにクライアント状態情報を渡すステップと、
前記第１の子クラス・オブジェクトと共に、前記クライアント状態情報を格納するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記クライアント状態情報が、関連付けられたクライアントとデータベースとの間の接続に対応する情報である、請求項１に記載の方法。
【請求項４】
前記親クラス・オブジェクトを呼び出すステップと、
前記親クラス・オブジェクトへの前記呼び出しと共に、前記親クラス・オブジェクトに識別子を渡すステップと、
前記渡された識別子を、前記第１の識別子または前記第２の識別子のいずれかと相関するステップと、
前記渡された識別子を、それぞれ前記第１の識別子または前記第２の識別子のいずれと相関するかに基づいて、前記第１の子クラス・オブジェクトまたは前記第２の子クラス・オブジェクトのいずれかを呼び出すステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記親クラス・オブジェクト、前記第１の子クラス・オブジェクト、および前記第２の子クラス・オブジェクトが、ＪＡＶＡ（Ｒ）プログラミング・オブジェクトである、請求項１に記載の方法。
【請求項６】
前記第１の子クラス・オブジェクトが第１のデータベースへの接続を提供し、前記第２の子クラス・オブジェクトが第２のデータベースへの接続を提供する、請求項１に記載の方法。
【請求項７】
前記第１の子クラス・オブジェクトが第１の通信チャネルへの接続を提供し、前記第２の子クラス・オブジェクトが第２の通信チャネルへの接続を提供する、請求項１に記載の方法。
【請求項８】
親クラス・オブジェクト記述を記憶するための手段と、
子クラス・オブジェクト記述を記憶するための手段と、
前記親クラス・オブジェクト記述に従って生成された親クラス・オブジェクトにより、前記子クラス・オブジェクト記述に基づいて子クラス・オブジェクトを生成するための手段と、
前記第１の子クラス・オブジェクトに対応する第１の識別子を記憶するための手段と、
前記第１の識別子に基づいて、前記第１の子クラス・オブジェクトを第２の子クラス・オブジェクトと区別するための手段であって、前記第２の子クラス・オブジェクトが、前記子クラス・オブジェクト記述に基づいており、前記親クラス・オブジェクトによって生成される、手段と、
を備える、システム。
【請求項９】
前記親クラス・オブジェクトを生成するクライアントに対応するクライアント状態情報を記憶する手段と、
前記クライアント状態情報を前記第１の子クラス・オブジェクトに渡すための手段と、
前記クライアント状態情報を前記第１の子クラス・オブジェクトと共に格納するための手段と、
をさらに備える、請求項８に記載のシステム。
【請求項１０】
前記クライアント状態情報が、前記クライアントとデータベースとの間の接続に対応する情報である、請求項９に記載のシステム。
【請求項１１】
前記親クラス・オブジェクトを呼び出すための手段と、
前記親クラス・オブジェクトへの前記呼び出しと共に、前記親クラス・オブジェクトに識別子を渡すための手段と、
前記渡された識別子を、前記第１の識別子または前記第２の識別子のいずれかと相関するための手段と、
前記渡された識別子を、それぞれ前記第１の識別子または前記第２の識別子のいずれと相関するかに基づいて、前記第１の子クラス・オブジェクトまたは前記第２の子クラス・オブジェクトのいずれかを呼び出すための手段と、
をさらに備える、請求項８に記載のシステム。
【請求項１２】
親クラス・オブジェクト記述に基づいて、親クラス・オブジェクトに関するメモリを割り振るための手段、
前記親クラス・オブジェクトにより、子クラス・オブジェクト記述に基づいて第１の子クラス・オブジェクトに関するメモリを割り振るための手段、
前記第１の子クラス・オブジェクトに、第２の子クラス・オブジェクトに対応する第２の識別子とは異なる第１の識別子を割り当てるための手段であって、前記第２の子クラス・オブジェクトも、前記子クラス・オブジェクト記述に基づいて前記親クラス・オブジェクトによって割り振られる、手段、
前記第１の子クラス・オブジェクトを前記第２の子クラス・オブジェクトと区別できるように、前記第１の識別子を格納するための手段、
としてコンピュータを機能させる、コンピュータ・プログラム。
【請求項１３】
請求項１〜７のいずれかに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【国際調査報告】
2011504268.tif 000011
2011504268.tif 000012
2011504268.tif 000013