(57)【要約】【課題】クライアント・オブジェクトがサーバ・オブジェクトに対してリクエストした処理の実行とは非同期で別の処理を実行しながら、且つサーバ・オブジェクトへのリクエスト伝達の成功または失敗を確認することの可能な非同期リクエスト伝達システムを提供すること。【解決手段】クライアント・オブジェクト３は、サーバ・オブジェクト２に委譲する処理を示すリクエスト構造体を作成しての要求受付部４にリクエスト伝達を依頼する。要求受付部４は、リクエスト蓄積部６にリクエスト構造体を格納して処理の実行権をクライアント・オブジェクト３に返却する。クライアント・オブジェクト３はこの時点でサーバ・オブジェクト２に委譲した処理とは非同期で別の処理を継続することができる。リクエスト構造体はリクエスト送出部５に取り出され、リクエスト送出部５は受信先記憶部７からリクエスト識別子の合致するサーバ・オブジェクト２を検索してリクエストを伝達する。【選択図】      図４
2008052358.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続される分散オブジェクト環境においてクライアント・オブジェクトからの非同期リクエストを共通のインタフェースを用いて実施する非同期リクエスト伝達システムであって、
通知先ＩＤとその通知先ＩＤに対応するクライアント・オブジェクトの情報群である通知先記憶部と、
リクエスト識別子とその識別子に対応するリクエストを受信するサーバ・オブジェクトの情報群である受信先記憶部と、
クライアント・オブジェクトからサーバ・オブジェクトへ伝達するリクエストを蓄積するメッセージ・キューであるリクエスト蓄積部と、
前記受信先記憶部に対する受信先の登録および解除、前記通知先記憶部に対する通知先の登録及び解除、および前記リクエスト蓄積部に対するリクエストの格納を前記インタフェースの種類に応じて実施する要求受付部と、
前記リクエスト蓄積部からリクエストを取り出し、リクエストの内容に応じて、受信先となるサーバ・オブジェクトへのリクエスト伝達および、通知先となるクライアント・オブジェクトへのリクエスト伝達結果を通知するリクエスト送出部とを具備することを特徴とする非同期リクエスト伝達システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークを介して接続される複数の計算機要素に対して、分散オブジェクト環境、特にＣＯＲＢＡを導入したシステムと、その基盤ソフトウェアに関する。特に典型的な応用事例としては、単数または複数の計算機サーバをネットワークに接続し、ある計算機により他の計算機へ処理を委譲するシステムがある。
【背景技術】
【０００２】
ネットワーク・アプリケーションを構築する主要な技術に分散オブジェクト指向技術が知られている。その標準的技術のひとつとして、ＯＭＧ（Object Management Group）が策定したＣＯＲＢＡ（Common Object Request Broker Architecture）が世界的に普及している。特許文献１に、ＣＯＲＢＡを適用可能な技術の例が開示されている。
【０００３】
ＣＯＲＢＡを特徴付ける仕様の一つに、ワンウェイ・リクエスト・オペレーションというリクエスト伝達方式がある。ワンウェイ・リクエスト・オペレーションは、サーバ・オブジェクトがリクエストを受け付けることを待たずにクライアント・オブジェクトのオペレーションが完了するリクエスト伝達方式であり、オペレーションを実行したクライアント・オブジェクトは、サーバ・オブジェクトの処理の実行とは非同期に別の処理を実行することができる。
【０００４】
ところで、ワンウェイ・リクエスト・オペレーションには、サーバ・オブジェクトからの応答やリクエスト伝達の成功または失敗を示す例外を定義することができない。このためクライアント・オブジェクトは、サーバ・オブジェクトにリクエストした処理とは非同期に処理を実行して、且つサーバ・オブジェクトへのリクエスト伝達が成功したか失敗したかを確認することができない。
【特許文献１】特開２００５−２５９１０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
以上述べたようにＣＯＲＢＡにおけるワンウェイ・リクエスト・オペレーションには、サーバ・オブジェクトからの応答やリクエスト伝達の成功または失敗を示す例外を定義することができない。よってクライアント・オブジェクトは、サーバ・オブジェクトにリクエストした処理とは非同期で別の処理を実行しつつサーバ・オブジェクトへのリクエスト伝達の成功／失敗を確認することができない。
【０００６】
この発明は上記事情によりなされたもので、その目的は、クライアント・オブジェクトがサーバ・オブジェクトに対してリクエストした処理の実行とは非同期で別の処理を実行しながら、且つサーバ・オブジェクトへのリクエスト伝達の成功または失敗を確認することの可能な非同期リクエスト伝達システムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためにこの発明の一態様によれば、ネットワークを介して接続される分散オブジェクト環境においてクライアント・オブジェクトからの非同期リクエストを共通のインタフェースを用いて実施する非同期リクエスト伝達システムであって、通知先ＩＤとその通知先ＩＤに対応するクライアント・オブジェクトの情報群である通知先記憶部と、リクエスト識別子とその識別子に対応するリクエストを受信するサーバ・オブジェクトの情報群である受信先記憶部と、クライアント・オブジェクトからサーバ・オブジェクトへ伝達するリクエストを蓄積するメッセージ・キューであるリクエスト蓄積部と、前記受信先記憶部に対する受信先の登録および解除、前記通知先記憶部に対する通知先の登録及び解除、および前記リクエスト蓄積部に対するリクエストの格納を前記インタフェースの種類に応じて実施する要求受付部と、前記リクエスト蓄積部からリクエストを取り出し、リクエストの内容に応じて、受信先となるサーバ・オブジェクトへのリクエスト伝達および、通知先となるクライアント・オブジェクトへのリクエスト伝達結果を通知するリクエスト送出部とを具備することを特徴とする非同期リクエスト伝達システムが提供される。
【発明の効果】
【０００８】
この発明によれば、クライアント・オブジェクトがサーバ・オブジェクトに対してリクエストした処理の実行とは非同期で別の処理を実行しながら、且つサーバ・オブジェクトへのリクエスト伝達の成功または失敗を確認することの可能な非同期リクエスト伝達システムを提供することができる。
【発明を実施するための最良の形態】
【０００９】
図１はこの発明に係る非同期リクエスト伝達システムの実施の形態を示す機能ブロック図である。図１において、この実施形態に係わる非同期リクエスト伝達システム１は、単数または複数のサーバ・オブジェクト２とクライアント・オブジェクト３により利用される。サーバ・オブジェクト２およびクライアント・オブジェクト３は、非同期リクエスト伝達システム１が提供するインタフェースを利用して、リクエストの受信先登録または解除、リクエストの伝達成功または失敗の通知先登録または解除および、リクエストの伝達を実施する。図２に、非同期リクエスト伝達システム１により提供されるインタフェースの一例を示す。
【００１０】
クライアント・オブジェクト３、非同期リクエスト伝達システム１、およびサーバ・オブジェクト２の間で伝達されるリクエストは、例えば図３に示す構造を使用する。非同期リクエスト伝達システム１は、図３のリクエスト識別子によりリクエストの受信先を識別して、その受信先にリクエストを送出する。また、通知先ＩＤによりリクエストの伝達成功または失敗の通知先を識別して、その結果を通知する。
【００１１】
図１において、非同期リクエスト伝達システム１は、要求受付部４、リクエスト送出部５、リクエスト蓄積部６、受信先記憶部７、および通知先記憶部８を備える。このうち受信先記憶部７は、リクエスト識別子と、その識別子に対応するリクエストを受信する単数または複数のサーバ・オブジェクト２の情報群である。
【００１２】
通知先記憶部８は、通知先ＩＤと、その通知先ＩＤに対応するクライアント・オブジェクト３の情報群である。リクエスト蓄積部６は、クライアント・オブジェクト３からサーバ・オブジェクト２へ伝達するリクエストを蓄積するＦＩＦＯ（First-In-First-Out）形式のメッセージ・キューである。
【００１３】
リクエスト送出部５は、リクエスト蓄積部６からリクエストを取り出し、リクエストの内容に応じて、受信先となるサーバ・オブジェクト２へのリクエスト伝達および、通知先となるクライアント・オブジェクト３へのリクエスト伝達結果の通知を実施するスレッドである。
【００１４】
要求受付部４は、非同期リクエスト伝達システム１が提供するインタフェース（図２）を受け付ける窓口となるスレッドである。要求受付部４は、インタフェースの種類に応じて受信先記憶部７に対する受信先の登録および解除、通知先記憶部８に対する通知先の登録及び解除、リクエスト蓄積部６に対するリクエストの格納を実施する。
【００１５】
次に図４に示すシーケンスにしたがって、この実施形態の処理の順序を説明する。まず、クライアント・オブジェクト３は、サーバ・オブジェクト２に委譲する処理を示すリクエスト構造体を作成して（図４のＰ１）、非同期リクエスト伝達システム１の要求受付部４にリクエスト伝達を依頼する（図４のＰ２）。
【００１６】
これを受け取った要求受付部４は、リクエスト蓄積部６にリクエスト構造体を格納（図４のＰ３）して即座に処理の実行権をクライアント・オブジェクト３に返却する（図４のＰ４）。クライアント・オブジェクト３は、この時点でサーバ・オブジェクト２に委譲した処理とは非同期で別の処理を継続することが可能となる。
【００１７】
リクエスト蓄積部６に格納されたリクエスト構造体は、リクエスト送出部５に取り出される（図４のＰ６）。リクエスト構造体を取り出したリクエスト送出部５は、受信先記憶部７からリクエスト識別子の合致する単数または複数のサーバ・オブジェクト２を検索して（図４のＰ７）、リクエストを伝達する（図４のＰ８）。
【００１８】
リクエスト送出部５は、リクエストの伝達が成功したことをサーバ・オブジェクト２の処理が終了することで認識し、失敗したことをＣＯＲＢＡ例外の発生によって認識する（図４のＰ９）。リクエストの伝達の成功または失敗を確認したリクエスト送出部５は、リクエスト構造体の通知先ＩＤに合致するクライアント・オブジェクト３を通知先記憶部８から検索して（図４のＰ１０）、通知先ＩＤの合致したクライアント・オブジェクト３に対して伝達結果を通知する（図４のＰ１１）。サーバ・オブジェクト２へのリクエスト伝達の成功または失敗の通知を受けたクライアント・オブジェクト３は、必要に応じて成功時処理または失敗時処理を実施する。たとえば、失敗時にはリクエスト伝達のリトライを実施する。
【００１９】
以上、説明したように本発明によれば、クライアント・オブジェクトは、サーバ・オブジェクトにリクエストした処理の実行とは非同期で処理を継続して、サーバ・オブジェクトへのリクエスト伝達結果を確認することが可能になる。特にクライアント・オブジェクトとサーバ・オブジェクトが、別の計算機で稼動している場合、プロセッサのリソースを有効に活用することができる。
【００２０】
なお、この発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００２１】
【図１】この発明に係る非同期リクエスト伝達システムの実施の形態を示す機能ブロック図。
【図２】図１の非同期リクエスト伝達システムが提供するインタフェースの一例を示す図。
【図３】図１の非同期リクエスト伝達システムが利用するリクエストの構造の一例を示す図。
【図４】図１のシステムにおける処理手順を示すシーケンスを示す図。
【符号の説明】
【００２２】
１…非同期リクエスト伝達システム、２…サーバ・オブジェクト、３…クライアント・オブジェクト、４…要求受付部、５…リクエスト送出部、６…リクエスト蓄積部、７…受信先記憶部、８…通知先記憶部
【図１】
2008052358.tif 000003
【図２】
2008052358.tif 000004
【図３】
2008052358.tif 000005
【図４】
2008052358.tif 000006