(57)【要約】インターネットや仮想プライベートネットワークなどの通信ネットワークを介して、企業内および企業間のコンピュータプログラムと対話するコンピュータプログラムの故障許容を提供するネットワーク接続型エンタープライズサーバの機構。故障許容は、トランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することによって提供される。本発明では、トランザクション処理を使用してローカルデータおよび処理を障害から保護し、レプリケーションを使用して複数の企業にまたがる処理および通信を保護する。【特許請求の範囲】
【請求項１】
通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介してコンピュータ間のトランザクション処理と、オブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータの少なくとも１つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができる
方法。
【請求項２】
前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項１に記載の方法。
【請求項３】
前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項１に記載の方法。
【請求項４】
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作する、請求項１に記載の方法。
【請求項５】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項４に記載の方法。
【請求項６】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項４に記載の方法。
【請求項７】
オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項５に記載の方法。
【請求項８】
オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、または、トランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、そして、トランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項６に記載の方法。
【請求項９】
オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項８に記載の方法。
【請求項１０】
前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項１に記載の方法。
【請求項１１】
前記通信ネットワークを介してコンピュータ間に送信されたメッセージが撤回されない、請求項１に記載の方法。
【請求項１２】
１つの企業のコンピュータ内の障害が、別の企業のコンピュータでの活動をアボートしない、請求項１に記載の方法。
【請求項１３】
ネットワークモードではロールフォワード回復が使用され、そして、トランザクションモードではロールバック／アボート回復が使用される、請求項４に記載の方法。
【請求項１４】
前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項１３に記載の方法。
【請求項１５】
１つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクト若しくはプロセスの、またはデータベースの連続的な動作を中断しない、請求項１４に記載の方法。
【請求項１６】
オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、２度目には処理されない、請求項１５に記載の方法。
【請求項１７】
ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、前記オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項１５に記載の方法。
【請求項１８】
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、前記トランザクションがコミットまたはアボートするまで、待ち行列に入れられている、請求項４に記載の方法。
【請求項１９】
オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項１８に記載の方法。
【請求項２０】
現在のトランザクションのメッセージが処理されるが、囲みトランザクション（ｅｎｃｌｏｓｉｎｇ  ｔｒａｎｓａｃｔｉｏｎ）のメッセージ、または非トランザクション（ｎｏ  ｔｒａｎｓａｃｔｉｏｎ）のメッセージは待ち行列に入れられたままである、請求項１９に記載の方法。
【請求項２１】
通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも１つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、そして、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作する、
方法。
【請求項２２】
前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項１に記載の方法。
【請求項２３】
前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項１に記載の方法。
【請求項２４】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項２１に記載の方法。
【請求項２５】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項２１に記載の方法。
【請求項２６】
オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項２４に記載の方法。
【請求項２７】
オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項２５に記載の方法。
【請求項２８】
オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項２７に記載の方法。
【請求項２９】
前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項２１に記載の方法。
【請求項３０】
前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項２１に記載の方法。
【請求項３１】
１つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項２１に記載の方法。
【請求項３２】
ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック／アボート回復が使用される、
請求項２１に記載の方法。
【請求項３３】
前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項３２に記載の方法。
【請求項３４】
１つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクト若しくはプロセスの、またはデータベースの連続的な動作を中断しない、請求項３３に記載の方法。
【請求項３５】
オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、２度目には処理されない、請求項３４に記載の方法。
【請求項３６】
ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項３４に記載の方法。
【請求項３７】
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、請求項２１に記載の方法。
【請求項３８】
オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項３７に記載の方法。
【請求項３９】
現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項３８に記載の方法。
【請求項４０】
通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも１つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、
１つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
方法。
【請求項４１】
前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項４０に記載の方法。
【請求項４２】
前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項４０に記載の方法。
【請求項４３】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項４０に記載の方法。
【請求項４４】
オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項４０に記載の方法。
【請求項４５】
オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項４３に記載の方法。
【請求項４６】
オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項４５に記載の方法。
【請求項４７】
前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項４０に記載の方法。
【請求項４８】
前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項４０に記載の方法。
【請求項４９】
１つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項４０に記載の方法。
【請求項５０】
ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック／アボート回復が使用される、
請求項４０に記載の方法。
【請求項５１】
前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項５０に記載の方法。
【請求項５２】
１つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクト若しくはプロセスの、またはデータベースの連続的な動作を中断しない、請求項５１に記載の方法。
【請求項５３】
オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、２度目には処理されない、請求項５２に記載の方法。
【請求項５４】
ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項５２に記載の方法。
【請求項５５】
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、請求項４０に記載の方法。
【請求項５６】
オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項５５に記載の方法。
【請求項５７】
現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項５６に記載の方法。
【請求項５８】
通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも１つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、
１つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
方法。
【請求項５９】
前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項５８に記載の方法。
【請求項６０】
前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項５８に記載の方法。
【請求項６１】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項５８に記載の方法。
【請求項６２】
オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項６１に記載の方法。
【請求項６３】
オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項５８に記載の方法。
【請求項６４】
オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項６３に記載の方法。
【請求項６５】
前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項５８に記載の方法。
【請求項６６】
前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項５８に記載の方法。
【請求項６７】
１つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項５８に記載の方法。
【請求項６８】
ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック／アボート回復が使用される、
請求項５８に記載の方法。
【請求項６９】
前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項６８に記載の方法。
【請求項７０】
１つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクトまたはプロセスの、またはデータベースの連続的な動作を中断しない、請求項６９に記載の方法。
【請求項７１】
オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、２度目には処理されない、請求項７０に記載の方法。
【請求項７２】
ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項７０に記載の方法。
【請求項７３】
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、請求項５８に記載の方法。
【請求項７４】
オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項７３に記載の方法。
【請求項７５】
現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項７４に記載の方法。
【請求項７６】
通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも１つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、
ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック／アボート回復が使用される、
方法。
【請求項７７】
前記トランザクション処理が、ローカルデータおよび処理を障害から保護する、請求項７６に記載の方法。
【請求項７８】
前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項７６に記載の方法。
【請求項７９】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項７６に記載の方法。
【請求項８０】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードでは、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項７６に記載の方法。
【請求項８１】
オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項７９に記載の方法。
【請求項８２】
オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、または、トランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、そして、トランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項８０に記載の方法。
【請求項８３】
オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項８２に記載の方法。
【請求項８４】
前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項７６に記載の方法。
【請求項８５】
前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項７６に記載の方法。
【請求項８６】
１つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項７６に記載の方法。
【請求項８７】
前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項７６に記載の方法。
【請求項８８】
１つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクトまたはプロセスの、またはデータベースの連続的な動作を中断しない、請求項８７に記載の方法。
【請求項８９】
オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、２度目には処理されない、請求項８８に記載の方法。
【請求項９０】
ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、前記オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項８８に記載の方法。
【請求項９１】
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで、待ち行列に入れられている、請求項７６に記載の方法。
【請求項９２】
オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項９１に記載の方法。
【請求項９３】
現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項９２に記載の方法。
【請求項９４】
通信ネットワークを介して、異なる企業のコンピュータ間に故障許容を提供する方法であって、
通信ネットワークを介して、コンピュータ間のトランザクション処理とオブジェクトまたはプロセスのレプリケーションとを統合することを含み、
前記コンピュータのうちの少なくとも１つの上で動作するコンピュータプログラムが、前記通信ネットワークを介して前記コンピュータのうちの別のコンピュータ上のプログラムと通信している間に、障害から回復することができ、
オブジェクトまたはプロセスが、ネットワークモードまたはトランザクションモードで動作し、そして、
オブジェクトまたはプロセスがトランザクションモードである間、同一のトランザクションの一部ではない別のオブジェクトまたはプロセスから受信した要求が、トランザクションがコミットまたはアボートするまで待ち行列に入れられている、
方法。
【請求項９５】
前記トランザクション処理がローカルデータおよび処理を障害から保護する、請求項９４に記載の方法。
【請求項９６】
前記レプリケーションが、前記通信ネットワークを介した処理および通信を障害から保護する、請求項９４に記載の方法。
【請求項９７】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記ネットワークモードで、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、オブジェクトまたはプロセスレプリケーションシステムによって障害から保護される、
請求項９４に記載の方法。
【請求項９８】
１つのコンピュータ上のオブジェクトまたはプロセスが、前記トランザクションモードで、ローカルデータベース内のオブジェクトまたはプロセスと対話することはできるが、前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと対話することはできず、そして、
データが、トランザクションモードで、トランザクション処理システムによって障害から保護される、
請求項９４に記載の方法。
【請求項９９】
オブジェクトまたはプロセスが、デフォルトでは前記ネットワークモードで動作し、そして、
オブジェクトまたはプロセスが、ネットワークモードで、同一のコンピュータ上の別のオブジェクトまたはプロセスと、または前記通信ネットワークを介して別のコンピュータ上のオブジェクトまたはプロセスと自由に対話することができる、
請求項９７に記載の方法。
【請求項１００】
オブジェクトまたはプロセスが、明示的にトランザクションを開始することによって、またはトランザクションの一部である別のオブジェクトまたはプロセスによって呼び出されることによってトランザクションモードになり、そして、
オブジェクトまたはプロセスが、トランザクションモードでは、前記通信ネットワークを介してリモートオブジェクトまたはプロセスのメソッドを呼び出すことができず、またトランザクションの一部ではないオブジェクトまたはプロセスから派生する要求メッセージを受け付けることができない、
請求項９８に記載の方法。
【請求項１０１】
オブジェクトまたはプロセスが、トランザクションがコミットまたはアボートしたときに、トランザクションモードを終了し、そして、ネットワークモードに戻る、請求項１００に記載の方法。
【請求項１０２】
前記通信ネットワークを介した、異なる企業のコンピュータが、前記通信ネットワークを介した対話の整合性の取れたビューを維持する、請求項９４に記載の方法。
【請求項１０３】
前記通信ネットワークを介してコンピュータ間に送信されたメッセージが決して撤回されない、請求項９４に記載の方法。
【請求項１０４】
１つの企業のコンピュータでの障害が、別の企業のコンピュータでの活動をアボートしない、請求項９４に記載の方法。
【請求項１０５】
ネットワークモードではロールフォワード回復が使用され、そして、
トランザクションモードではロールバック／アボート回復が使用される、
請求項９４に記載の方法。
【請求項１０６】
前記ロールフォワード回復が、チェックポイントから開始し、次いで、メッセージログからメッセージを再生し、そして、
アボートされたトランザクションに関与するメッセージは再生されない、
請求項１０５に記載の方法。
【請求項１０７】
１つのオブジェクトまたはプロセスのロールフォワード回復が、別のオブジェクトまたはプロセスの、またはデータベースの連続的な動作を中断しない、請求項１０６に記載の方法。
【請求項１０８】
オブジェクトまたはプロセスのロールフォワード回復中に生成されたメッセージが、複製メッセージとして検出され、そして、２度目には処理されない、請求項１０７に記載の方法。
【請求項１０９】
ロールフォワード回復を使用して回復したオブジェクトまたはプロセスが、オブジェクトまたはプロセスの初期動作中に受信されたものと同一の応答および値である、別のオブジェクトまたはプロセスからの応答、およびデータベースからの値を受信する、請求項１０６に記載の方法。
【請求項１１０】
オブジェクトまたはプロセスの回復が、前記オブジェクトまたはプロセスの状態を復元し、次いで、トランザクションがコミットまたはアボートするのを待って待ち行列に入れられているメッセージを処理する、請求項９４に記載の方法。
【請求項１１１】
現在のトランザクションのメッセージが処理されるが、囲みトランザクションのメッセージ、または非トランザクションのメッセージは待ち行列に入れられたままである、請求項１１０に記載の方法。
【発明の詳細な説明】
【０００１】
（関連出願の相互参照）
本出願は、参照により本明細書に組み込む米国仮出願第６０／２４４，０７７号からの優先権を主張する。
【０００２】
（連邦政府後援の研究または開発に関する文書）
該当なし
（コンピュータプログラムの付録への参照）
該当なし
（著作権保護の対象となる資料の通知）
本特許文献の資料の一部は、米国および他国の著作権法に基づく著作権保護の対象となることがある。著作権の所有者は、米国特許商標局のファイルまたは記録に記載されているとおりに特許文献または特許開示を第三者が複製することに異議を唱えないが、その場合を除きすべての著作権を留保する。本明細書は、本特許著作権の所有者が、それだけには限定されないが、３７  Ｃ．Ｆ．Ｒ．§１．１４による権利も含めて、本特許文書を機密に保持しておく所有者のいずれの権利も拒否するものではない。
【０００３】
（発明の背景）
１．発明の分野
本発明は一般に、通信ネットワークを介してリモートコンピュータプログラムと対話するときに、確実かつ連続的に動作しなければならないコンピュータプログラムに関し、より詳細には、レプリケーションとトランザクション処理との統合によって故障許容を提供する方法に関する。
【０００４】
２．背景技術の説明
インターネットを介した企業間の対話が増加するにつれて、多くのコンピュータシステムは、障害にもかかわらず信頼性の高い連続動作を提供しなければならない。コンピュータシステムの従来の故障許容は、個々のコンピュータの処理作業を障害から保護することに焦点を置いている。多くの企業のコンピュータシステムは、トランザクション処理を使用して、コンピュータシステムのデータを障害から保護する。トランザクションが完了する（例えばコミットする）のを妨げる障害の場合、トランザクションがアボートし、データはトランザクションの開始時の状態に戻る。
【０００５】
トランザクション処理は、データが、トランザクションがコミットした後は整合性の取れた最終的な状態、また、トランザクションがアボートした後は整合性の取れた最初の状態で残り、不整合で一部が処理された状態では残らないことを確実にすることによって、コンピュータシステムのデータを保護する。障害時には、トランザクションがデータに対して行うすべての処理が失われ、トランザクションを開始したクライアントは、トランザクションを再試行することができる。
【０００６】
トランザクションは、人間のクライアントに対するサーバとして働くコンピュータシステムに対して適切に動作する。人間のクライアントは、トランザクションがアボートされ、処理が失われ、トランザクションを最初から再試行しなければならないことを理解することができる。また、人間のクライアントは、トランザクションを再試行したときに、トランザクションの結果が、トランザクションを最初に試行したときに得られたであろう結果とは違うかもしれないと理解することもできる。
【０００７】
しかし、異なる企業内、または同一の企業の異なる部署内の２台のコンピュータがインターネットや仮想プライベートネットワークなどの通信ネットワークを介して互いに対話するときは、トランザクションはあまり有効ではない。クライアントとして働くコンピュータには、人間のクライアントの知能はない。トランザクションがサーバによってアボートされたときに、適切に動作するようにクライアントコンピュータをプログラムすることは難しい。また、サーバの使用を試みた最初の試行と、アボート後の再試行との間に結果として生じ得る何らかの違いを処理するようにクライアントコンピュータをプログラムすることも難しい。
【０００８】
理論上は、単一の分散トランザクションに、１つの企業のクライアントコンピュータと別の企業のサーバコンピュータとを含めることは可能である。トランザクションは、トランザクションのコーディネータとして働くクライアントコンピュータによって開始される。トランザクションのコミット中の重大な瞬間にクライアントが障害を起こした場合、または２台のコンピュータ間の通信が失われた場合、サーバは、クライアントが回復するまで停止する。その結果、実際には、分散トランザクションは使用されない。
【０００９】
現況技術では、コンピュータ群が、ネットワークを介して通信するトランザクションに参加することはできる。しかし、トランザクションは、中央のトランザクションコーディネータの制御下にある。同様に、データベースのいくつかのコピーが共存できるようにする技術は存在するが、中央制御装置は、そのコピーの１つを１次コピー、その他のコピーをバックアップコピーとして指定する必要がある。複数のコンピュータが、おそらくはネットワークを介して、トランザクションに参加できるようにする技術も存在する。こうした構成では、中央制御装置はない。代わりに、任意のプロセッサが、それが開始するトランザクションのコーディネータとして働くことができる。しかし、各トランザクションを管理するコーディネータは１つしかない。その結果、いくつかの企業のコンピュータにまたがる活動で、各企業が、そのコンピュータ内でのトランザクションを、別の企業のコンピュータ上のコーディネータによって管理できるようにする必要がある。ほとんどの企業は、そのような形で、他の企業がその企業のコンピュータを使用することを許さないはずである。
【００１０】
したがって、複数の企業のコンピュータにまたがる活動を制御する中央制御装置の使用を回避する故障許容技術が必要となる。本発明は、その必要性等に応え、故障許容技術の当技術分野の現状における欠陥を克服する。
【００１１】
（発明の概要）
本発明は、レプリケーションとトランザクション処理とを統合することによって通信ネットワークを介して複数の企業にまたがるコンピュータアプリケーションの故障許容を提供するネットワーク接続型エンタープライズサーバ（Ｎｅｔｗｏｒｋｅｄ  Ｅｎｔｅｒｐｒｉｓｅ  Ｓｅｒｖｅｒ）の機構を提供する。本発明では、トランザクション処理を使用して、ローカルのデータおよび処理を障害から保護し、レプリケーションを使用して、複数の企業にまたがる処理および通信を障害から保護する。本発明は、中央制御装置なしに、また任意の企業がそのトランザクションを別の企業のコーディネータから制御できるようにする必要なしに、異なる企業のコンピュータ間のネットワークを介したトランザクション処理の、また信頼性の高い対話の便益を獲得する。レプリケーションとトランザクション処理とを統合することによって、コンピュータアプリケーションが通信ネットワークを介して複数の企業にまたがる状況で、いずれもそれ自体では不十分な両方の戦略の利点を提供する。
【００１２】
本発明をより一般的な用語で説明することはできるが、標準のオブジェクト指向の用語を使用することによって、本発明が理解しやすくなる。本発明の機構を使用するオブジェクトは、２つのモードのいずれかで動作する。
【００１３】
ネットワークモード。このモードでは、あるコンピュータ上の１つのオブジェクトは、通信ネットワークを介して、複数のリモートコンピュータ上の複数のオブジェクトと対話することができる。ネットワークモードでは、オブジェクトは、オブジェクトレプリケーションシステムによって障害から保護される。
【００１４】
トランザクションモード。このモードでは、あるコンピュータ上の１つのオブジェクトは、ローカルデータベース内にあるオブジェクトとは対話することができるが、通信ネットワークを介してリモートコンピュータ上のオブジェクトと対話することはできない。トランザクションモードでは、オブジェクトは、トランザクション処理システムによって障害から保護される。
【００１５】
デフォルトでは、オブジェクトは、ネットワークモードで動作する。ネットワークモードでは、オブジェクトは、それ自体のコンピュータの他のオブジェクト、あるいは、通信ネットワークを介して、リモートコンピュータにある複数のオブジェクトと自由に対話することができる。こうした対話を伝達するメッセージ、すなわち要求メッセージ（メソッド呼出しを含む）、および応答メッセージ（対応する応答を含む）は、いずれもメッセージログに記録される。
【００１６】
オブジェクトは、明示的にトランザクションを開始することによって、あるいはトランザクションの一部である別のオブジェクトによって呼び出されることによってトランザクションモードになる。トランザクションモードでは、オブジェクトは、ネットワークを介してリモートオブジェクトのメソッドを呼び出すことも、トランザクションの一部ではないオブジェクトからの要求メッセージを受け付けることもできない。
【００１７】
オブジェクトは、トランザクションがコミット、またはアボートしたときにトランザクションモードからネットワークモードに戻る。
【００１８】
本発明は、オブジェクトのレプリケーションの機構とトランザクションの機構とを統合して、コンピュータプログラムが、通信ネットワークを介してリモートコンピュータプログラムと通信している間に、障害から確実に回復できるようにするネットワーク接続型エンタープライズサーバの機構を提供し、その結果、
（ａ）コンピュータプログラムが、障害にもかかわらず、その意図された機能を引き続き実行することができる。
【００１９】
（ｂ）コンピュータプログラムが、障害によって生じる破損または不整合からそのデータを保護することができる。
【００２０】
（ｃ）コンピュータプログラムが、まるで障害が起こらなかったかのように、リモートコンピュータとの対話を続行することができる。
【００２１】
（ｄ）コンピュータプログラムは、障害を起こしたときに、他のコンピュータプログラムの動作を中断することはできない。
【００２２】
本発明の他の利点は、本文書の以下の部分で明らかになる。詳細な説明は、本発明の好ましい実施の形態を十分に開示するためのものであって、それに限定されるものではない。
【００２３】
本発明は、例として示したにすぎない以下の図を参照することによってより十分に理解できよう。
【００２４】
（発明の詳細な説明）
例として示した図をより具体的に参照すると、本発明は、図１から図１３を参照して説明する。本明細書に開示した基本的な概念から逸脱しなければ、機器が構成および各部の詳細については異なっていてもよく、また方法が特定のステップおよび手順について異なっていてもよいことを理解されたい。
【００２５】
本発明の機構の詳細な説明は、Ｃ＋＋、Ｊａｖａ（登録商標）、および他のオブジェクト指向プログラミング言語、およびＣＯＲＢＡ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：共通オブジェクトリクエストブローカーアーキテクチャ）、Ｊａｖａ（登録商標）  Ｒｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ、およびＡｃｔｉｖｅＸ／ＤＣＯＭ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｏｎｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）などの分散オブジェクトアーキテクチャで使用する標準のオブジェクト指向の用語を使用する。特に、この説明では、以下の定義を使用する。
【００２６】
オブジェクトは、オブジェクト指向コンピュータプログラムの実行中に作成され、属性（データ構造または変数）、およびメソッド（プロシージャ）によって表される。
【００２７】
クライアント−サーバモデルに基づく分散オブジェクトコンピューティングでは、クライアントオブジェクトは、サーバオブジェクトに、その作業またはサービスを実行するよう要求する。クライアントオブジェクトは、サーバオブジェクトが実行する作業またはサービスを定義するサーバオブジェクトのメソッドの１つを呼び出す旨の要求メッセージをサーバオブジェクトに送信する。要求メッセージは、メソッドの名前、およびメソッドの引数を含む。メソッドを実行した後、サーバオブジェクトは、応答メッセージをクライアントオブジェクトに送信することによって応答する。応答メッセージは、メソッド呼出しの結果を含んでいる。
【００２８】
以下の説明の大部分では、クライアントオブジェクトおよびサーバオブジェクトに関して記載しているが、機構は普遍的であり、各オブジェクトは、クライアントおよびサーバとして働くことができる。このように両方の役割を果たすのは一般に、サプライチェーンの用途など、複数の連鎖した企業が関与するネットワークで接続された用途の場合である。各オブジェクトがクライアントおよびサーバの役割を果たすことができるため、本発明は、クライアント−サーバモデルに基づく用途だけではなく、ピアツーピアモデルに基づく用途にも適用される。
【００２９】
オブジェクトの状態とは、オブジェクトの属性の値である。オブジェクトの状態は、時間が経つと変わる可能性がある。オブジェクトの状態の変化は、オブジェクトのメソッドを呼び出す、オブジェクトに送信されたメッセージの結果である。
【００３０】
オブジェクトのレプリカとは、元のオブジェクトと同一の状態を有し、一般的に異なるコンピュータがホストとなるオブジェクトのコピーである。
【００３１】
図１に示すように、オブジェクトは、複数の故障許容領域に分類され、オブジェクトのすべてのレプリカは、単一の故障許容領域内に配置される。例えば、図１は、分岐位置１０にある単一のコンピュータまたはホスト、および２つのコンピュータ群またはホスト群１２、１４、１６、および１８、２０、２２を示す。３つの故障許容領域２４、２６、２８を示している。ホスト１４、ホスト１６、ホスト１８は、それぞれ２つの故障許容領域に関与しており、ホスト１０、ホスト２０、およびホスト２２は、１つのみの故障許容領域に関与していることに注意されたい。オブジェクトＢのすべてのレプリカは、単一の故障許容領域内でホストされており、オブジェクトＣ、Ｄ、Ｅのすべてのレプリカも同様であることに注意されたい。故障許容領域の一部ではなく、複製されていないオブジェクトＡは、従来のインターネットメッセージ３２を介して、ゲートウェイ３０を通って故障許容領域内にアクセスする。
【００３２】
本発明は、当技術分野でよく知られているトランザクション処理機構を利用する。特に、参照により本明細書に組み込んだＯｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ（ＯＭＧ）（Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ，Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖ１．２（Ｆｉｎａｌ  Ｄｒａｆｔ），ＯＭＧ  Ｐｌａｔｆｏｒｍ  Ｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｔｔｅｅ  Ｄｏｃｕｍｅｎｔ  ｐｔｃ／２０００−１１−０７，Ｊａｎｕａｒｙ  ２０００）によって標準化されたＯｂｊｅｃｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｉｃｅ（ＯＴＳ）の仕様を利用する。本発明は同様に、Ｊａｖａ（登録商標）  Ｔｒａｎｓａｃｔｉｏｎ  ＳｅｒｖｉｃｅやＭｉｃｒｏｓｏｆｔ  Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｉｃｅなど、他のトランザクションサービス標準にも適用できることに注意されたい。
【００３３】
本明細書では、トランザクション処理システムの基本的な戦略を記載する。トランザクションは、標準ＡＣＩＤ特性、すなわち原子性、一貫性、独立性、耐久性を満たす必要がある。原子性とは、システムが、データに対する個々のすべての作業を実行する、あるいは部分的に完了した作業によってデータに対する影響を一切残さないようにすることを意味する。一貫性は、トランザクションの任意の実行によって、データベースを、ある整合状態から別の整合状態に移行させることを必要とする。独立性は、並行するトランザクションの作業が、各トランザクションを完了まである順序で連続的に実行させることによって得られる結果と区別できない結果をもたらすことを必要とする。耐久性とは、コミットされたトランザクションの作用を保持し、障害から回復した後のデータベースが確実に整合性を取れるようにすることである。
【００３４】
図２に示すように、トランザクションは、オブジェクトトランザクションシステム５４のｂｅｇｉｎ−ｔｒａｎｓａｃｔｉｏｎ（）メソッド５２を呼び出すオブジェクト５０で開始する。この呼出しは、一意のトランザクション識別子を作成し、トランザクションコンテキスト５６にあるそのトランザクション識別子を戻す。トランザクションを開始したオブジェクト５０は、トランザクションのメンバになる。オブジェクト５０や５８などのトランザクションのメンバであるオブジェクトがオブジェクト５８や６０などの別のオブジェクトのメソッドを呼び出すときはいつでも、オブジェクトトランザクションシステム５４は、トランザクションコンテキストを、メッセージ６２や６４など、呼出しを含む対応するメッセージに付加する。トランザクションコンテキストを含むメッセージを受信した後、呼び出されたオブジェクト５８または６０は、オブジェクトトランザクションシステム５４のｒｅｇｉｓｔｅｒ（）メソッド６６または６８を呼び出し、そのトランザクションのメンバになる。そのトランザクションのメンバになった後、必要に応じてオブジェクトの現在の状態のチェックポイント７０または７２がログ７４に格納され、したがってその状態を格納することができる。図には、オブジェクトが異なるコンピュータに配置されていることは示していないが、この説明を通じて、オブジェクトを異なるコンピュータに配置できることを理解されたい。
【００３５】
オブジェクトは、トランザクションのメンバである間、そのトランザクションのメンバではないオブジェクトからその任意のメソッドの呼出しを受け付けることができない。こうした呼出しは、トランザクションが完了するまで待ち行列に入れられる。
【００３６】
トランザクションが、２相コミットプロトコルとして知られるプロトコルを使用して、アボート（図３）またはコミット（図４）のいずれかで完了する。図３は、アボートによって完了する３つのオブジェクト５０、１００、１０２を含むトランザクションを示す。オブジェクト５０は、オブジェクトトランザクションシステム５４のａｂｏｒｔ（）メソッド１０４を呼び出すことによってアボートを開始する。次いで、システムは、トランザクションの各メンバオブジェクトの対応するａｂｏｒｔ（）メソッド１０６、１０８、１１０を呼び出す。ログ７４に格納されているこれらのオブジェクトの対応するチェックポイント１１２、１１４、１１６を使用して、これらのオブジェクトを、トランザクションに参加する直前の状態に復元する。
【００３７】
図４は、コミットによって完了する３つのオブジェクト５０、１００、１０２を含むトランザクションを示す。オブジェクト５０は、オブジェクトトランザクションシステム５４のｃｏｍｍｉｔ（）メソッド１１８を呼び出す。次いで、システムは、トランザクションの各メンバの対応するｐｒｅｐａｒｅ（）メソッドを呼び出す。オブジェクトは、トランザクションをコミットすることができる場合、ｖｏｔｅｃｏｍｍｉｔ結果を戻し、そうでない場合はｖｏｔｅａｂｏｒｔ結果を戻す。システムは、トランザクションのメンバであるすべてのオブジェクトから票を集める。これらのすべてのオブジェクトがｖｏｔｅｃｏｍｍｉｔ１２６、１２８、１３０を戻した場合、システムは、トランザクションの各メンバの対応するｃｏｍｍｉｔ（）メソッド１３２、１３４、１３６を呼び出す。こうした各メンバは、トランザクションの結果生じるすべての更新を含めて、その現在の状態を永久にし、トランザクションを完了する。任意のメンバがｖｏｔｅａｂｏｒｔ結果を戻した場合、あるいは応答しなかった場合、システムは、図３に示すように、トランザクションの各メンバの対応するａｂｏｒｔ（）メソッド１０６、１０８、１１０を呼び出す。次いで、こうした各オブジェクトは、上述したように、トランザクションに参加するときに記録された状態を復元し、トランザクションを終了する。
【００３８】
また本発明は、オブジェクトレプリケーションによる故障許容のための既知の機構（Ｌ．Ｅ．Ｍｏｓｅｒ，Ｐ．Ｍ．Ｍｅｌｌｉａｒ−Ｓｍｉｔｈ  ａｎｄ  Ｐ．Ｎａｒａｓｉｍｈａｎ，“Ｃｏｎｓｉｓｔｅｎｔ  ｏｂｊｅｃｔ  ｒｅｐｌｉｃａｔｉｏｎ  ｉｎ  ｔｈｅ  Ｅｔｅｒｎａｌ  ｓｙｓｔｅｍ，”Ｔｈｅｏｒｙ  ａｎｄ  Ｐｒａｃｔｉｃｅ  ｏｆ  Ｏｂｊｅｃｔ  Ｓｙｓｔｅｍｓ，ｖｏｌ．４，ｎｏ．２，Ｊａｎｕａｒｙ  １９９８，ｐｐ．８１−９２）、および高信頼全順序マルチキャストプロトコル（ｒｅｌｉａｂｌｅ  ｔｏｔａｌｌｙ−ｏｒｄｅｒｅｄ  ｍｕｌｔｉｃａｓｔ  ｐｒｏｔｏｃｏｌ）を使用してオブジェクトレプリカの整合性を保持するための既知の機構（Ｌ．Ｅ．Ｍｏｓｅｒ，Ｐ．Ｍ．Ｍｅｌｌｉａｒ−Ｓｍｉｔｈ，Ｄ．Ａ．Ａｇａｒｗａｌ，Ｒ．Ｋ．Ｂｕｄｈｉａ  ａｎｄ  Ｃ．Ａ．Ｌｉｎｇｌｅｙ−Ｐａｐａｄｏｐｏｕｌｏｓ，“Ｔｏｔｅｍ：Ａ  ｆａｕｌｔ−ｔｏｌｅｒａｎｔ  ｍｕｌｔｉｃａｓｔ  ｇｒｏｕｐ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｓｙｓｔｅｍ，”Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，ｖｏｌ．３９，ｎｏ．４，Ａｐｒｉｌ  １９９６，ｐｐ．５４−６３）も利用する。両方の出版物を、参照により本明細書に組み込む。
【００３９】
これらの出版物に記載されている機構によって、システムが、オブジェクトの複数のレプリカを保持し、レプリカを確実に整合性の取れた状態に保つことができるようになる。図５を参照すると、オブジェクトグループ１５０、１５２は、それぞれ３つの方法で複製される。各オブジェクトグループ１５０、１５２のレプリカ１５４、１５６、１５８、および１６０、１６２、１６４は、対応するオブジェクトレプリケーションミドルウェア（Ｏｂｊｅｃｔ  Ｒｅｐｌｉｃａｔｉｏｎ  Ｍｉｄｄｌｅｗａｒｅ）１６６、１６８、１７０、および１７２、１７４、１７６、および対応するマルチキャストプロトコル１７８、１８０、１８２、および１８４、１８６、１８８によってサポートされる。図５に示すように、オブジェクトグループ１５０のレプリカ１５８の１つが、オブジェクトグループ１５２のメソッドを呼び出す。その呼出しを含む要求メッセージ１９０は、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ１５２のすべてのレプリカ１６０、１６２、１６４に送信される。故障許容領域内の他のオブジェクトも、オブジェクトグループ１５２のメソッドを呼び出すことができ、これらのメッセージもまた、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ１５２に送信される。故障許容領域外のオブジェクトも、オブジェクトグループ１５２のメソッドを呼び出すことができ、これらのメッセージは、高信頼全順序マルチキャストプロトコルを使用して、オブジェクトグループ１５２にそれらを送信するゲートウェイに送信される。このプロトコルによって、オブジェクトグループ１５２内のすべてのレプリカ１６０、１６２、１６４が、確実に同一のメッセージを同一の順序で受信できるようになる。その結果、それらはすべて、同一の作業を同一の順序で実行する。これによって、レプリカが整合性の取れた状態に保たれる。オブジェクトグループ１５０内の３つのすべてのレプリカ１５４、１５６、１５８がたとえオブジェクトグループ１５２のメソッドを呼び出すとしても、１つの要求メッセージ１９０のみが、オブジェクトグループ１５２内のレプリカ１６０、１６２、１６４に送られる。他の２つのまったく同一の要求メッセージ１９２、１９４を検出し、止める必要がある。同様に、１つの応答メッセージ１９６のみが、オブジェクトグループ１５０内のレプリカ１５４、１５６、１５８に戻される。他の２つのまったく同一の応答メッセージ１９８、２００を検出し、止める必要がある。
【００４０】
オブジェクトが複製されるため、こうしたレプリカがそのように影響を受けない限り、１つまたは複数のオブジェクトレプリカに影響を与える障害の後、システムの動作を続行することができる。
【００４１】
故障許容システムは一般に、アクティブレプリケーションおよびパッシブレプリケーションの２つのレプリケーション戦略をサポートしている。アクティブレプリケーションおよびパッシブレプリケーションは、当技術分野ではよく理解されている用語である（例えば、Ｄ．Ｐ．Ｓｉｅｗｏｒｅｋ  ａｎｄ  Ｒ．Ｓ．Ｓｗａｒｚ，Ｒｅｌｉａｂｌｅ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ：Ｄｅｓｉｇｎ  ａｎｄ  Ｅｖａｌｕａｔｉｏｎ，２ｎｄ  ｅｄｉｔｉｏｎ，Ｂｕｒｌｉｎｇｔｏｎ，ＭＡ，Ｄｉｇｉｔａｌ  Ｐｒｅｓｓ，１９９２、およびＤ．Ｐｏｗｅｌｌ，ｅｄｉｔｏｒ，Ｄｅｌｔａ−４：Ａ  Ｇｅｎｅｒｉｃ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｄｅｐｅｎｄａｂｌｅ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ，Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，１９９１。参照により本明細書に組み込む）。
【００４２】
図５には、アクティブレプリケーション戦略を示している。この図では、オブジェクトグループ１５２のすべてのレプリカ１６０、１６４、１６６が、オブジェクトグループ１５２に対して呼び出された各メソッドを実行する。レプリカの１つが障害を起こし、結果をもたらすことができなくなった場合、その結果は、その他のレプリカから依然として入手可能であり、オブジェクトグループ１５０は、まるで障害が生じなかったかのように継続することができる。
【００４３】
図６には、パッシブレプリケーション戦略を示している。この図では、オブジェクトグループ１５２の中の１つのレプリカ１６０、つまり１次レプリカのみが、オブジェクトグループ１５２に対して呼び出されたメソッドを実行する。他のレプリカ１６２、１６４、つまりバックアップレプリカは、オブジェクトグループ１５２に対して呼び出されたメソッドを実行しない。代わりに、各バックアップレプリカ１５６、１５８、および１６２、１６４では、要求メッセージ１９０および応答メッセージ１９６が各メッセージログ２０２、２０４、および２０６、２０８に記録される。
【００４４】
１次レプリカ１６０の状態が、定期的にバックアップレプリカ１６２、１６４に転送される。ｇｅｔ＿ｓｔａｔｅ（）メソッドが、１次レプリカ１６０に対して呼び出され、オブジェクトの現在の状態をコード化する直列構造（ｓｅｒｉａｌｉｚｅｄ  ｓｔｒｕｃｔｕｒｅ）を戻す。この構造は、ｓｅｔ＿ｓｔａｔｅ（）状態転送メッセージ（ｓｔａｔｅ  ｔｒａｎｓｆｅｒ  ｍｅｓｓａｇｅ）２１０でバックアップレプリカ１６２、１６４に送信される。ｇｅｔ＿ｓｔａｔｅ（）メソッドおよびｓｅｔ＿ｓｔａｔｅ（）メソッドは、それぞれメソッド呼出しおよびメソッド応答を含む他の要求メッセージおよび応答メッセージとともに、対応するメッセージログ２０６、２０８に記録される。同様の状態転送メッセージ２１２を使用して、オブジェクトグループ１５０の１次レプリカ１５４から同一のオブジェクトグループのバックアップレプリカ１５６、１５８に状態を転送する。
【００４５】
図７に、レプリケーションおよびトランザクション処理の統合によって、通信ネットワークを介して複数の企業にまたがるコンピュータアプリケーションの故障許容を提供する本発明の使用を示している。図７では、通信ネットワークを介して対話する２つのオブジェクト２５０、２５２を示す。本発明の戦略は、クライアントオブジェクトとサーバオブジェクトとを区別しない。各オブジェクトは、他のオブジェクトのメソッドを呼び出すことができ、他のオブジェクトからの要求を処理することができる。したがって、本発明は、分散コンピューティングのピアツーピアモデル、およびクライアント−サーバモデルに適用される。さらに、この戦略は、２つのオブジェクトのみに制限されない。任意のシーケンスおよびトポロジで対話する任意の数のオブジェクトに適用される。
【００４６】
図７は、オブジェクトが故障許容のために複製されることを示している。オブジェクト２５０は、重なり合ったボックス２５４、２５６、２５８で示すように、３部複製され、オブジェクト２５２は、重なり合ったボックス２６０、２６２、２６４で示すように、３部複製される。レプリカの数は、その用途に必要な信頼性によって決定される。図７は、各オブジェクトが１つまたは複数のデータベース２６６、２６８、２７０、および２７２、２７４、２７６にアクセスできることを示している。こうしたデータベースは、よく知られているトランザクション機構（Ｐ．Ａ．Ｂｅｒｎｓｔｅｉｎ，Ｖ．Ｈａｄｚｉｌａｃｏｓ  ａｎｄ  Ｎ．Ｇｏｏｄｍａｎ，Ｃｏｎｃｕｒｒｅｎｃｙ  Ｃｏｎｔｒｏｌ  ａｎｄ  Ｒｅｃｏｖｅｒｙ  ｉｎ  Ｄａｔａｂａｓｅ  Ｓｙｓｔｅｍｓ，Ａｄｄｉｓｏｎ  Ｗｅｓｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｍｐａｎｙ，Ｒｅａｄｉｎｇ，ＭＡ，１９８７、およびＪ．Ｇｒａｙ  ａｎｄ  Ａ．Ｒｅｕｔｅｒ，Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ：Ｃｏｎｃｅｐｔｓ  ａｎｄ  Ｔｅｃｈｎｉｑｕｅｓ，Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｓｈｅｒｓ，Ｓａｎ  Ｍａｔｅｏ，ＣＡ，１９９３）を使用して、各自の故障許容を提供すると仮定される。両方の出版物を参照により本明細書に組み込む。
【００４７】
ネットワーク接続型エンタープライズサーバ内で、あるオブジェクトは、２つのモードのうちの１つで動作する。
【００４８】
（ａ）ネットワークモード：このモードでは、ある企業のコンピュータ上の１つのオブジェクトは、通信ネットワークを介して、別の企業の複数のリモートコンピュータ上の複数のオブジェクトと対話することができ、オブジェクトレプリケーションシステムによって障害から保護される。
【００４９】
（ｂ）トランザクションモード：このモードでは、ある企業のコンピュータ上の１つのオブジェクトは、その企業自体の中にあるデータベースと対話することはできるが、別の企業のリモートコンピュータ上のオブジェクトとは対話できない。オブジェクトは、トランザクション処理システムによって障害から保護される。
【００５０】
これらの２つのモードは、レプリケーションおよびトランザクション処理による故障許容に対する２つの既存の戦略に相当する。これらの２つのモードの組合せは、本発明の主題であるレプリケーションとトランザクション処理との統合に相当する。
【００５１】
図７では、破線は、オブジェクトがその間トランザクションモードで動作するトランザクションを示す。この例では、６つのトランザクション２７８、２８０、２８２、および２８４、２８６、２８８を示している。トランザクションの数は、その用途の必要性によって決まる。
【００５２】
デフォルトでは、オブジェクトは、ネットワークモードで動作する。各オブジェクトの初期および最終の作業２９０、２９２、２９４、２９６は、ネットワークモードである。図７に示すネットワークモードでの他の作業の一部が２９８、３００、および３０２である。ネットワークモードでは、オブジェクトは、それ自体のコンピュータ、他のコンピュータ、あるいは他の企業のコンピュータにある他の複数のオブジェクトと自由に対話することができる。図６に示した他のオブジェクトとの対話の一部は、３０４、３０６、３０８、３１０、３１２、３１４、３１６、および３１８である。
【００５３】
オブジェクトは、最初に２９０を開始したとき、またリモートオブジェクト２９２によって呼び出されたときにもネットワークモードになる。明示的にトランザクション３２０、３２２を開始することによって、あるいはすでにトランザクションの一部であるオブジェクトによって呼び出されることによって、オブジェクトはトランザクションモードになる。図８は、サーバオブジェクトＳがトランザクションに参加する条件を列挙している。この表は、サーバオブジェクトＳ、およびＳのメソッドを呼び出し、その結果Ｓでの活動を開始するクライアントオブジェクトＣに言及している。オブジェクトは、そのトランザクションがコミットまたはアボートしたときにトランザクションモードからネットワークモードに戻る。
【００５４】
ケース１。ここでは、クライアントオブジェクトＣもサーバオブジェクトＳも、トランザクションの一部ではない。ネットワーク接続型エンタープライズサーバの機構は、Ｃの要求をＳに渡して、通常のやり方で処理を行う（４００）。
【００５５】
ケース２。サーバオブジェクトＳは、トランザクションＴｓの一部であるが、クライアントオブジェクトＣは、どのトランザクションにも含まれていない。ネットワーク接続型エンタープライズサーバの機構は、トランザクションＴｓがコミットし、終了するまでＣの要求メッセージを待ち行列に入れる（４０２）。Ｓは、ケース１の場合のようにＣの要求を処理する。
【００５６】
ケース３。クライアントオブジェクトＣは、トランザクションＴｃの一部であるが、サーバオブジェクトＳは、どのトランザクションにも含まれていない。ＣおよびＳが同一の故障許容領域内にある場合、ネットワーク接続型エンタープライズサーバの機構は、Ｃの要求メッセージをＳに渡し、Ｓは、トランザクションに参加し（４０４）、Ｃの要求を処理する。そうでない場合、ネットワーク接続型エンタープライズサーバの機構は、Ｃの要求を拒否する（４０６）。
【００５７】
ケース４。クライアントオブジェクトＣは、トランザクションＴｃ内にあり、サーバオブジェクトＳは、トランザクションＴｓの一部である。ＴｃおよびＴｓが同一のトランザクションの場合、ネットワーク接続型エンタープライズサーバの機構は、Ｃの要求をＳに渡し、Ｓは、Ｃの要求を通常のやり方で処理する（４０８）。ＴｃおよびＴｓは異なるトランザクションであるが、ＣおよびＳが同一の故障許容領域内にある場合、ネットワーク接続型エンタープライズサーバの機構は、トランザクションＴｓがコミットし、完了するまで、Ｃの要求を待ち行列に入れ（４１０）、次いで、Ｃの要求をＳに渡して、ケース３の場合のようにＣの要求を処理する。ＣおよびＳが同一の故障許容領域内にない場合、ネットワーク接続型エンタープライズサーバの機構は、Ｃの要求を拒否する（４１２）。
【００５８】
ケース５。このケースは、クライアントオブジェクトＣを伴わない。サーバオブジェクトＳが新しいトランザクションを開始する（４１４）。
【００５９】
あるオブジェクトの故障許容領域は、そのオブジェクトのオブジェクトリファレンスの一部として含まれる（Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ，Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  ＣＯＲＢＡ  Ｆｉｎａｌ  Ａｄｏｐｔｅｄ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，ＯＭＧ  Ｐｌａｔｆｏｒｍ  Ｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｔｔｅｅ  Ｄｏｃｕｍｅｎｔ  ｐｔｃ／２０００−０４−０４，Ａｐｒｉｌ  ２０００、参照により本明細書に組み込む）。したがって、メソッドが呼び出されたとき、クライアントオブジェクトとサーバオブジェクトとが、故障許容領域を知る。あるトランザクション内にあるクライアントオブジェクトがサーバオブジェクトのメソッドを呼び出すとき、メソッド呼出しを含む要求メッセージは、クライアントのトランザクションの識別子を含むトランザクションコンテキストフィールドも含んでいる（Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ，Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖ１．２（Ｆｉｎａｌ  Ｄｒａｆｔ），ＯＭＧ  Ｐｌａｔｆｏｒｍ  Ｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｔｔｅｅ  Ｄｏｃｕｍｅｎｔ  ｐｔｃ／２０００−１１−０７，Ｊａｎｕａｒｙ  ２０００、参照により本明細書に組み込む）。こうした機構は、当技術分野ではよく知られており、この機構によって、クライアントオブジェクトおよびサーバオブジェクトが、同一の故障許容領域内にあるかどうか、また同一のトランザクションに関与しているかどうかを判断することができるようにする。
【００６０】
サーバオブジェクトがクライアントのローカル故障許容領域内にある場合のみ、トランザクションの一部であるクライアントオブジェクト（ケース３およびケース４）がサーバオブジェクトのメソッドを呼び出すことができる。トランザクションの一部であるクライアントオブジェクトがサーバオブジェクトのメソッドを呼び出すときは、サーバオブジェクトがトランザクションの一部になる（４０４）必要がある。
【００６１】
トランザクションの一部であるクライアントオブジェクトが、そのローカル故障許容領域内にないサーバオブジェクトのメソッドを呼び出す必要がある場合、クライアントオブジェクトは、まずその現在のトランザクションをコミットし、したがって完了する必要がある。
【００６２】
トランザクションの一部であるサーバオブジェクト（ケース２およびケース４）が、どのトランザクションにも含まれていない、あるいはそのサーバのトランザクションの一部ではないクライアントオブジェクトから要求を受信した場合、サーバオブジェクトは、サーバがトランザクション内にいる間はクライアントの要求を処理することができない。代わりに、ネットワーク接続型エンタープライズサーバの機構は、サーバオブジェクトがトランザクションをコミットし、したがって完了するまでクライアントの要求を待ち行列に入れる（４０２、４１０）。
【００６３】
本明細書に記載した本発明は、一部のトランザクションサービスが提供しているネストトランザクションに対処できる範囲まで容易に拡張される。あるオブジェクトが、すでにトランザクションの一部であり、新しいトランザクションを開始したときに、ネストトランザクションが形成される（Ｊ．Ｇｒａｙ  ａｎｄ  Ａ．Ｒｅｕｔｅｒ，Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ：Ｃｏｎｃｅｐｔｓ  ａｎｄ  Ｔｅｃｈｎｉｑｕｅｓ，Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｓｈｅｒｓ，Ｓａｎ  Ｍａｔｅｏ，ＣＡ，１９９３、参照により本明細書に組み込む）。内部トランザクションは、外部トランザクションに影響を与えることなくコミットまたはアボートすることはできるが、こうしたコミットは、外部トランザクションもまたコミットするまで完了しない。外部トランザクションは、すべての内部トランザクションがコミットまたはアボートしない限りコミットすることができず、また外部トランザクションのアボートによってすべての内部トランザクションがアボートする。本発明の文脈では、ネストトランザクションの複雑さのほとんどは、ネストトランザクションを提供するトランザクションサービスの標準の機構によって処理される。図１０Ａでは、本明細書に記載されているアルゴリズムに対する変更のみが行われ、以下で説明するように、これに代わって図１３となる。
【００６４】
トランザクションモードでの動作
図９に示すように、ネットワーク接続型エンタープライズサーバ内では、複製されたオブジェクトの状態を、トランザクションに参加する時点でチェックポイントする必要がある。しかし、状態全体をチェックポイントする必要はなく、既存の前のチェックポイントを、オブジェクトがチェックポイント以降に受け取った要求メッセージおよび応答メッセージのログとともに保持すれば十分である。ネットワーク接続型エンタープライズサーバの機構は、前のチェックポイントを復元し、次いで、そのチェックポイント以降のすべての要求メッセージおよび応答メッセージをメッセージログから再生することによって、トランザクションに参加する時点のオブジェクトの状態を回複する。したがって、トランザクションに参加する時点で、ネットワーク接続型エンタープライズサーバの機構は、ブロック５００で、メッセージログをチェックして、ログに最近のチェックポイントが含まれているかどうかを判断する。ブロック５０２で最近のチェックポイントが見つからない場合、ネットワーク接続型エンタープライズサーバの機構は、ブロック５０４で、強制的にチェックポイントを生成し、メッセージログにチェックポイントを記録する。次いで、ブロック５０６で、オブジェクトはトランザクションモードに入る。そうでない場合、ブロック５０２で最近のチェックポイントが見つかった場合、ブロック５０４を飛び越す。
【００６５】
あるオブジェクトがトランザクションモードのとき、ネットワーク接続型エンタープライズサーバの機構は、メッセージログに、他のオブジェクトとのすべての対話、およびローカルデータベースとのすべての対話を要求メッセージおよび応答メッセージとして記録する。この機構は、定期的に、オブジェクトの状態のチェックポイントもログに記録する。メッセージおよびチェックポイントをログに記録する機構は、当技術分野ではよく知られている。
【００６６】
トランザクションのコミット
図１０Ａに示すように、ブロック６００で、トランザクションの一部であるオブジェクトが標準の２相コミットプロトコルを使用してトランザクションをコミットしたとき、ブロック６０２で、オブジェクトは、ネットワークモードに戻る。トランザクション中にメッセージログに記録された要求メッセージおよび応答メッセージは、将来使用する可能性のために保持される。ブロック６０４で、保留待ち行列にメッセージがあるかどうかをチェックする。ブロック６０６で、トランザクションの完了までの間、オブジェクトのメッセージが待ち行列に入れられていると判断された場合、ネットワーク接続型エンタープライズサーバの機構は、待ち行列に入れられているこれらのメッセージをオブジェクトに渡して、ブロック６０６でこうしたメッセージがなくなるまで、待ち行列に入れられた順序で処理する。こうしたメッセージがなくなったら、次いで、ブロック６１０で、オブジェクトは、処理すべき次の要求メッセージを待つ。
【００６７】
トランザクションのアボート
図１０Ｂに示すように、ブロック６１２で、トランザクションの一部であるオブジェクトがトランクザクションをアボートした場合、またはトランザクションコミットプロトコルによってトランザクションをアボートするよう指示された場合、ネットワーク接続型エンタープライズサーバは、図１１に示すように、ブロック６１４で、そのメッセージログにある最新のチェックポイントを使用して、オブジェクトを再開する。ブロック６１６で、オブジェクトがトランザクションを開始しなかったと判断された場合、ネットワーク接続型エンタープライズサーバは、図１０Ａのブロック６０２からのアクションをたどり、オブジェクトは、ネットワークモードに戻る。オブジェクトは、トランザクションを開始した場合、ブロック６１８でトランザクションを再開する。
【００６８】
オブジェクトがトランザクションをアボートした場合、または２相コミットプロトコルによってトランザクションをアボートするよう指示された場合、ネットワーク接続型エンタープライズサーバは、図１１に示す機構を使用してオブジェクトを再開する。また、ネットワーク接続型エンタープライズサーバは、こうした機構を使用して、ネットワークモードで、オブジェクトの新しいまたはバックアップレプリカを開始する。図１１に示すように、ネットワーク接続型エンタープライズサーバの機構は、ブロック７００で、ログ内で最新のチェックポイントを探し、次いで、ブロック７０２で、そのチェックポイントを使用してオブジェクトの状態を復元する。次いで、そのチェックポイント以降にログに記録された要求メッセージおよび応答メッセージを再生する。この機構は、ブロック７０４でログから次のメッセージを抽出し、ブロック７０６で、そのメッセージがアボートされたトランザクションで生成されたかどうかを判断する。メッセージがアボートされたトランザクション内で生成されたものではない場合、メッセージは、オブジェクトに渡され、ブロック７０８で処理される。そうでない場合、メッセージは、７１０で破棄される。この機構では、ブロック７１２でログにメッセージがないと判断されるまでメッセージログからメッセージを抽出し、その場合ルーチンは終了する。
【００６９】
アボートされたトランザクションの試行の結果がトランザクションから漏れる可能性はない。特に、結果が、ネットワークを介して故障許容領域外の任意のコンピュータに伝達される可能性はまったくない。トランザクションに関与し、トランザクションからの中間結果を取得したすべてのオブジェクトは、トランザクションのアボートの結果、再開される。したがってトランザクションのＡＣＩＤ特性が維持される。
【００７０】
ネットワークモードでの障害の回復
ネットワーク接続型エンタープライズサーバ内では、ネットワークモードの場合、故障許容は、オブジェクトレプリケーションによって提供される。ロールバック／アボートモデルの回復を使用するトランザクション処理とは異なり、オブジェクトレプリケーションは、ロールフォワードモデルの回復を使用する。ネットワークモードでのロールフォワード回復の重要性は、ネットワーク接続型エンタープライズサーバの機構は、通信ネットワークを介して別の企業に送信された任意のメッセージを決して撤回しないことである。
【００７１】
ネットワークモードでの通常の動作中に、ネットワーク接続型エンタープライズサーバの機構がオブジェクトを定期的にチェックポイントし、そのチェックポイントをログに記録する。また、機構は、オブジェクトのメソッドを呼び出す、またオブジェクトがそれによって他のオブジェクトのメソッドを呼び出す、オブジェクトのすべての要求メッセージもログに記録する。また、対応する応答メッセージも記録する。機構は、メッセージをログに順々に記録する。メッセージのロギングおよびチェックポインティングは、当技術分野ではよく知られている。
【００７２】
あるオブジェクトの１つのレプリカが障害を起こした場合、上記で説明し、図１１に示したように、ネットワーク接続型エンタープライズサーバの機構は、まずブロック７０２で、新しいレプリカの状態をログにある最新のチェックポイントに設定し、次いで、ブロック７０８で、ログから後続のメッセージを再生することによって、オブジェクトの新しいレプリカを既存のレプリカと同一の状態で作成することができる。機構は、あるオブジェクトの各レプリカを個々に回復することができる。オブジェクトが決定的である（決定的にされた）と仮定すると、あるオブジェクトの各レプリカは、そのオブジェクトの他のレプリカと依然として一致したままであり、障害によって影響を受けていないレプリカ、および影響を受けたレプリカはいずれも回復する。オブジェクトの状態をチェックポイントから設定し、ログからメッセージを再生する機構は、従来技術ではよく知られている。
【００７３】
ログからのメッセージを回復し処理する間、オブジェクトのレプリカは、他のオブジェクトのメソッドを呼び出す要求メッセージをさらに生成することができる。こうした、それ以上の要求メッセージは、他のオブジェクトによってすでに送信され処理されている前のメッセージの反復である可能性がある。別のオブジェクトがこうしたメッセージを２度処理する場合、正しくない結果がもたらされる可能性がある。
【００７４】
図１２に示すように、ネットワーク接続型エンタープライズサーバの機構は、ブロック８００でオブジェクトのメッセージを受信したとき、ブロック８０２で、メッセージをログと照会して、それがログに記録されたメッセージの複製であるかどうかを判断する。ブロック８０４で、そのメッセージが複製ではないと判断されると、機構は、ブロック８０６で、そのメッセージをログに記録し、オブジェクトに送って、ブロック８０８で通常の処理を行う。
【００７５】
ブロック８０４で、そのメッセージが、ブロック８０４でログに記録されたメッセージの複製であると判断された場合、およびブロック８１０でそのメッセージが要求メッセージであると判断され、ブロック８１２でその応答がログに記録されていないと判断された場合、サーバオブジェクトは、ブロック８０８で、すでに前の非複製の要求メッセージを処理しており、したがって機構は、この複製メッセージを破棄することができる。サーバオブジェクトは、適当なときに、ブロック８０８で要求の応答を生成する。
【００７６】
ブロック８０４で、そのメッセージが、ログに記録されているメッセージの複製であると判断された場合、およびブロック８１０でそのメッセージが要求メッセージであると判断され、ブロック８１２でその応答がログに記録されていると判断された場合、オブジェクトがメッセージを処理するのではなく、代わりにブロック８１４で、ネットワーク接続型エンタープライズサーバの機構が、ログからの応答メッセージを再送信し、ブロック８１６で複製の要求メッセージを破棄する。
【００７７】
オブジェクトのレプリカは、障害を起こす前にトランザクションに関与しており、そのトランザクションがコミットし、データベース内にその結果を記録しているかもしれない。オブジェクトのレプリカの回復には、それが関与したトランザクションの結果を含める必要がある。トランザクション中、オブジェクトのレプリカと、データベースを含む他のオブジェクトとの間の対話は、ログに記録されるメッセージとして表される。障害のあるオブジェクトのレプリカの回復中、ネットワーク接続型エンタープライズサーバの機構は、これらの他のオブジェクト、トランザクション処理システム、またはデータベースを必要とすることなく、ログからこうしたメッセージを再生する。特に、オブジェクトに対して再生されたデータベース値は、現在のデータベース値ではなく、以前実行されたときにオブジェクトが受信したメッセージ内の値である。同様に、ネットワーク接続型エンタープライズサーバの機構は、オブジェクトによって生成されたデータベース更新メッセージを前のメッセージの複製と認識し、したがってデータベースに影響を与えない。さらに、オブジェクトの回復は、データベースの現在のロッキングに影響を与えない。
【００７８】
ネットワーク接続型エンタープライズサーバの機構は、ある企業のコンピュータの１つのオブジェクトと、他の複数の企業のコンピュータの複数のオブジェクトとの間のすべての要求メッセージおよび応答メッセージをメッセージログに記録する。障害のあるオブジェクトレプリカの回復中に、ネットワーク接続型エンタープライズサーバの機構は、他の複数の企業のコンピュータの複数のオブジェクトの動作を中断させることなくその状態を設定するように、これらのメッセージを回復しているオブジェクトのレプリカに対して再生する。同様に、通信リンク、またはリモートコンピュータの障害によっていくつかのメッセージを送信し直す必要がある場合、ネットワーク接続型エンタープライズサーバの機構は、ログからこれらのメッセージを抽出する。その再送信によって、他の企業のコンピュータのオブジェクトの動作が中断することはない。
【００７９】
ネストトランザクションの取扱い
図１３は、ネストトランザクションを扱うのに必要な図１０Ａに対する変更を示す。ネストトランザクションを扱うために図１３に示したネットワーク接続型エンタープライズサーバの追加アクションには、内部トランザクションを完了した後、ブロック９００で、オブジェクトが依然として外部トランザクションに留まっているかどうかを判断するテストが含まれる。その場合、保留メッセージ待ち行列にあるメッセージを扱うのに必要な機構は、待ち行列内の次のメッセージが現在のトランザクションのためのものかどうかを判断する追加テストを含む。まず、ブロック９０２で、保留待ち行列内にメッセージがあるかどうかのチェックが行われる。次に、ブロック９０４で、さらにメッセージがあるかどうかのテストが行われる。ブロック９０６で、次のメッセージが現在のトランザクションのためのものであると判断された場合、このメッセージは、ブロック９０８で処理される。次のメッセージが現在のトランザクションのためのものではない場合、ブロック９１０で、保留待ち行列内の他のすべてのメッセージは、その待ち行列に留まっておく必要があり、そのオブジェクトは、ブロック６１０で、処理すべき他の要求メッセージを待つ。
【００８０】
上記の説明は、多くの特定の詳細を含んでいるが、これらは、本発明の範囲を限定するものとしてではなく、本発明の現段階で好ましい実施形態の一部を単に例として示すものとして解釈すべきである。したがって、当分野の技術者には明らかなように、本発明の範囲は、他の実施形態を完全に包含し、したがって本発明の範囲は、頭記の特許請求の範囲によってのみ限定されることを理解されたい。特許請求の範囲において、単数の要素への言及は、そのように明記しない限り、「唯一無二」を意味するものではなく、「１つまたは複数」を意味するものである。当分野の技術者に知られている、上記の好ましい実施形態の要素のすべての構造的、機能的均等物は、参照により本明細書に明示的に組み込まれ、本特許請求の範囲に包含されるものである。さらに、ある装置または方法が本特許請求の範囲に包含されるには、その装置または方法が本発明が解決しようと努めるすべての問題に対処する必要はない。さらに、本開示の要素、構成要素、または方法ステップは、特許請求の範囲に明記されているかどうかに関わらず、公に提供されたものではない。本明細書のどの請求要素も、「のため手段」という句を使用して明記していない限り、米国特許法第１１２条第６段落の規定に基づいて解釈されるべきではない。
【図面の簡単な説明】
【図１】
故障許容領域を示す図である。
【図２】
トランザクション処理、およびメソッド呼出しを含む要求メッセージ内のトランザクションコンテキストの使用を示す図である。
【図３】
トランザクションのアボートを示す図である。
【図４】
トランザクションのコミットを示す図である。
【図５】
アクティブレプリケーションを示す図である。
【図６】
パッシブレプリケーションを示す図である。
【図７】
本発明の動作を示す図である。
【図８】
クライアントオブジェクトの要求メッセージのサーバオブジェクトの受信における５つのケースを示す表である。
【図９】
トランザクションの参加時のアクションを示す流れ図である。
【図１０Ａおよび１０Ｂ】
それぞれトランザクションのコミット時のアクション、およびトランザクションのアボート時のアクションを示す流れ図である。
【図１１】
メッセージログからのオブジェクトの回復を示す流れ図である。
【図１２】
メッセージの受信時のメッセージの取扱いを示す流れ図である。
【図１３】
ネストトランザクションの場合のトランザクションのコミット時のアクションを示す流れ図である。
【図１】
2005506587.tif 000002
【図２】
2005506587.tif 000003
【図３】
2005506587.tif 000004
【図４】
2005506587.tif 000005
【図５】
2005506587.tif 000006
【図６】
2005506587.tif 000007
【図７】
2005506587.tif 000008
【図８】
2005506587.tif 000009
【図９】
2005506587.tif 000010
【図１０Ａ】
2005506587.tif 000011
【図１０Ｂ】
2005506587.tif 000012
【図１１】
2005506587.tif 000013
【図１２】
2005506587.tif 000014
【図１３】
2005506587.tif 000015
【国際公開パンフレット】
2005506587.tif 000016
2005506587.tif 000017
2005506587.tif 000018
2005506587.tif 000019
2005506587.tif 000020
2005506587.tif 000021
2005506587.tif 000022
2005506587.tif 000023
2005506587.tif 000024
2005506587.tif 000025
2005506587.tif 000026
2005506587.tif 000027
2005506587.tif 000028
2005506587.tif 000029
2005506587.tif 000030
2005506587.tif 000031
2005506587.tif 000032
2005506587.tif 000033
2005506587.tif 000034
2005506587.tif 000035
2005506587.tif 000036
2005506587.tif 000037
2005506587.tif 000038
2005506587.tif 000039
2005506587.tif 000040
2005506587.tif 000041
2005506587.tif 000042
2005506587.tif 000043
2005506587.tif 000044
2005506587.tif 000045
2005506587.tif 000046
2005506587.tif 000047
2005506587.tif 000048
2005506587.tif 000049
2005506587.tif 000050
2005506587.tif 000051
2005506587.tif 000052
2005506587.tif 000053
2005506587.tif 000054
2005506587.tif 000055
2005506587.tif 000056
2005506587.tif 000057
2005506587.tif 000058
2005506587.tif 000059
2005506587.tif 000060
2005506587.tif 000061
2005506587.tif 000062
2005506587.tif 000063
2005506587.tif 000064
2005506587.tif 000065
【国際公開パンフレット（コレクトバージョン）】
2005506587.tif 000066
2005506587.tif 000067
2005506587.tif 000068