(57)【要約】【課題】障害が生じた場合に提供サービスに係るオブジェクトを高速、確実に救済するようにする。【解決手段】本発明は、オブジェクト指向のプログラムによって構築されたメモリ領域上のオブジェクトを操作してサービス提供を実現するサーバ内のオブジェクト救済システムである。各オブジェクトは、仮想関数識別情報、クラス識別情報、オブジェクトデータを有し、サービス提供の際、提供するサービスに必要な１又は複数のオブジェクトを、機能処理の順序に応じて予め確保されたメモリ領域に配列するインスタンス管理手段と、仮想関数を記憶する仮想関数記憶領域と、プロセスを再生成した際、異常があったプロセスに係るオブジェクトのクラス識別情報に基づいて、オブジェクトのクラス属性を特定し、新たなプロセスの仮想関数の仮想領域識別情報をオブジェクトに再設定する。【選択図】      図１
2006285443.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向のプログラムによって構築されたメモリ領域上の１又は複数のオブジェクトを操作してサービス提供を実現するサーバ内で、異常が生じたオブジェクトを救済するオブジェクト救済システムにおいて、
上記各オブジェクトは、仮想関数のメモリ領域を識別する仮想関数識別情報、当該オブジェクトが属すクラスを識別するクラス識別情報、オブジェクトデータを有して構成し、
サービス提供の際、提供するサービスに必要な１又は複数の上記オブジェクトを、機能処理の順序に応じて予め確保されたメモリ領域に配列して管理するインスタンス管理手段と、
プロセスが生成する毎に異なるメモリ領域に仮想関数を記憶する仮想関数記憶領域と、
異常発生に応じてプロセスを再生成した際、異常があったプロセスに係る上記オブジェクトの上記クラス識別情報に基づいて、当該オブジェクトのクラス属性を特定することで、新たに生成したプロセスの仮想関数の仮想領域識別情報を上記オブジェクトに設定する再設定手段と
を備えることを特徴とするオブジェクト救済システム。
【請求項２】
オブジェクト指向のプログラムによって構築されたメモリ領域上の１又は複数のオブジェクトを操作してサービス提供を実現するサーバ内で、異常が生じたオブジェクトを救済するオブジェクト救済方法において、
上記各オブジェクトは、仮想関数のメモリ領域を識別する仮想関数識別情報、当該オブジェクトが属すクラスを識別するクラス識別情報、オブジェクトデータを有して構成し、
サービス提供の際、提供するサービスに必要な１又は複数の上記オブジェクトを、機能処理の順序に応じて予め確保されたメモリ領域に配列して管理するインスタンス管理工程と、
プロセスが生成する毎に異なるメモリ領域に仮想関数を記憶する仮想関数記憶領域と、
異常発生に応じてプロセスを再生成した際、異常があったプロセスに係る上記オブジェクトの上記クラス識別情報に基づいて、当該オブジェクトのクラス属性を特定することで、新たに生成したプロセスの仮想関数の仮想領域識別情報を上記オブジェクトに設定する再設定工程と
を備えることを特徴とするオブジェクト救済方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト救済システム及び方法に関し、例えば、オブジェクト指向のプログラムにより構築された呼処理サービスを提供する音声通信サービス装置において、呼処理オブジェクトに障害が生じた場合でも、その呼を迅速、確実に救済するシステム及び方法に適用し得る。
【背景技術】
【０００２】
例えば、既存の音声通信サービス提供装置は、システムの信頼性を保持するために、ＡＣＴ系サーバとＳＢＹ系サーバとを有し、ＡＣＴ系サーバに障害が生じた場合に、提供中のサービスをＳＢＹ系サーバが引き継ぐ冗長構成を備える。
【０００３】
ＡＣＴ系サーバの障害時にＳＢＹ系サーバが同一サービスを提供するためには、ＳＢＹ系サーバがＡＣＴ系サーバの有するデータと同値のデータを利用できることが必要となる。
【０００４】
特許文献１には、複数のコールエージェント（ＣＡ）間で、それぞれ搭載する呼制御データを一致させると共に、その呼制御データを一元管理する技術が開示されている。具体的には、特許文献１は、オリジナルデータを有する情報サーバを備え、各コールエージェントが、情報サーバからオリジナルデータを受け取り、そのオリジナルデータを複製することで、オリジナルデータと同値のデータ（複製データ）を実装する技術が開示されている。これにより、各コールエージェントは、それぞれ一致する呼制御データを実装し、利用できる。
【０００５】
従来、オブジェクト指向プログラムにより各種サービスを提供する音声通信サービス装置では、サービス提供開始前に、サービスを提供するために必要なリソースを予約することが行なわれる。
【０００６】
そのため、音声通信サービス装置は、収容端末からに対して呼処理サービスを提供する場合にも、呼処理をする前に呼処理オブジェクトのメモリ領域等のリソースを確保することとなる。そして、プロセスが生成すると、呼処理サービスに必要な多岐にわたる１又は複数のオブジェクトがメモリ上に生成され、各オブジェクトにおいてクラスが設定される。
【０００７】
ここで、一般的に、クラス設定されるオブジェクトは、自身を記述するオブジェクトデータと、仮想関数テーブルを通じてサービス提供に必要な仮想関数を呼び出すために割り当てられた変数（仮想関数テーブルポインタ（ＶＦＴＰ：Virtual  Function  Table  Pointer））とを有する。仮想関数テーブルは、ＶＦＴＰと仮想関数の領域とを対応付けて管理するものであり、クラスオブジェクトは、このＶＦＴＰを仮想関数テーブルに指す示すことにより、ＶＦＴＰに対応の仮想関数の領域を呼び出すことができる。
【特許文献１】特開２００１−３４５８５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、呼処理サービスを提供しているときに、ハードウェアやソフトウェアに障害が生じると、呼処理サービスを提供するプロセスを再生成して呼を復旧する必要がある。
【０００９】
しかしながら、従来の音声通信サービス装置によっては、障害発生により、それまで提供していた呼処理サービスに必要なデータが消えてしまい、プロセス再生成の際に、もう一度初めから行なう必要があった。そのため、呼の救済に時間を要していた。
【００１０】
なお、上述した課題は呼処理オブジェクトに限らず、オブジェクト指向プログラムで構築された他のオブジェクトに対しても同様に課せられる課題である。
【００１１】
そこで、ハードウェア又はソフトウェアに障害が生じた場合に、提供中のサービスに係るオブジェクトを、高速、確実に救済することができるオブジェクト救済システム及び方法が求められている。
【課題を解決するための手段】
【００１２】
かかる課題を解決するためには、第１の本発明のオブジェクト救済システムは、オブジェクト指向のプログラムによって構築されたメモリ領域上の１又は複数のオブジェクトを操作してサービス提供を実現するサーバ内で、異常が生じたオブジェクトを救済するオブジェクト救済システムにおいて、各オブジェクトは、仮想関数のメモリ領域を識別する仮想関数識別情報、オブジェクトが属すクラスを識別するクラス識別情報、オブジェクトデータを有して構成し、サービス提供の際、提供するサービスに必要な１又は複数のオブジェクトを、機能処理の順序に応じて予め確保されたメモリ領域に配列して管理するインスタンス管理手段と、プロセスが生成する毎に異なるメモリ領域に仮想関数を記憶する仮想関数記憶領域と、異常発生に応じてプロセスを再生成した際、異常があったプロセスに係るオブジェクトのクラス識別情報に基づいて、オブジェクトのクラス属性を特定することで、新たに生成したプロセスの仮想関数の仮想領域識別情報をオブジェクトに設定する再設定手段とを備えることを特徴とする。
【００１３】
また、第２の本発明のオブジェクト救済方法は、オブジェクト指向のプログラムによって構築されたメモリ領域上の１又は複数のオブジェクトを操作してサービス提供を実現するサーバ内で、異常が生じたオブジェクトを救済するオブジェクト救済方法において、各オブジェクトは、仮想関数のメモリ領域を識別する仮想関数識別情報、オブジェクトが属すクラスを識別するクラス識別情報、オブジェクトデータを有して構成し、サービス提供の際、提供するサービスに必要な１又は複数のオブジェクトを、機能処理の順序に応じて予め確保されたメモリ領域に配列して管理するインスタンス管理工程と、プロセスが生成する毎に異なるメモリ領域に仮想関数を記憶する仮想関数記憶領域と、異常発生に応じてプロセスを再生成した際、異常があったプロセスに係るオブジェクトのクラス識別情報に基づいて、オブジェクトのクラス属性を特定することで、新たに生成したプロセスの仮想関数の仮想領域識別情報を上記オブジェクトに設定する再設定工程とを備えることを特徴とする。
【発明の効果】
【００１４】
本発明のオブジェクト救済システム及び方法によれば、ハードウェア又はソフトウェアに障害が生じた場合に、提供中のサービスに係るオブジェクトを、高速、確実に救済することができる。
【発明を実施するための最良の形態】
【００１５】
（Ａ）実施形態
以下、本発明のオブジェクト救済システム及び方法の実施形態について図面を参照して説明する。
【００１６】
本実施形態は、オブジェクト指向プログラムで構築されたオブジェクトを実行して呼処理サービスを提供する音声通信サービス装置（以下、サーバ）において、ハードウェアやソフトウェアに障害が発生したときに、呼処理オブジェクトを救済するシステムに、本発明のオブジェクト救済システム及び方法を適用した場合を説明する。
【００１７】
本実施形態のサーバは、収容する１又は複数の電話端末間の呼を確立する呼処理サービスを提供する音声通信サービス装置（コールエージェント）であって、図２に示すように、ＡＣＴ系サーバ１ＡとＳＢＹ系サーバ１Ｂとを有する冗長構成を備える。なお、図２ではＳＢＹ系サーバ１Ｂを１台としたが複数台としてもよい。
【００１８】
ＡＣＴ系サーバ１Ａはメインで利用される装置であり、ＳＢＹ系サーバ１ＢはＡＣＴ系サーバ１Ａに異常が生じた場合にＡＣＴ系サーバ１Ａから切り替えられて利用される装置である。これにより、ＡＣＴ系サーバ１Ａに障害が生じたときでも、ＳＢＹ系サーバ１Ｂにそれまでの処理を引き継がせることができ、ユーザに対して引き続き同様のサービスを提供できる。
【００１９】
また、ＡＣＴ系サーバ１ＡとＳＢＹ系サーバ１Ｂとはそれぞれ対応する構成及び機能を備え得るものであるが、以下では、ＡＣＴ系サーバ１Ａの構成及び動作を代表して説明する。
【００２０】
図３は、本実施形態のサーバのハードウェア構成を示すブロック図である。図３に示すように、本実施形態に係るサーバ１０は、ＣＰＵ１１、メモリ１２、外部記憶装置１３、通信部１４、保守用通信部１５を少なくとも備える。
【００２１】
図３において、ＣＰＵ１１は、サーバ１０全体の制御を司るものである。ＣＰＵ１１は、通信部１４を通じて収容する電話端末から呼要求等の呼処理段階で、ＲＯＭ内の処理プログラムを、ＲＡＭをワーキングエリアとして利用しながら、処理に必要な固定データを適宜用いて処理を実現するものである。また、ＣＰＵ１１は、サーバ１０内のハードウェアやソフトウェアに障害が生じているか否かを検出する機能を有しており、障害が生じた際又は障害に備えて、再開制御機能、系構成管理機能、データ２重化機能、プラグイン機能、コマンド制御機能等を実現するものである。なお、本実施形態において、処理プログラムは、オブジェクト指向言語（例えば、Ｃ＋＋言語等）により構築されたプログラムとする。
【００２２】
メモリ１２及び外部記憶装置１３は、例えば、ＲＯＭ、ＲＡＭ、フラッシュメモリ等が該当し、処理プログラム、固定データ等を記憶するものである。
【００２３】
通信部１４は、所定の通信方式に従って、サーバ１０が収容する複数の電話端末（図示しない）との間で呼処理に必要なメッセージを授受するものである。また、通信部１４は、呼確立のために必要なデータベースサーバ等と接続するものである。
【００２４】
保守用通信部１５は、障害発生時にサーバ系を切り替えるために必要な情報を、他のサーバとの間で授受するものである。
【００２５】
図４は、サーバ１０が実現するソフトウェア構成を示す図である。図４において、サーバ１０は、障害発生時又は障害に備えて、少なくとも、再開制御機能部１１Ａ、系構成管理機能部１１Ｂ、データ２重化機能部１１Ｃ、プラグイン機能部１１Ｄ、コマンド制御機能部１１Ｅを、共通プラットフォーム上に備える。
【００２６】
これら再開制御機能部１１Ａ、系構成管理機能部１１Ｂ、データ２重化機能部１１Ｃ、プラグイン機能部１１Ｄ及びコマンド制御機能部１１Ｅは、オペレーションシステム（ＯＳ：例えば、Ｌｉｎｕｘ（登録商標）等）１１Ｆの上位に位置し、上位のアプリケーション１１Ｇに対してそれぞれの機能を提供するものである。
【００２７】
なお、上述したように、共通プラットフォームはオブジェクト指向言語（例えば、Ｃ＋＋言語）で記述される。また、共通プラットフォームとユーザ間の起動方法は、例えばＣ言語関数コールあるいは関数アドレスコールを基本とする。すなわち、共通プラットフォームとユーザとは、ソケットやセマフォなどによる通信を行なわない。このため、ユーザプロセスと共通プラットフォームのみで構成するプロセスとの間で通信を行なう場合、共通プラットフォームプロセスへのアクセス関数をライブラリ化し、このライブラリをユーザプロセスにリンクしてもらうことにより通信を実現する。
【００２８】
再開制御機能部１１Ａは、所定の再開フェーズに従ってシステムの初期設定をしたり、後述するように、異常となったプロセスのみを再起動する個別の初期設定をしたり、稼働中のプロセスの状態を監視したり、個別初期設定対象スレッドを管理したりするものである。ここで、システムの再開起動には、大別して、再開コマンド・ユーザ指示等による外部要因の再開起動と、ハードウェアやソフトウェアの異常検出による自律再開起動とがある。ＡＣＴ系サーバ１Ａにおいては、再開制御機能部１１Ａは自律再開起動を行なう。ＳＢＹ系サーバ１Ｂにおいては、再開制御機能部１１Ａは後述する系構成管理機能部１１ＢからＡＣＴ系サーバ１Ａの障害発生通知を受けることで起動する。
【００２９】
系構成管理機能部１１Ｂは、ＡＣＴ系サーバ１ＡとＳＢＹ系サーバ１Ｂとの間の２重化構成を管理するものであり、ＡＣＴ系サーバ１Ａ及びＳＢＹ系サーバ１Ｂの決定や、ＡＣＴ系サーバ１Ａの障害時に系切替を行なうものである。また、系構成管理機能部１１Ｂは、系切替時に、通信部１４の先に接続する側（収容する電話端末側）に存在する中継装置（例えばルータ等）のＡＲＰテーブル（ＩＰアドレス／ＭＡＣアドレス変換テーブル）の書き換え遅延を回避するため、インターフェースのＩＰアドレス及びＭＡＣアドレスとは別に、仮想的なＩＰアドレス及びＭＡＣアドレスを設定し、仮想ＩＰアドレス及び仮想ＭＡＣアドレスを用いて通信を実現するものである。そして、ＳＢＹ系サーバ１Ｂの系構成管理機能部１１Ｂは、仮想ＩＰアドレス及び仮想ＭＡＣアドレスを用いてＡＣＴ系サーバ１Ａの動作を監視し、ＡＣＴ系サーバ１Ａの障害を検出すると、ＳＢＹ系サーバ１Ｂ内の再開制御機能部１１Ａにその旨を通知する。また、ＳＢＹ系サーバ１Ｂの系構成管理機能部１１Ｂは、再開制御機能部１１Ａから系切替指示を受け取ると、仮想ＩＰアドレス及び仮想ＭＡＣアドレスを設定することで迅速かつ確実な通信を実現する。
【００３０】
データ２重化機能部１１Ｃは、ＡＣＴ系サーバ１Ａに障害が生じたとき、ＡＣＴ系サーバ１Ａが提供中であったサービスを、ＳＢＹ系サーバ１Ｂに引き継ぐため、サービス提供に必要なデータを同期化（データを同値にすること）するものである。データ２重化機能部１１Ｃによるデータ２重化方法は、共有メモリ上に、同期対象データを保持する同期対象メモリエリアと、同期対象メモリエリア上の仮想的なセグメントを管理する管理ｂｉｔｍａｐテーブルと、同期要求キューを備え、共有メモリ上にあることで、それぞれ異なるプロセスが発生した場合でも共通に認識することができるようにする。そして、アプリケーションプロセスの実行につれ、同期対象データの変更があると、その変更に係る同期対象データのセグメントについて、管理ｂｉｔｍａｐテーブル上の対応部分にフラグを立てる。また同時に、そのセグメントの先頭アドレス及びサイズを同期要求キューにキューイングする。その後、アプリケーションプロセスとは異なる送信プロセスを発生し、送信プロセスが、同期要求キューにキューイングされているセグメントの先頭アドレス及びサイズを取り出し、その取り出した先頭アドレス及びサイズを用いて管理ｂｉｔｍａｐテーブルを参照し、同期対象エリア上の変更したデータを、他系サーバに送信する。これにより、実行しているアプリケーションプロセスが障害を生じても、そのプロセスとは異なる送信プロセスが、共有メモリ上の同期要求キュー及び管理ｂｉｔｍａｐテーブルを用いて同期対象エリアから変更データを他系サーバに送信することができるのでデータの同期化を図ることができ、サービスの中断を回避できる。
【００３１】
プラグイン機能部１１Ｄは、システムを停止することなく、実行プログラムを更新するものである。これにより、プログラムのバグ対処や、簡易な機能変更や機能追加などを可能とすることができる。なお、このプログラムの更新は、関数単位を基本とする。
【００３２】
コマンド制御機能部１１Ｅは、ユーザプログラム作成の負荷軽減を目的として、保守者から投入されるＣＵＩコマンドと実際にコマンド処理を行なうプロセスとの橋渡しを行なうものである。
【００３３】
続いて、本実施形態に係るサーバ１０における呼処理オブジェクトの救済処理について説明する。
【００３４】
まず、サーバ１０は、収容する電話端末（図示しない）から呼要求を受けると、呼処理サービスに必要な１又は複数の呼処理オブジェクトを含むクラスのインスタンスを確保するため、共有メモリ上に領域確保を行なう。
【００３５】
そして、呼処理サービスを提供するために必要なプロセスが順次生成し、そのための１又は複数のオブジェクトを処理に必要なデータ等を用いて動作させることで、呼処理サービスを実現することができる。
【００３６】
サーバ１０が呼処理サービスを提供中に、ハードウェア又はソフトウェアに障害が発生すると、ＡＣＴ系サーバの再開制御機能部１１Ａは、障害検出に基づいて所定の再開制御プロセスを起動する。
【００３７】
ここで、図５は、サーバ１０における一般的なオブジェクトモデルのイメージ図である。
【００３８】
図５において、再開処理の開始を通知する再開制御５１、クラス番号やマネジメント番号を管理するマネジメントマスタ５２、オブジェクト生成や共有メモリの確保などの管理を行なうマネジメント５３、メモリ管理を行なうメモリコントロール５４、マネージメントデータ管理２４、インスタンス管理２１、インスタンス領域２３を有する。
【００３９】
図５において、呼処理サービスに必要な各呼処理オブジェクトは、ユーザオブジェクトクラス２２に位置する。そして、呼処理を司る各オブジェクトは、スタティックに存在するインストゥルメントクラスオブジェクトと、インスタンス管理クラス２１、オブジェクトクラス（インスタンス領域）２３の基底クラスが連携して管理される。
【００４０】
図５において、ハードウェア又はソフトウェアの障害が検出されると、再開制御５１は、マネジメントマスタ５２に再開処理の開始を通知する。マネジメントマスタ５２は、再開処理に必要な１又は複数のクラスのマネジメント５３に対して再開処理を合図する。これにより、サーバ１０が有する種々の機能についての再開処理が行なわれることとなる。
【００４１】
マネジメント５３は、複数のクラスのインスタンス管理を管理するものであり、オブジェクトの生成や、共有メモリの確保などの管理を行なうものである。
【００４２】
次に、サーバ１０における、共有メモリ２０とユーザプログラム３０との関係について図６のイメージ図を参照して説明する。
【００４３】
共有メモリ２０は、サーバ１０において複数のプロセス間で共有することができるメモリ領域である。ユーザプログラム３０は、サーバ１０が実行するプログラムの領域である。
【００４４】
サーバ１０において、提供するサービスに必要なリソースは、サービスの開始前にあらかじめ予約する必要があるため、呼処理が発生する前の段階で、呼処理を実行するために必要な呼処理オブジェクトのメモリ領域が共有メモリ２０上に確保される。
【００４５】
本実施形態では、共有メモリ２０上にサービス提供に必要なクラスインスタンス管理２１を設け、このクラスインスタンス管理が呼処理サービスに必要な１又は複数オブジェクトを確保し、管理するものとする
図１は、クラスインスタンス管理における複数のオブジェクトの配列を説明するイメージ図である。
【００４６】
図１において、例えば呼処理サービスを提供する際、呼処理サービスを実行するためにｎ＋１個のオブジェクト＃０〜＃ｎを必要とし、これらオブジェクト＃０〜＃ｎに設定されたクラスをクラスＡ及びクラスＢとする。
【００４７】
従来、クラスのオブジェクト管理は、それぞれのクラスのオブジェクトを確保するものとしていた。そのため、サービス提供に必要なオブジェクトを呼び出す際、クラスをまたいでオブジェクトを呼び出すことが行なわれていた。
【００４８】
例えば、クラスＡのインスタンス管理はクラスＡのオブジェクトを管理し、クラスＢのインスタンス管理はクラスＢのオブジェクトを管理しているので、呼処理サービスに必要なそれぞれのオブジェクトの呼び出しは、クラスＡのインスタンス管理から呼び出したり、クラスＢのインスタンス管理から呼び出したりしている。
【００４９】
しかし、本実施形態では、図１に示すように、クラスのインスタンス管理２１はサービス提供に必要なオブジェクトを所定順に配列して確保する構造である。このような構造にすることにより、サービス提供に応じて迅速な処理を図ることができる。
【００５０】
また、本実施形態のクラスのインスタンス管理２１は、共有メモリ２０上にある。クラスインスタンス管理２１を共有メモリ２０上にすることで、障害発生後にプロセスが再生成されても消えずに保持することができる。また、例えばＡＣＴ系サーバ１ＡとＳＢＹ系サーバ１Ｂとの間でデータの同期化を図る所定のデータ２重化システムを利用することで、消えずに保持されたインスタンス管理のオブジェクトを別ホストへ転送し、ホストをまたいだ呼の救済も可能とする。
【００５１】
なお、本実施形態では、インスタンス管理２１を共有メモリ２０上としたが、プロセス再生成されても消えないメモリエリアであれば、共有メモリ２０に限定されない。
【００５２】
また、例えば、複数の呼が発生すると、１種類のオブジェクトを複数使用することになるため、クラスインスタンス管理２１が図１に示すように、サービスに必要なオブジェクトを配列する構造をとることにより、クラスインスタンス管理２１は、呼処理発生時の要求に応じて、オブジェクトを切り出して引き渡したり、又は不要となり次第オブジェクトを次第再びプーリングするという管理を行なうことができる。
【００５３】
さらに、継承系列が同じクラスとして、要求に応じて生成クラスを選択するといった捕捉を行なうため、クラスインスタンス管理２１によってメモリ領域は同一でそれぞれのクラスを要求時に切り替えて渡すことができる。
【００５４】
続いて、サーバ１０において、呼処理サービスを提供中に、ハードウェアやソフトウェアに障害が発生したときの呼処理オブジェクトの救済について図面を参照して説明する。
【００５５】
本実施形態に係る共有メモリ２０上における各呼処理オブジェクトの構造について図７を参照して説明する。図７に示すように、各呼処理オブジェクトは、仮想関数テーブルポインタ（ＶＦＴＰ）、クラス番号、オブジェクトデータを有する。図８は、呼処理オブジェクトの救済を説明する説明図である。
【００５６】
ＶＦＴＰは、それぞれのクラスの仮想関数に対応させるため、仮想関数テーブルへのポインタである。
【００５７】
クラス番号は、少なくともクラスを識別することができる識別情報である。クラス番号は、例えばオブジェクト論理ＩＤ（ＬＩＤ）を適用することができる。オブジェクト論理ＩＤ（ＬＩＤ）は、クラス番号とインスタンス番号により構成される識別情報である。また、クラス番号は、オブジェクトを生成するときにクラスを選択した際に設定されるものである。
【００５８】
本実施形態では、ＶＦＴＰのほかに共有メモリ２０上のオブジェクトがどのクラスのオブジェクトであるかを判定するためのクラス番号を設ける。このように、クラス番号を設けることとしたのは次の理由からである。
【００５９】
オブジェクト指向言語（例えばＣ＋＋言語）により生成される一般的なオブジェクト内には、それぞれクラスの関数に対応させるため、関数テーブルへのポインタを保持している。そして、承継系列が同様で異なる承継レベルのオブジェクトを生成した場合、ＶＦＴＰを切り替えることによりオブジェクトの動作条件を決定している。
【００６０】
しかし、上記のような方式を用いて、呼処理オブジェクトを救済しようとすると適当に呼処理オブジェクトの救済が行なわれない。
【００６１】
その理由は、仮想関数テーブルは、プロセスの生成毎にメモリ（図８ではヒープ領域）上に生成するため、プロセスが再生成されると、同一エリアに捕捉される保証がない。すなわち、以前（プロセス再生成前）とは異なるエリアに割り付けられる。また、ＶＦＴＰは救済メモリ領域に配置されているため、以前に生成された情報（変数）が残っている。そのため、ＶＦＴＰに設定されている以前の情報（変数）の対応性が失われるからである。そこで、プロセス生成毎にＶＦＴＰ自体を再設定する必要がある。
【００６２】
しかし、本実施形態では、同一メモリエリアに異なるクラスを割り付けるため（すなわち、本実施形態ではクラスインスタンス管理２１にサービスに必要なオブジェクトを配置させるので、異なるクラスのオブジェクトが割り当てられるため）、当該メモリエリアにどのクラスのオブジェクトが以前割り当てられていたのか、このままでは判定するができないので、ＶＦＴＰの再設定をすることができない。
【００６３】
このため、ＶＦＴＰと同様、救済されるオブジェクト内に実際のクラスと対応付けされているクラス番号により、クラスを判定し、再設定するべきクラスを判定し、ＶＦＴＰを再設定することができる。
【００６４】
そして、ＶＦＴＰが再設定されると、そのＶＦＴＰを通じてオブジェクトが備える関数を呼び出して動作させることができ、呼処理オブジェクトを救済することができる。これにより、ＶＦＴＰが、プロセス毎若しくはホスト毎に異なっても呼処理オブジェクトを救済することができる。
【００６５】
（Ｂ）他の実施形態
（Ｂ−１）上述した実施形態では、ＳＢＹ系サーバを１台のサーバとした場合を例にして説明したが、ＳＢＹ系サーバの設置台数は２台以上であってもよい。
【００６６】
（Ｂ−２）上述した実施形態では、上述した実施形態において、ユーザプログラム２０Ａ及び２０Ｂ、データ２重化制御部データ２重化クライアントライブラリ３０Ａ及び３０Ｂ、データ２重化制御部４０Ａ及び４０Ｂ、系構成管理部５０Ａ及び５０Ｂ、２重化開始・停止通知受付ライブラリ６０Ａ及び６０Ｂは、それぞれのサーバにおけるＯＳ（オペレーティングシステム）により管理されるソフトウェアとして実現可能なものである。
【図面の簡単な説明】
【００６７】
【図１】本実施形態のクラスインスタンス管理における複数のオブジェクトの配列を説明するイメージ図である。
【図２】本実施形態のＡＣＴ系サーバ１ＡとＳＢＹ系サーバ１Ｂとを有する冗長構成を説明する図である。
【図３】本実施形態のサーバのハードウェア構成を示すブロック図である。
【図４】本実施形態のサーバが実現するソフトウェア構成を示す図である。
【図５】本実施形態のサーバにおける一般的なオブジェクトモデルのイメージ図である。
【図６】本実施形態の共有メモリとユーザプログラムとの関係を説明する説明図である。
【図７】本実施形態の共有メモリ上における各呼処理オブジェクトの構造を示す説明図である。
【図８】本実施形態の呼処理オブジェクトの救済を説明する説明図である。
【符号の説明】
【００６８】
１１…ＣＰＵ、１２…メモリ、１３…外部記憶装置、２０…共有メモリ、１１Ａ…再開制御機能部、２１…クラスインスタンス管理。
【図１】
2006285443.tif 000003
【図２】
2006285443.tif 000004
【図３】
2006285443.tif 000005
【図４】
2006285443.tif 000006
【図５】
2006285443.tif 000007
【図６】
2006285443.tif 000008
【図７】
2006285443.tif 000009
【図８】
2006285443.tif 000010