(57)【要約】【課題】  分散オブジェクト処理を負荷状態に基づいて効率的に実行することが可能な技術を提供する。【解決手段】  分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御方法において、オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答するステップと、オブジェクトの割当の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答するステップと、オブジェクトの実行の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答するステップとを有するものである。【選択図】        図１
2005165540.tif 000002
【特許請求の範囲】
【請求項１】
分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御方法において、
オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答するステップと、
オブジェクトの割当の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答するステップと、
オブジェクトの実行の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答するステップとを有することを特徴とするプログラム制御方法。
【請求項２】
前記オブジェクトを実行した場合に当該オブジェクトの実行時の処理負荷を測定し、そのオブジェクトの負荷状態を示す記憶手段上のオブジェクト情報を更新することを特徴とする請求項１に記載されたプログラム制御方法。
【請求項３】
実行要求の行われたオブジェクトの負荷が所定の閾値以上であるか、そのオブジェクトが閉塞状態である場合に、そのオブジェクトを実行する他のディスパッチャへのリファレンスを記憶手段から読み出して、そのディスパッチャへ前記実行要求を通信手段により転送することを特徴とする請求項１または請求項２のいずれかに記載されたプログラム制御方法。
【請求項４】
前記オブジェクト情報を記憶手段上から読み出して通信手段により他のプログラム制御装置へ通知することを特徴とする請求項１乃至請求項３のいずれか１項に記載されたプログラム制御方法。
【請求項５】
自装置上のオブジェクトの負荷状態が変化した場合に、そのオブジェクトの負荷状態を示すオブジェクト情報を記憶手段上から読み出して他のプログラム制御装置へ通知することを特徴とする請求項１乃至請求項４のいずれか１項に記載されたプログラム制御方法。
【請求項６】
自装置上のオブジェクトの負荷状態を示すオブジェクト情報の最終更新時刻から所定時間が経過した場合に、そのオブジェクト情報を記憶手段上から読み出して他のプログラム制御装置へ通知することを特徴とする請求項１乃至請求項５のいずれか１項に記載されたプログラム制御方法。
【請求項７】
分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御装置において、
オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答するネーミングサービス部と、
オブジェクトの割当の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答するオブジェクト割当制御部と、
オブジェクトの実行の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答するディスパッチャとを備えることを特徴とするプログラム制御装置。
【請求項８】
分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御システムにおいて、
オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答する第１のネーミングサービス部と、
オブジェクトの割当の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答する第１のオブジェクト割当制御部と、
オブジェクトの実行の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答する第１のディスパッチャと、
前記オブジェクト情報を記憶手段上から読み出して通信手段により第２のプログラム制御装置へ通知する第１のオブジェクト情報共有制御部とを備える第１のプログラム制御装置と、
前記通知されたオブジェクト情報を通信手段により受信して記憶手段上のオブジェクト情報を更新する第２のオブジェクト情報共有制御部と、
オブジェクトの名前解決の際に、前記更新したオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答する第２のネーミングサービス部と、
オブジェクトの割当の際に、前記更新したオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答する第２のオブジェクト割当制御部と、
オブジェクトの実行の際に、前記更新したオブジェクト情報を記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答する第２のディスパッチャとを備える第２のプログラム制御装置とを具備することを特徴とするプログラム制御システム。
【請求項９】
分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御方法をコンピュータに実行させる為のプログラムにおいて、
オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答するステップと、
オブジェクトの割当の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答するステップと、
オブジェクトの実行の際に、前記オブジェクト情報を記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答するステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御方法をコンピュータに実行させる為のプログラムにおいて、
第１のプログラム制御装置でのオブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を第１のプログラム制御装置の記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答するステップと、
第１のプログラム制御装置でのオブジェクトの割当の際に、前記オブジェクト情報を第１のプログラム制御装置の記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答するステップと、
第１のプログラム制御装置でのオブジェクトの実行の際に、前記オブジェクト情報を第１のプログラム制御装置の記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答するステップと、
前記オブジェクト情報を第１のプログラム制御装置の記憶手段上から読み出して通信手段により第２のプログラム制御装置へ通知するステップと、
前記通知されたオブジェクト情報を通信手段により受信して第２のプログラム制御装置の記憶手段上のオブジェクト情報を更新するステップと、
第２のプログラム制御装置でのオブジェクトの名前解決の際に、前記更新したオブジェクト情報を第２のプログラム制御装置の記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンスを通信手段により応答するステップと、
第２のプログラム制御装置でのオブジェクトの割当の際に、前記更新したオブジェクト情報を第２のプログラム制御装置の記憶手段上から読み出して負荷が所定値より低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャへのリファレンスを通信手段により応答するステップと、
第２のプログラム制御装置でのオブジェクトの実行の際に、前記更新したオブジェクト情報を第２のプログラム制御装置の記憶手段上から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信手段により応答するステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御処理に関するものである。
【背景技術】
【０００２】
従来の分散オブジェクトシステムにおいて、クライアント側の処理装置がサーバ側の処理装置から所定のサービス（プログラムやオブジェクトの実行により実現される機能）を受ける場合、まずクライアント側処理装置は、ネーミングサービスを行うサーバ側処理装置に対してオブジェクトの名前解決の為の問い合わせを行い、オブジェクトへのリファレンス（分散オブジェクト環境でオブジェクトを一意に特定する為の情報）を受信する。そしてクライアント側処理装置は、前記受信したリファレンスで示される特定のサーバ側処理装置に対して前記サービスの提供を要求し、当該サーバ側処理装置上での該当オブジェクトのメソッドの呼び出しにより得られた処理結果をそのサーバ側処理装置から受け取っている。
【０００３】
また従来の分散オブジェクトシステムでは、ファクトリ（オブジェクトの割当を行う処理部）経由でオブジェクトへのリファレンスを取得する処理も行われる様になってきている。すなわちクライアント側処理装置は、ネーミングサービスを行うサーバ側処理装置からファクトリへのリファレンスを取得した後、そのファクトリリファレンスで示されるサーバ側処理装置へオブジェクトの割当要求を行ってオブジェクトへのリファレンスを取得し、そのオブジェクトリファレンスで示されるサーバ側処理装置に対してメソッドの呼び出しを要求して処理結果を受け取っている。
【０００４】
また前記の様な分散オブジェクト環境におけるネーミングサービスや、分散処理システムの故障耐性を改善し且つ効率的なスケーラビリティを可能とする技術等に関しては、例えば特許文献１に記載されている。
【特許文献１】特表２００２−５２９８６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前記従来の分散オブジェクトシステムでは、サーバ側処理装置の負荷状態や時間経過に伴う負荷状態の変化を考慮せずにリファレンスを提供している為、リファレンスを取得してから処理要求を行うまでの間に負荷状態が変化した場合、サーバ側処理装置に負荷の偏りが発生するという問題がある。
【０００６】
すなわち、クライアント側処理装置がネーミングサービスを行うサーバ側処理装置からファクトリへのリファレンスを取得してからそのファクトリリファレンスで示されるサーバ側処理装置へオブジェクトの割当要求を行うまでの間に負荷状態が変化した場合、そのファクトリの処理を行うサーバ側処理装置での処理負荷に偏りが生じたり、またオブジェクトの割当によりオブジェクトへのリファレンスを取得してからそのオブジェクトリファレンスで示されるサーバ側処理装置に対してメソッドの呼び出しを要求するまでの間に負荷状態が変化した場合、そのメソッドの呼び出しを行うサーバ側処理装置での処理負荷に偏りが生じ、前記の様なファクトリの処理やメソッドの呼び出しを行うサーバ側処理装置での処理負荷の偏りにより分散オブジェクトシステム全体の性能が低下するという問題がある。
【０００７】
本発明の目的は上記問題を解決し、分散オブジェクト処理を負荷状態に基づいて効率的に実行することが可能な技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御装置において、オブジェクト割当制御部リファレンスの応答、ディスパッチャリファレンスの応答及びオブジェクトの実行を一元管理されたオブジェクト情報により行うものである。
【０００９】
分散オブジェクト処理により所定のサービスを受ける場合、まずクライアント側の情報処理装置は、そのサービスを提供するオブジェクトの名前解決を行うプログラム制御装置に対して、オブジェクトの名前解決の為の問い合わせを通信装置により送信する。
【００１０】
本発明のプログラム制御装置（計算機や情報処理装置、またはその様な処理を実施するプログラムやオブジェクトでも良い）では、通信装置によりクライアント側の情報処理装置からオブジェクトの名前解決の問い合わせを受信すると、記憶装置上のオブジェクト情報管理テーブルを参照し、オブジェクトの負荷状態を示すオブジェクト情報をオブジェクト情報管理テーブルから読み出して前記問い合わせの行われたオブジェクトの負荷状態を示す情報を取得し、前記オブジェクトの内で負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択する。そして、その選択したオブジェクトの割当を行うオブジェクト割当制御部へのリファレンス（分散オブジェクト環境で前記オブジェクトの割当を行うオブジェクト割当制御部を一意に特定する為の情報であり、前記オブジェクト割当制御部を備えるプログラム制御装置に到達する為のネットワークプロトコルやアドレス情報と、プログラム制御装置内でオブジェクト割当制御部を特定する為の情報を含む。）を前記オブジェクト情報管理テーブルから読み出した後、その読み出したリファレンスを通信装置によりクライアント側の情報処理装置へ応答する。
【００１１】
クライアント側の情報処理装置は、前記応答により得られたオブジェクト割当制御部リファレンスで識別されるプログラム制御装置へ、前記オブジェクトの割当要求を通信装置により送信する。
【００１２】
本発明のプログラム制御装置は、通信装置によりクライアント側の情報処理装置からオブジェクトの割当要求を受信すると、記憶装置上のオブジェクト情報管理テーブルを参照し、オブジェクトの負荷状態を示すオブジェクト情報をオブジェクト情報管理テーブルから読み出して前記割当要求の行われたオブジェクトの負荷状態を示す情報を取得し、前記オブジェクトの内で負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択する。そして、その選択したオブジェクトの実行を行うディスパッチャへのリファレンス（分散オブジェクト環境で前記オブジェクトの実行を行うディスパッチャを一意に特定する為の情報であり、前記ディスパッチャを備えるプログラム制御装置に到達する為のネットワークプロトコルやアドレス情報と、プログラム制御装置内でディスパッチャを特定する為の情報を含む。）を前記オブジェクト情報管理テーブルから読み出した後、その読み出したリファレンスを通信装置によりクライアント側の情報処理装置へ応答する。
【００１３】
クライアント側の情報処理装置は、前記応答により得られたディスパッチャリファレンスで識別されるプログラム制御装置へ、前記オブジェクトの実行要求を通信装置により送信する。
【００１４】
本発明のプログラム制御装置は、通信装置によりクライアント側の情報処理装置からオブジェクトの実行要求を受信すると、記憶装置上のオブジェクト情報管理テーブルを参照し、オブジェクトの負荷状態を示すオブジェクト情報をオブジェクト情報管理テーブルから読み出して前記実行要求の行われたオブジェクトの負荷状態を示す情報を取得し、前記オブジェクトの内で負荷が所定の閾値未満であるオブジェクトを選択して実行する。そして、その実行したオブジェクトの処理結果を通信装置によりクライアント側の情報処理装置へ応答する。
【発明の効果】
【００１５】
本発明によれば分散オブジェクト処理を実行する際に、オブジェクト割当制御部リファレンスの応答、ディスパッチャリファレンスの応答及びオブジェクトの実行を一元管理されたオブジェクト情報により行うので、分散オブジェクト処理を負荷状態に基づいて効率的に実行することが可能である。
【発明を実施するための最良の形態】
【００１６】
以下に分散オブジェクト処理におけるプログラムの実行を制御する一実施形態のプログラム制御装置について説明する。図１、図２、図３、図１７及び図１８のクライアントやサーバ、若しくはクライアント内の各処理やサーバ内の各処理部は、プログラム若しくはオブジェクトやハードウェアで実現されるものとする。
【００１７】
図１は本実施形態のプログラム制御装置の概略構成を示す図である。図１に示す様に本実施形態のプログラム制御システムは、サーバ側処理装置１００及び１１０と、クライアント側処理装置１２０とを有している。
【００１８】
サーバ側処理装置１００及び１１０は、クライアント側処理装置１２０からの問い合わせや処理要求を処理し、オブジェクト割当制御部リファレンスの応答、ディスパッチャリファレンスの応答及びオブジェクトの実行を一元管理されたオブジェクト情報により行って、分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御装置である。
【００１９】
クライアント側処理装置１２０は、サーバ側処理装置１００及び１１０への問い合わせや処理要求を行い、オブジェクト割当制御部リファレンス、ディスパッチャリファレンスや、オブジェクトの実行結果を受け取るクライアント側の情報処理装置である。
【００２０】
サーバ側処理装置１００は、ネーミングサービス部１０１と、オブジェクト割当制御部１０２と、オブジェクト情報共有制御部１０３と、監視部１０４と、ディスパッチャ１０５と、通信制御部１０６とを有している。
【００２１】
ネーミングサービス部１０１は、オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部１０２へのリファレンスを通信装置により応答する処理部である。
【００２２】
オブジェクト割当制御部１０２は、オブジェクトの割当の際に、前記オブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャ１０５へのリファレンスを通信装置により応答する処理部である。
【００２３】
オブジェクト情報共有制御部１０３は、前記オブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して通信装置によりサーバ側処理装置１１０等の他のサーバ側処理装置へ通知する処理部である。
【００２４】
監視部１０４は、他のサーバ側処理装置の動作状況を監視する処理部である。ディスパッチャ１０５は、オブジェクトの実行の際に、前記オブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷が所定の閾値未満である場合に当該オブジェクトを実行し、その処理結果を通信装置により応答する処理部である。通信制御部１０６は、通信装置を介した他のサーバ側処理装置やクライアント側処理装置１２０との通信を制御する処理部である。
【００２５】
サーバ側処理装置１００をネーミングサービス部１０１、オブジェクト割当制御部１０２、オブジェクト情報共有制御部１０３、監視部１０４、ディスパッチャ１０５及び通信制御部１０６として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２６】
またサーバ側処理装置１００は、オブジェクト情報管理テーブル１０７と、コンテナ１０８とを有している。
オブジェクト情報管理テーブル１０７は、オブジェクトの負荷状態を示すオブジェクト情報を格納するテーブルである。コンテナ１０８は、各オブジェクトを格納する記憶領域である。
【００２７】
図２は本実施形態のサーバ側処理装置１００の内部構成を示す図である。図２に示す様に本実施形態のサーバ側処理装置１００は、受付処理部２０１〜２０３と、受付処理部２１１〜２１３と、負荷制御部２１４と、閉塞制御部２１５と、転送制御部２１６と、同時実行制御部２１７とを有している。
【００２８】
受付処理部２０１〜２０３は、各オブジェクトの割当要求の受付を行う処理部である。受付処理部２１１〜２１３は、各オブジェクトの実行要求の受付を行う処理部である。負荷制御部２１４は、実行要求が行われたオブジェクトの負荷状態を確認したり、オブジェクトの実行による負荷状態の変化を管理する処理部である。
【００２９】
閉塞制御部２１５は、実行要求が行われたオブジェクトの閉塞状態を確認したり、オブジェクトの閉塞状態を制御する処理部である。転送制御部２１６は、実行要求の行われたオブジェクトの負荷が所定の閾値以上であるか、そのオブジェクトが閉塞状態である場合に、そのオブジェクトを実行する他のディスパッチャへのリファレンスを記憶装置から読み出して、そのディスパッチャへ前記実行要求を通信装置により転送する処理部である。同時実行制御部２１７は、各オブジェクトの同時実行を制御する処理部である。
【００３０】
サーバ側処理装置１００を受付処理部２０１〜２０３、受付処理部２１１〜２１３、負荷制御部２１４、閉塞制御部２１５、転送制御部２１６及び同時実行制御部２１７として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００３１】
図３は本実施形態のサーバ側処理装置１１０の内部構成を示す図である。図３に示す様にサーバ側処理装置１１０の内部構成は、サーバ側処理装置１００の内部構成と同様である。
【００３２】
図４は本実施形態のオブジェクト情報管理テーブル１０７の一例を示す図である。図４に示す様にオブジェクト情報管理テーブル１０７には、各オブジェクトの登録名を示すオブジェクト登録名４０１と、オブジェクト割当制御部１０２へのリファレンスを示すオブジェクト割当制御部リファレンス４０２と、ディスパッチャ１０５へのリファレンスを示すディスパッチャリファレンス４０３と、各オブジェクトに対応する負荷の情報としてオブジェクトの最終更新時刻４０６におけるＣＰＵやメモリの使用率等を示す負荷状態４０４と、そのオブジェクトが実行可能な状態であるかどうかを示す閉塞状態４０５と、そのオブジェクト情報が最後に更新された時刻を示す最終更新時刻４０６とが格納されている。
【００３３】
ここでオブジェクト割当制御部リファレンス４０２は、分散オブジェクト環境でオブジェクト割当制御部１０２を一意に特定する為の情報であり、オブジェクト割当制御部１０２を備えるサーバ側処理装置１００または１１０に到達する為のネットワークプロトコルやアドレス情報と、サーバ側処理装置１００または１１０内でオブジェクト割当制御部１０２の受付処理部２０１〜２０３の何れかを特定する為の情報を含んでいるものとする。またディスパッチャリファレンス４０３は、分散オブジェクト環境でディスパッチャ１０５を一意に特定する為の情報であり、ディスパッチャ１０５を備えるサーバ側処理装置１００または１１０に到達する為のネットワークプロトコルやアドレス情報と、サーバ側処理装置１００または１１０内でディスパッチャ１０５の受付処理部２１１〜２１３の何れかを特定する為の情報を含んでいるものとする。
【００３４】
図５は本実施形態の同時実行制御部２１７の内部構成を示す図である。図５に示す様に同時実行制御部２１７の実行制御情報テーブル５００には、各オブジェクトについて、現在実行中の数と、最大実行数と、実行待ち数とが格納されている。
【００３５】
図６は本実施形態のクライアント側処理装置１２０の処理手順を示すフローチャートである。ステップ６０１でクライアント側処理装置１２０の名前解決部は、クライアントプログラムの処理により所定のオブジェクトでの処理が要求されると、図７の様にオブジェクトの名前解決を行う。
【００３６】
ステップ６０２でクライアント側処理装置１２０は、ステップ６０１での処理結果を参照して正しく名前解決が行われたかどうかを調べ、前記処理結果中にオブジェクト割当制御部１０２へのリファレンスが含まれており、正しく名前解決が行われた場合にはステップ６０３へ進み、そうでない場合にはエラーとして処理を終了する。
【００３７】
ステップ６０３でクライアント側処理装置１２０は、ステップ６０１の処理で得られたリファレンスで示されるサーバ側処理装置に対して通信制御部及び通信装置によりオブジェクト割当要求を送信する。
【００３８】
ステップ６０４でクライアント側処理装置１２０は、前記オブジェクト割当要求に対する処理結果を通信制御部及び通信装置によりサーバ側処理装置から受信して割当が成功したかどうかを調べ、前記処理結果中にディスパッチャ１０５へのリファレンスが含まれており、割当が成功している場合にはステップ６０５へ進み、そうでない場合にはエラーとして処理を終了する。
【００３９】
ステップ６０５でクライアント側処理装置１２０は、ステップ６０４の処理で受信したリファレンスで示されるサーバ側処理装置に対して通信制御部及び通信装置によりビジネスメソッドの処理要求を必要なだけ行い、その処理結果を通信制御部及び通信装置によりサーバ側処理装置から受信してクライアントプログラムへ渡す。
【００４０】
図７は本実施形態のクライアント側処理装置１２０内でのオブジェクトの名前解決処理の処理手順を示すフローチャートである。クライアント側処理装置１２０は、ステップ６０１でオブジェクトの名前解決が開始されると図７に示す様な処理を実行する。
【００４１】
ステップ７０１でクライアント側処理装置１２０は、オブジェクトの名称とそのオブジェクトの割当を行うオブジェクト割当制御部１０２へのリファレンスを格納しているキャッシュ内を参照し、クライアントプログラムにより処理要求の行われたオブジェクトに対応するリファレンスを検索する。
【００４２】
ステップ７０２では、前記検索の結果、前記処理要求の行われたオブジェクトに対応するリファレンスをキャッシュ内で発見したかどうかを調べ、発見した場合にはステップ７０３へ進み、そうでない場合にはステップ７０４へ進む。
【００４３】
ステップ７０３では、前記キャッシュ内での検索により発見したリファレンスを呼び出し元の処理へ返し、名前解決処理を終了する。
【００４４】
一方、ステップ７０４では、前記処理要求の行われたオブジェクトの名前解決を行う為の問い合わせを通信制御部及び通信装置によりサーバ側処理装置１００のネーミングサービス部１０１に送信して問い合わせを行う。
【００４５】
ステップ７０５では、前記問い合わせに対する処理結果を通信制御部及び通信装置によりサーバ側処理装置１００から受信してリファレンスが発見されたかどうかを調べ、前記処理結果中にオブジェクト割当制御部１０２へのリファレンスが含まれており、リファレンスが発見されている場合にはステップ７０６へ進み、そうでない場合にはエラーとして処理を終了する。
【００４６】
ステップ７０６では、ステップ７０５でサーバ側処理装置１００から受信したリファレンスをキャッシュに登録し、ステップ７０７では、そのリファレンスを呼び出し元の処理へ返し、名前解決処理を終了する。
【００４７】
次に本実施形態のプログラム制御システムにおいて、前記の様にクライアント側処理装置１２０により、オブジェクトの名前解決の為の問い合わせ、オブジェクト割当要求や、ビジネスメソッドの処理要求が行われた場合のサーバ側処理装置の処理について説明する。なお、以下の処理手順の説明ではサーバ側処理装置１００を例に挙げて説明するが、実際の分散オブジェクト処理においてどのサーバ側処理装置が処理を行うかはリファレンスの内容により異なるものとする。
【００４８】
図８は本実施形態のネーミングサービス部１０１での名前解決処理の処理手順を示すフローチャートである。図８に示す様にサーバ側処理装置１００のネーミングサービス部１０１は、ステップ７０４でクライアント側処理装置１２０からオブジェクトの名前解決の為の問い合わせが送信されると、オブジェクトの負荷状態を示すオブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択し、その選択したオブジェクトの割当を行うオブジェクト割当制御部１０２へのリファレンスを通信装置により応答する処理を行う。
【００４９】
ステップ８０１でサーバ側処理装置１００のネーミングサービス部１０１は、クライアント側処理装置１２０からオブジェクトの名前解決の為の問い合わせが送信されると、その名前解決の為の問い合わせを通信制御部１０６及び通信装置により受信する。
【００５０】
ステップ８０２では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のオブジェクト登録名４０１がクライアント側処理装置１２０から問い合わせの行われたオブジェクト名と一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索する。
【００５１】
ステップ８０３では、前記検索結果を参照して、クライアント側処理装置１２０から問い合わせの行われたオブジェクトのオブジェクト情報を発見したかどうかを調べ、オブジェクト情報を発見した場合にはステップ８０４へ進む。
【００５２】
ステップ８０４では、ステップ８０２での検索処理により発見したオブジェクト情報の内で未閉塞のオブジェクト、すなわちそのオブジェクト情報の閉塞状態４０５が「開」であるオブジェクトを選択し、そのオブジェクト登録名４０１、オブジェクト割当制御部リファレンス４０２及び負荷状態４０４をオブジェクト情報管理テーブル１０７から読み出してメモリに格納する。
【００５３】
ステップ８０５では、ステップ８０４の処理でメモリに格納したオブジェクト登録名４０１の数を計数して、未閉塞のオブジェクトが無い状態であるかどうかを調べ、未閉塞のオブジェクトが有る場合にはステップ８０６へ進む。
【００５４】
ステップ８０６では、ステップ８０４の処理でメモリに格納した負荷状態４０４を読み出して、負荷の軽いオブジェクト、すなわち負荷状態４０４の値が最も小さい若しくは所定の閾値よりも低いオブジェクトを選択する。
【００５５】
ステップ８０７では、ステップ８０６で選択したオブジェクトのオブジェクト割当制御部リファレンス４０２、すなわちオブジェクト割当制御部１０２の受付処理部２０１〜２０３の何れかへのリファレンスをメモリから読み出し、通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００５６】
一方、ステップ８０３でオブジェクト情報を発見したかどうかを調べた結果、オブジェクト情報を発見できなかった場合にはステップ８０８へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００５７】
またステップ８０５で未閉塞のオブジェクトが無い状態であるかどうかを調べた結果、未閉塞のオブジェクトが無い場合にはステップ８０９へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００５８】
前記の処理では、クライアント側処理装置１２０から問い合わせの行われたオブジェクトをオブジェクト情報管理テーブル１０７から検索してオブジェクトの名前解決を行っているが、当該オブジェクトの名前解決時のＣＰＵやメモリの使用率等の処理負荷を測定し、そのオブジェクトの負荷状態を示すオブジェクト情報管理テーブル１０７中のオブジェクト情報を前記測定した処理負荷の値に基づいて更新するものとしても良い。
【００５９】
図９は本実施形態のサーバ側処理装置１００内でのオブジェクト割当処理の処理手順を示すフローチャートである。図９に示す様にサーバ側処理装置１００のオブジェクト割当制御部１０２は、ステップ６０３でクライアント側処理装置１２０からオブジェクトの割当要求が送信されると、前記オブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択し、その選択したオブジェクトの実行を行うディスパッチャ１０５へのリファレンスを通信装置により応答する処理を行う。
【００６０】
ステップ９０１でサーバ側処理装置１００のオブジェクト割当制御部１０２は、クライアント側処理装置１２０からオブジェクトの割当要求が送信されると、そのオブジェクト割当要求を通信制御部１０６及び通信装置により受信した後、受付処理部２０１〜２０３の何れかの処理部によりその割当要求を受け付ける処理を行う。
【００６１】
ステップ９０２では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のオブジェクト登録名４０１がクライアント側処理装置１２０から割当要求の行われたオブジェクト名と一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索する。
【００６２】
ステップ９０３では、前記検索結果を参照して、クライアント側処理装置１２０から割当要求の行われたオブジェクトのオブジェクト情報を発見したかどうかを調べ、オブジェクト情報を発見した場合にはステップ９０４へ進む。
【００６３】
ステップ９０４では、ステップ９０２での検索処理により発見したオブジェクト情報の内で未閉塞のオブジェクト、すなわちそのオブジェクト情報の閉塞状態４０５が「開」であるオブジェクトを選択し、そのオブジェクト登録名４０１、ディスパッチャリファレンス４０３及び負荷状態４０４をオブジェクト情報管理テーブル１０７から読み出してメモリに格納する。
【００６４】
ステップ９０５では、ステップ９０４の処理でメモリに格納したオブジェクト登録名４０１の数を計数して、未閉塞のオブジェクトが無い状態であるかどうかを調べ、未閉塞のオブジェクトが有る場合にはステップ９０６へ進む。
【００６５】
ステップ９０６では、ステップ９０４の処理でメモリに格納した負荷状態４０４を読み出して、負荷の軽いオブジェクト、すなわち負荷状態４０４の値が最も小さい若しくは所定の閾値よりも低いオブジェクトを選択する。
【００６６】
ステップ９０７では、ステップ９０６で選択したオブジェクトのディスパッチャリファレンス４０３、すなわちディスパッチャ１０５の受付処理部２１１〜２１３の何れかへのリファレンスをメモリから読み出し、通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００６７】
一方、ステップ９０３でオブジェクト情報を発見したかどうかを調べた結果、オブジェクト情報を発見できなかった場合にはステップ９０８へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００６８】
またステップ９０５で未閉塞のオブジェクトが無い状態であるかどうかを調べた結果、未閉塞のオブジェクトが無い場合にはステップ９０９へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００６９】
前記の処理では、クライアント側処理装置１２０から割当要求の行われたオブジェクトをオブジェクト情報管理テーブル１０７から検索してオブジェクトの割当を行っているが、当該オブジェクトの割当時のＣＰＵやメモリの使用率等の処理負荷を測定し、そのオブジェクトの負荷状態を示すオブジェクト情報管理テーブル１０７中のオブジェクト情報を前記測定した処理負荷の値に基づいて更新するものとしても良い。
【００７０】
また、クライアント側処理装置１２０から割当要求の行われたオブジェクトをオブジェクト情報管理テーブル１０７から検索してオブジェクトの割当を行う以外に、オブジェクトの割当要求時にその割当要求のあったオブジェクトをコンテナ１０８内に作成してオブジェクトの割当を行うものとしても良い。その際、当該オブジェクトの作成時のＣＰＵやメモリの使用率等の処理負荷を測定し、そのオブジェクトの負荷状態を示すオブジェクト情報管理テーブル１０７中のオブジェクト情報を前記測定した処理負荷の値に基づいて更新するものとしても良い。
【００７１】
図１０は本実施形態のサーバ側処理装置１００内でのビジネスメソッドリクエスト処理の処理手順を示すフローチャートである。図１０に示す様にサーバ側処理装置１００のディスパッチャ１０５は、ステップ６０５でクライアント側処理装置１２０から、また転送により他のサーバ側処理装置から、ビジネス関係の所定のサービスを提供するビジネスメソッド等の、所定のオブジェクトのメソッドの処理要求を行うリクエストが送信されると、前記オブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷が所定の閾値未満である場合に当該オブジェクトのメソッドを呼び出し、その処理結果を通信装置により応答する処理を行う。
【００７２】
ステップ１００１でサーバ側処理装置１００のディスパッチャ１０５は、クライアント側処理装置１２０や転送元の他のサーバ側処理装置からビジネスメソッドのリクエストが送信されると、そのビジネスメソッドリクエストを通信制御部１０６及び通信装置により受信した後、受付処理部２１１〜２１３の何れかの処理部によりそのリクエストを受け付ける処理を行う。
【００７３】
ステップ１００２でディスパッチャ１０５は、閉塞制御部２１５に前記リクエストを渡して閉塞状態４０５の確認を指示し、閉塞制御部２１５は、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のオブジェクト登録名４０１がクライアント側処理装置１２０からリクエストの行われたオブジェクト名と一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索した後、そのオブジェクト情報中の閉塞状態４０５を読み出す。
【００７４】
ステップ１００３でディスパッチャ１０５は、前記読み出した閉塞状態４０５を参照して前記リクエストの行われたオブジェクトが現在閉塞中であるかどうかを調べ、そのオブジェクトが現在閉塞中でない場合にはステップ１００４へ進む。
【００７５】
ステップ１００４でディスパッチャ１０５は、負荷制御部２１４に前記リクエストを渡して負荷状態４０４の確認を指示し、負荷制御部２１４は、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を参照し、ステップ１００２で検索されたオブジェクト情報中の負荷状態４０４を読み出す。
【００７６】
ステップ１００５でディスパッチャ１０５は、前記読み出した負荷状態４０４の値が所定の閾値以上であるかどうかを調べ、負荷状態４０４の値が所定の閾値よりも小さい場合にはステップ１００６へ進む。ここで、負荷状態４０４の値が最も小さいオブジェクトを選択してステップ１００６へ進むものとしても良い。
【００７７】
ステップ１００６でディスパッチャ１０５は、同時実行制御部２１７に該オブジェクトの実行制御を指示し、同時実行制御部２１７は、実行制御情報テーブル５００中の実行制御情報に従ってそのオブジェクトの実行を制御した後、その処理結果をメモリに保持する。
【００７８】
ステップ１００７でディスパッチャ１０５は、前記メモリに保持された処理結果を読み出し、通信制御部１０６及び通信装置によりクライアント側処理装置１２０や他のサーバ側処理装置へ送信する。
【００７９】
一方、ステップ１００３でオブジェクトが現在閉塞中であるかどうかを調べた結果、そのオブジェクトが現在閉塞中である場合や、ステップ１００５で負荷状態４０４の値が所定の閾値以上であるかどうかを調べた結果、負荷状態４０４の値が所定の閾値以上である場合にはステップ１００８へ進む。
【００８０】
ステップ１００８では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のオブジェクト登録名４０１がクライアント側処理装置１２０からリクエストの行われたオブジェクト名と一致するオブジェクト情報の内で、ステップ１００２で検索されたものとは異なるオブジェクト情報をオブジェクト情報管理テーブル１０７から検索した後、そのオブジェクト情報中のディスパッチャリファレンス４０３を転送先ディスパッチャの情報として読み出す。
【００８１】
ステップ１００９では、前記検索処理により転送先ディスパッチャのディスパッチャリファレンス４０３が検索されたかどうかを調べ、ディスパッチャリファレンス４０３が検索され、転送先が有る場合にはステップ１０１０へ進む。
【００８２】
ステップ１０１０では、前記検索されたディスパッチャリファレンス４０３で識別される他のサーバ側処理装置に対して前記リクエストを通信制御部１０６及び通信装置により転送する。
【００８３】
ステップ１０１１では、前記リクエストを転送した転送先のサーバ側処理装置からそのリクエストに対する処理結果を含む応答を通信制御部１０６及び通信装置により受信し、その処理結果をメモリに保持してステップ１００７へ進む。
【００８４】
一方、ステップ１００９で転送先ディスパッチャのディスパッチャリファレンス４０３が検索されたかどうかを調べた結果、ディスパッチャリファレンス４０３が検索されず、転送先が無い場合にはステップ１０１２へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１２０へ送信する。
【００８５】
図１１は本実施形態のステップ１０１０に相当するビジネスメソッドリクエストの転送処理の処理手順を示すフローチャートである。図１１に示す様にサーバ側処理装置１００の転送制御部２１６は、ステップ１００３でオブジェクトが現在閉塞中である場合や、ステップ１００５で負荷状態４０４の値が所定の閾値以上である場合に、そのオブジェクトを実行する他のディスパッチャへ前記リクエストを通信装置により転送する処理を行う。
【００８６】
ステップ１１０１でサーバ側処理装置１００の転送制御部２１６は、ディスパッチャリファレンス４０３で識別される他のサーバ側処理装置に対して前記リクエストを通信制御部１０６及び通信装置により転送する。
【００８７】
ステップ１１０２では、前記リクエストを転送した転送先のサーバ側処理装置から当該リクエストに対する応答を通信制御部１０６及び通信装置により受信し、その応答内容がエラー応答であるかどうかを調べる。その結果、転送に失敗していない場合にはステップ１１０３へ進み、ステップ１１０３では、前記応答の後に送信される処理結果を受信してメモリに保持する。
【００８８】
一方、ステップ１１０２で調べた結果、転送に失敗している場合にはステップ１１０４へ進み、ステップ１１０４では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のディスパッチャリファレンス４０３が前記リクエストの転送の際に用いられたリファレンスと一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索した後、そのオブジェクト情報中の閉塞状態４０５を「閉」に変更する。
【００８９】
図１２は本実施形態の同時実行制御の処理手順を示すフローチャートである。図１２に示す様にサーバ側処理装置１００の同時実行制御部２１７は、各オブジェクトの同時実行を制御する処理を行う。
【００９０】
ステップ１２０１でサーバ側処理装置１００の同時実行制御部２１７は、磁気ディスク装置等の記憶装置上の実行制御情報テーブル５００を読み出し、実行制御情報テーブル５００中のオブジェクト名がクライアント側処理装置１２０からリクエストの行われたオブジェクト名と一致する実行制御情報を実行制御情報テーブル５００から検索した後、その実行制御情報中の現在実行中数と最大実行数とを読み出して比較する。
【００９１】
ステップ１２０２では、前記比較結果を調べ、前記検索された実行制御情報中の現在実行中数が最大実行数よりも小さい場合にはステップ１２０３へ進み、そうでない場合にはステップ１２０７へ進む。
【００９２】
ステップ１２０３では、前記検索された実行制御情報中の現在実行中数を読み出して「１」を加算した後、その加算した結果を実行制御情報テーブル５００に格納する。
【００９３】
ステップ１２０４では、クライアント側処理装置１２０からリクエストの行われたオブジェクトのメソッドを呼び出し、そのメソッドによる所定の処理を実行する。その際、当該オブジェクトの実行時のＣＰＵやメモリの使用率等の処理負荷を測定し、そのオブジェクトの負荷状態を示すオブジェクト情報管理テーブル１０７中のオブジェクト情報を前記測定した処理負荷の値に基づいて更新するものとしても良い。
【００９４】
ステップ１２０５では、前記格納した現在実行中数を実行制御情報テーブル５００から読み出し、その読み出した現在実行中数から「１」を減算した後、減算した結果を実行制御情報テーブル５００に格納する。
【００９５】
ステップ１２０６では、ステップ１２０４での処理結果をメモリに保持することによりディスパッチャ１０５へ渡し、クライアント側処理装置１２０に返す処理を行う。
【００９６】
一方、ステップ１２０２で現在実行中数が最大実行数よりも小さくない場合にはステップ１２０７へ進み、ステップ１２０７では、所定時間の待ちを行う。この待ちを行っている間は、ステップ１２０１で検索された実行制御情報中の実行待ち数を「１」増やしておくものとする。
【００９７】
図１３は本実施形態のオブジェクト情報の負荷状態通知の処理手順を示すフローチャートである。図１３に示す様にサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、負荷状態４０４が変化した場合や最終更新時刻４０６から所定時間が経過した場合に、そのオブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して通信装置により他のサーバ側処理装置へ通知する処理を行う。
【００９８】
ステップ１３０１でサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、所定の時間間隔でＣＰＵやメモリの使用率等の負荷情報を測定してオブジェクト情報管理テーブル１０７中の負荷状態４０４と比較し、それらに差が生じているかどうかを調べることにより、自サーバ側処理装置のオブジェクトの負荷情報が変化したことを検出する。
【００９９】
ステップ１３０２では、オブジェクト情報管理テーブル１０７の中の変化したオブジェクト情報を通信制御部１０６及び通信装置によりサーバ側処理装置１１０等の他のサーバ側処理装置へ通知する。
ステップ１３０３では、前記通知したオブジェクト情報の最終更新時刻４０６に現在時刻を設定し、オブジェクト情報管理テーブル１０７へ格納する。
【０１００】
またステップ１３０４でサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、オブジェクト情報管理テーブル１０７中のオブジェクト情報の内で自サーバ側処理装置上のオブジェクトのオブジェクト情報を読み出し、その読み出したオブジェクト情報の内で最終更新時刻４０６が所定時間以上前のものを選択する。
【０１０１】
ステップ１３０５では、前記選択したオブジェクト情報を通信制御部１０６及び通信装置によりサーバ側処理装置１１０等の他のサーバ側処理装置へ通知する。
ステップ１３０６では、前記通知したオブジェクト情報の最終更新時刻４０６に現在時刻を設定し、オブジェクト情報管理テーブル１０７へ格納する。
【０１０２】
図１４は本実施形態の通知されたオブジェクトの負荷・閉塞状態変化を反映する処理の処理手順を示すフローチャートである。図１４に示す様にサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、他のサーバ側処理装置から通知されたオブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７へ反映させる処理を行う。
【０１０３】
ステップ１４０１でサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、サーバ側処理装置１１０等の他のサーバ側処理装置からのオブジェクトの状態通知を通信制御部１０６及び通信装置により受信する。
【０１０４】
ステップ１４０２では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のディスパッチャリファレンス４０３中のサーバ側処理装置のアドレス情報が、オブジェクトの状態通知を送信した送信元のサーバ側処理装置のアドレス情報と一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索した後、そのオブジェクト情報を読み出す。そしてその読み出したオブジェクト情報に、前記受信した通知内容を反映した後、その反映後のオブジェクト情報をオブジェクト情報管理テーブル１０７に格納する。
【０１０５】
前記の様に本実施形態のプログラム制御システムでは、図１３のステップ１３０１〜ステップ１３０３の様に負荷状態が変化した場合にそのオブジェクト情報を他のサーバ側処理装置へ通知して図１４の様に通知内容を反映するので、システム内の各サーバ側処理装置は、分散オブジェクト処理を負荷状態に基づいて効率的に実行することができる。
【０１０６】
図１５は本実施形態の他サーバの障害検知の処理手順を示すフローチャートである。図１５に示す様にサーバ側処理装置１００の監視部１０４は、他のサーバ側処理装置の動作状況を監視して障害を検知する処理を行う。
【０１０７】
ステップ１５０１でサーバ側処理装置１００の監視部１０４は、オブジェクト情報管理テーブル１０７から他のサーバ側処理装置上にある自サーバ側処理装置と同一のオブジェクトを選択する。
【０１０８】
ステップ１５０２では、前記選択したオブジェクトのオブジェクト情報から最終更新時刻４０６を読み出して、その最終更新時刻４０６から所定時間経過しているかを調べ、最終更新時刻４０６から所定時間経過している場合にはステップ１５０３へ進む。
ステップ１５０３では、前記選択したオブジェクトのオブジェクト情報中の閉塞状態４０５を「閉」に変更する。
【０１０９】
前記の様に本実施形態のプログラム制御システムでは、図１３のステップ１３０４〜ステップ１３０６の様に最終更新時刻４０６から所定時間が経過した場合にそのオブジェクト情報を他のサーバ側処理装置へ通知して図１４の様に通知内容を反映するので、システム内の各サーバ側処理装置は、図１５のステップ１５０１〜ステップ１５０３の様に最終更新時刻４０６から所定時間が経過しても通知が行われないオブジェクトを閉塞しているものと判定することで、分散オブジェクト処理を閉塞状態に基づいて効率的に実行することができる。
【０１１０】
図１６は本実施形態のオブジェクトの閉塞状態変更通知の処理手順を示すフローチャートである。図１６に示す様にサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、閉塞状態４０５が変化した場合に、そのオブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して通信装置により他のサーバ側処理装置へ通知する処理を行う。
【０１１１】
ステップ１６０１でサーバ側処理装置１００のオブジェクト情報共有制御部１０３は、ユーザからのオブジェクトの閉塞状態の変更指示を入力装置により受け付けた場合等、オブジェクトの閉塞状態が変化した際には、その変更後の閉塞状態の内容を入力装置等により受け付ける。
【０１１２】
ステップ１６０２では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のオブジェクト登録名４０１が閉塞状態の変化したオブジェクトの名称と一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索した後、そのオブジェクト情報中の閉塞状態４０５に変更後の状態を格納する。
ステップ１６０３では、閉塞状態４０５の変更されたオブジェクト情報を通信制御部１０６及び通信装置により他のサーバ側処理装置へ通知する。
【０１１３】
前記の様に本実施形態のプログラム制御システムでは、ユーザからの指示等によりオブジェクトの閉塞状態が変化した場合にそのオブジェクト情報を他のサーバ側処理装置へ通知するので、システム内の各サーバ側処理装置は、分散オブジェクト処理を閉塞状態に基づいて効率的に実行することができる。
【０１１４】
以上の説明では、サーバ側処理装置１００や１１０により、クライアント側処理装置１２０からの問い合わせや処理要求を処理し、オブジェクト割当制御部リファレンス４０２の応答、ディスパッチャリファレンス４０３の応答及びオブジェクトの実行を一元管理されたオブジェクト情報により行って、分散オブジェクト処理におけるプログラムの実行を制御していたが、負荷分散専用のフロントエンドサーバを設け、このフロントエンドサーバにより、オブジェクト割当制御部リファレンス４０２及びディスパッチャリファレンス４０３の応答を行うものとしても良い。
【０１１５】
図１７は本実施形態の負荷分散専用のフロントエンドサーバを用いた場合の全体構成を示す図である。図１７に示す様に本実施形態のプログラム制御システムは、負荷分散サーバＬＢ１７００と、サーバ側処理装置１７１０及び１７２０と、クライアント側処理装置１７３０とを有している。
【０１１６】
負荷分散サーバＬＢ１７００は、クライアント側処理装置１７３０からの問い合わせや処理要求を処理し、オブジェクト割当制御部リファレンスの応答及びディスパッチャリファレンスの応答を一元管理されたオブジェクト情報により行って、分散オブジェクト処理におけるプログラムの実行を制御するプログラム制御装置である。
【０１１７】
サーバ側処理装置１７１０及び１７２０は、クライアント側処理装置１７３０からの処理要求を受け付けてオブジェクトの実行を行う情報処理装置である。クライアント側処理装置１７３０は、負荷分散サーバＬＢ１７００への問い合わせや処理要求を行ってオブジェクト割当制御部リファレンス及びディスパッチャリファレンスを負荷分散サーバＬＢ１７００から受け取り、サーバ側処理装置１７１０または１７２０への処理要求を行ってオブジェクトの実行結果をサーバ側処理装置１７１０または１７２０から受け取るクライアント側の情報処理装置である。
【０１１８】
図１８は本実施形態の負荷分散サーバＬＢ１７００の内部構成を示す図である。図１８に示す様に負荷分散サーバＬＢ１７００の構成は、ディスパッチャ１０５及びコンテナ１０８を除いて図２のサーバ側処理装置１００と同様であるものとする。
【０１１９】
図１９は本実施形態の負荷分散サーバＬＢ１７００を用いる場合のオブジェクト情報管理テーブル１０７の一例を示す図である。図１９に示す様に負荷分散サーバＬＢ１７００を用いる場合のオブジェクト情報管理テーブル１０７の構成は、図４に示したサーバ側処理装置１００のオブジェクト情報管理テーブル１０７の構成と同様であるものとするが、負荷分散サーバＬＢ１７００を用いる場合のオブジェクト情報には、負荷分散サーバＬＢ１７００内のオブジェクト割当制御部１０２へのリファレンスを含むオブジェクト情報が追加されている。
【０１２０】
図２０は本実施形態の負荷分散サーバＬＢのネーミングサービス部１０１における名前解決処理の処理手順を示すフローチャートである。図２０に示す様に負荷分散サーバＬＢ１７００のネーミングサービス部１０１は、オブジェクトの名前解決の際に、オブジェクトの負荷状態を示すオブジェクト情報を記憶装置上のオブジェクト情報管理テーブル１０７から読み出して負荷最小のもの若しくは予め設定された閾値よりも低いオブジェクトを選択し、その選択したオブジェクトの割当を行う負荷分散サーバＬＢ１７００のオブジェクト割当制御部１０２へのリファレンスを通信装置により応答する処理を行う。
【０１２１】
ステップ２００１で負荷分散サーバＬＢ１７００のネーミングサービス部１０１は、クライアント側処理装置１７３０からオブジェクトの名前解決の為の問い合わせが送信されると、その名前解決の為の問い合わせを通信制御部１０６及び通信装置により受信する。
【０１２２】
ステップ２００２では、磁気ディスク装置等の記憶装置上のオブジェクト情報管理テーブル１０７を読み出し、オブジェクト情報管理テーブル１０７中のオブジェクト登録名４０１がクライアント側処理装置１７３０から問い合わせの行われたオブジェクト名と一致するオブジェクト情報をオブジェクト情報管理テーブル１０７から検索する。
【０１２３】
ステップ２００３では、前記検索されたオブジェクト情報の内、そのオブジェクト割当制御部リファレンス４０２が負荷分散サーバＬＢ１７００上のオブジェクト割当制御部１０２を示しているものを選択する。
【０１２４】
ステップ２００４では、前記選択結果を参照して、クライアント側処理装置１７３０から問い合わせの行われたオブジェクトのオブジェクト情報を発見したかどうかを調べ、オブジェクト情報を発見した場合にはステップ２００５へ進む。
【０１２５】
ステップ２００５では、ステップ２００３での選択処理により選択したオブジェクト情報の内で未閉塞のオブジェクト、すなわちそのオブジェクト情報の閉塞状態４０５が「開」であるオブジェクトを選択し、そのオブジェクト登録名４０１、オブジェクト割当制御部リファレンス４０２及び負荷状態４０４をオブジェクト情報管理テーブル１０７から読み出してメモリに格納する。
【０１２６】
ステップ２００６では、ステップ２００５の処理でメモリに格納したオブジェクト登録名４０１の数を計数して、未閉塞のオブジェクトが無い状態であるかどうかを調べ、未閉塞のオブジェクトが有る場合にはステップ２００７へ進む。
【０１２７】
ステップ２００７では、ステップ２００５の処理でメモリに格納した負荷状態４０４を読み出して、負荷の軽いオブジェクト、すなわち負荷状態４０４の値が最も小さい若しくは所定の閾値よりも低いオブジェクトを選択する。
【０１２８】
ステップ２００８では、ステップ２００７で選択したオブジェクトのオブジェクト割当制御部リファレンス４０２、すなわち負荷分散サーバＬＢ１７００上のオブジェクト割当制御部１０２の受付処理部２０１〜２０３の何れかへのリファレンスをメモリから読み出し、通信制御部１０６及び通信装置によりクライアント側処理装置１７３０へ送信する。
【０１２９】
一方、ステップ２００４でオブジェクト情報を発見したかどうかを調べた結果、オブジェクト情報を発見できなかった場合にはステップ２００９へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１７３０へ送信する。
【０１３０】
またステップ２００６で未閉塞のオブジェクトが無い状態であるかどうかを調べた結果、未閉塞のオブジェクトが無い場合にはステップ２０１０へ進み、エラーが発生したことを示す応答を通信制御部１０６及び通信装置によりクライアント側処理装置１７３０へ送信する。
この処理以降のオブジェクト割当処理やビジネスメソッドリクエスト処理は、負荷分散サーバＬＢ１７００を用いない図１の構成の場合と同様である。
【０１３１】
以上説明した様に本実施形態のプログラム制御装置によれば、分散オブジェクト処理を実行する際に、オブジェクト割当制御部リファレンスの応答、ディスパッチャリファレンスの応答及びオブジェクトの実行を一元管理されたオブジェクト情報により行うので、分散オブジェクト処理を負荷状態に基づいて効率的に実行することが可能である。
【図面の簡単な説明】
【０１３２】
【図１】本実施形態のプログラム制御装置の概略構成を示す図である。
【図２】本実施形態のサーバ側処理装置１００の内部構成を示す図である。
【図３】本実施形態のサーバ側処理装置１１０の内部構成を示す図である。
【図４】本実施形態のオブジェクト情報管理テーブル１０７の一例を示す図である。
【図５】本実施形態の同時実行制御部２１７の内部構成を示す図である。
【図６】本実施形態のクライアント側処理装置１２０の処理手順を示すフローチャートである。
【図７】本実施形態のクライアント側処理装置１２０内でのオブジェクトの名前解決処理の処理手順を示すフローチャートである。
【図８】本実施形態のネーミングサービス部１０１での名前解決処理の処理手順を示すフローチャートである。
【図９】本実施形態のサーバ側処理装置１００内でのオブジェクト割当処理の処理手順を示すフローチャートである。
【図１０】本実施形態のサーバ側処理装置１００内でのビジネスメソッドリクエスト処理の処理手順を示すフローチャートである。
【図１１】本実施形態のビジネスメソッドリクエストの転送処理の処理手順を示すフローチャートである。
【図１２】本実施形態の同時実行制御の処理手順を示すフローチャートである。
【図１３】本実施形態のオブジェクト情報の負荷状態通知の処理手順を示すフローチャートである。
【図１４】本実施形態の通知されたオブジェクトの負荷・閉塞状態変化を反映する処理の処理手順を示すフローチャートである。
【図１５】本実施形態の他サーバの障害検知の処理手順を示すフローチャートである。
【図１６】本実施形態のオブジェクトの閉塞状態変更通知の処理手順を示すフローチャートである。
【図１７】本実施形態の負荷分散専用のフロントエンドサーバを用いた場合の全体構成を示す図である。
【図１８】本実施形態の負荷分散サーバＬＢ１７００の内部構成を示す図である。
【図１９】本実施形態の負荷分散サーバＬＢ１７００を用いる場合のオブジェクト情報管理テーブル１０７の一例を示す図である。
【図２０】本実施形態の負荷分散サーバＬＢのネーミングサービス部１０１における名前解決処理の処理手順を示すフローチャートである。
【符号の説明】
【０１３３】
１００及び１１０…サーバ側処理装置、１２０…クライアント側処理装置、１０１…ネーミングサービス部、１０２…オブジェクト割当制御部、１０３…オブジェクト情報共有制御部、１０４…監視部、１０５…ディスパッチャ、１０６…通信制御部、１０７…オブジェクト情報管理テーブル、１０８…コンテナ、２０１〜２０３…受付処理部、２１１〜２１３…受付処理部、２１４…負荷制御部、２１５…閉塞制御部、２１６…転送制御部、２１７…同時実行制御部、４０１…オブジェクト登録名、４０２…オブジェクト割当制御部リファレンス、４０３…ディスパッチャリファレンス、４０４…負荷状態、４０５…閉塞状態、４０６…最終更新時刻、５００…実行制御情報テーブル、１７００…負荷分散サーバＬＢ、１７１０及び１７２０…サーバ側処理装置、１７３０…クライアント側処理装置
【図１】
2005165540.tif 000003
【図２】
2005165540.tif 000004
【図３】
2005165540.tif 000005
【図４】
2005165540.tif 000006
【図５】
2005165540.tif 000007
【図６】
2005165540.tif 000008
【図７】
2005165540.tif 000009
【図８】
2005165540.tif 000010
【図９】
2005165540.tif 000011
【図１０】
2005165540.tif 000012
【図１１】
2005165540.tif 000013
【図１２】
2005165540.tif 000014
【図１３】
2005165540.tif 000015
【図１４】
2005165540.tif 000016
【図１５】
2005165540.tif 000017
【図１６】
2005165540.tif 000018
【図１７】
2005165540.tif 000019
【図１８】
2005165540.tif 000020
【図１９】
2005165540.tif 000021
【図２０】
2005165540.tif 000022