(57)【特許請求の範囲】
【請求項１】
外部通信装置との間でデータ通信を行うことによりデータベースを更新するデータ通信装置において、
前記外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合に前記データベースを更新するデータベース更新手段と、
前記リクエストに対応するリプライ情報を前記外部通信装置へ送信するとともにメモリに格納するリプライ手段と、
前記外部通信装置との間のコネクションを監視するコネクション監視手段と、
前記コネクション監視手段の監視結果に基づいて、前記コネクションが異常切断された場合、前記メモリに格納された、当該コネクションに対応するリプライ情報を前記外部通信装置へ送信する送信手段と、
を備えたことを特徴とするデータ通信装置。
【請求項２】
前記コネクション監視手段の監視結果に基づいて、前記コネクションが正常解放された場合、前記メモリに格納されたリプライ情報を破棄するリプライ情報破棄手段を備えたことを特徴とする請求項１に記載のデータ通信装置。
【請求項３】
前記リプライ情報には、前記リクエストを識別するための識別情報が含まれていることを特徴とする請求項１または２に記載のデータ通信装置。
【請求項４】
外部通信装置との間でデータ通信を行うことによりデータベースを更新するデータ通信方法において、
前記外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合に前記データベースを更新するデータベース更新工程と、
前記リクエストに対応するリプライ情報を前記外部通信装置へ送信するとともにメモリに格納するリプライ工程と、
前記外部通信装置との間のコネクションを監視するコネクション監視工程と、
前記コネクション監視工程の監視結果に基づいて、前記コネクションが異常切断された場合、前記メモリに格納された、当該コネクションに対応するリプライ情報を前記外部通信装置へ送信する送信工程と、
を含むことを特徴とするデータ通信方法。
【請求項５】
外部通信装置との間でデータ通信を行うことによりデータベースを更新するデータ通信装置に適用されるデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合に前記データベースを更新するデータベース更新工程と、
前記リクエストに対応するリプライ情報を前記外部通信装置へ送信するとともにメモリに格納するリプライ工程と、
前記外部通信装置との間のコネクションを監視するコネクション監視工程と、
前記コネクション監視工程の監視結果に基づいて、前記コネクションが異常切断された場合、前記メモリに格納された、当該コネクションに対応するリプライ情報を前記外部通信装置へ送信する送信工程と、
をコンピュータに実行させるためのデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信の異常発生時の通信負荷を低減させることができるデータ通信装置、データ通信方法およびデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。
【０００２】
近時、クライアント／サーバ構成のデータ通信装置が主流になっている。このようなデータ通信装置においては、クライアントの数が増えるに従って、通信負荷が増えるため、通信負荷をできるだけ増やさない手段、方法が切望されている。
【０００３】
【従来の技術】
図９は、従来のＣＯＲＢＡ（Common Object Request Broker Architecture）通信システムの構成を示すブロック図である。ＣＯＲＢＡは、標準化団体ＯＭＧ(Object Management Group）が定める異機種間接続のための標準化仕様であり、異機種間の連携プロトコルと分散アプリケーション構築のための各種ＡＰＩ（Application Program Interface)を規定するものである。
【０００４】
簡単に言えば、ＣＯＲＢＡは、分散システム環境でクライアントが、サーバ内のオブジェクト（例えば、アプリケーションプログラム）にアクセスするためのメカニズムを提供する標準技術である。ここで、ＣＯＲＢＡにおけるオブジェクトとは、クライアントから要求することができる一つまたは複数のサービスを提供する、識別可能にカプセル化されたエンティティをいう。
【０００５】
図９には、ｎ台のクライアント１０1〜１０nと、これらのクライアント１０1〜１０nとネットワーク（図示略）を介して接続されたサーバ２０とからなるＣＯＲＢＡ通信システムが図示されている。クライアント１０1〜１０nのそれぞれは、所定のプロトコルに従って、サーバ２０との間で通信を行う。このプロトコルにおいては、リクエスト、リプライ、コミット、ロールバックという処理が発生する。
【０００６】
リクエストは、クライアント１０1〜１０nのそれぞれからサーバ２０のトランザクション処理を依頼するためのものである。トランザクションの発生のデータベース２５の更新依頼を行うためのものである。リプライは、上記リクエストに対する返信であり、サーバ２０からクライアント１０1〜１０nへ通知されるものである。コミットは、クライアント１０1〜１０nのそれぞれの処理結果をデータベース２５に反映させるためのものである。リプライは、クライアント１０1〜１０nとサーバ２０との間のコネクションが異常切断された場合に、データベース２５を、トランザクションが実行される前の状態に戻し、一貫性を保つためのものである。
【０００７】
クライアント１０1において、ＯＲＢ（Object Request Broker：分散オブジェクト間通信機構）１１1は、クライアント１０1とサーバ２０とを仲介するソフトウェア・バスである。このＯＲＢ１１1は、自身のＩＰアドレスおよびＰＯＲＴ番号を含む初期オブジェクトリファレンスを有している。
【０００８】
ここで、ＣＯＲＢＡにおけるネーミングサービスについて説明する。ＣＯＲＢＡにおけるネーミングサービスによれば、クライアントは、オブジェクトにアクセスする場合、オブジェクトの位置ではなく、名前でアクセスできるようになるため、オブジェクトの物理的な位置を意識する必要がない。
【０００９】
具体的には、クライアントからアクセスがあった場合、サーバ２０内でオブジェクトリファレンスが生成され、これがクライアントに返されることにより、ネーミングサービスが提供される。このオブジェクトリファレンスは、オブジェクトを名前で一意に識別するための情報である。
【００１０】
リクエスト送信部１２1は、上述したリクエストをサーバ２０へ送信する機能を備えている。リプライ受信部１３1は、サーバ２０からのリプライを受信する機能を備えている。このリプライは、上記リクエストに対する返信である。コミット／ロールバック送信部１４1は、上述したコミットまたはロールバックをサーバ２０へ送信する機能を備えている。
【００１１】
クライアント１０2において、ＯＲＢ１１2は、ＯＲＢ１１1と同様にして、クライアント１０2とサーバ２０とを仲介するソフトウェア・バスである。このＯＲＢ１１2は、自身のＩＰアドレスおよびＰＯＲＴ番号を含む初期オブジェクトリファレンスを有している。
【００１２】
リクエスト送信部１２2は、上述したリクエストをサーバ２０へ送信する機能を備えている。リプライ受信部１３2は、サーバ２０からのリプライを受信する機能を備えている。このリプライは、上記リクエストに対する返信である。コミット／ロールバック送信部１４2は、上述したコミットまたはロールバックをサーバ２０へ送信する機能を備えている。
【００１３】
クライアント１０nにおいて、ＯＲＢ１１nは、ＯＲＢ１１1と同様にして、クライアント１０nとサーバ２０とを仲介するソフトウェア・バスである。このＯＲＢ１１nは、自身のＩＰアドレスおよびＰＯＲＴ番号を含む初期オブジェクトリファレンスを有している。
【００１４】
リクエスト送信部１２nは、上述したリクエストをサーバ２０へ送信する機能を備えている。リプライ受信部１３nは、サーバ２０からのリプライを受信する機能を備えている。このリプライは、上記リクエストに対する返信である。コミット／ロールバック送信部１４nは、上述したコミットまたはロールバックをサーバ２０へ送信する機能を備えている。
【００１５】
サーバ２０は、クライアント１０1〜１０nからのリクエストを受信する機能と、上記リクエストに対する返信としてのリプライをクライアント１０1〜１０nへ送信する機能と、クライアント１０1〜１０nからのコミットを受信する機能と、上記コミットに基づいてデータベース２５を更新する機能と、クライアント１０1〜１０nからのロールバックを受信する機能と、上記ロールバックに基づいてデータベース２５を、トランザクションが実行される前の状態に戻す機能とを備えている。
【００１６】
具体的には、サーバ２０は、ＯＲＢ２１、リクエスト受信部２２、リプライ送信部２３、コミット／ロールバック受信部２４およびデータベース２５から構成されている。ＯＲＢ２１は、サーバ２０とクライアント１０1〜１０nとを仲介するソフトウェア・バスである。リクエスト受信部２２は、クライアント１０1〜１０nからのリクエストを受信する機能を備えている。
【００１７】
リプライ送信部２３は、上記リクエストに対する返信としてのリプライをクライアント１０1〜１０nへ送信する機能を備えている。コミット／ロールバック受信部２４は、クライアント１０1〜１０nからのコミットを受信する機能と、上記コミットに基づいてデータベース２５を更新する機能と、クライアント１０1〜１０nからのロールバックを受信する機能と、上記ロールバックに基づいてデータベース２５を、トランザクションが実行される前の状態に戻す機能とを備えている。
【００１８】
つぎに、上述した従来のＣＯＲＢＡ通信システムの動作について図１０を参照しつつ説明する。図１０は、従来のＣＯＲＢＡ通信システムの動作を説明するシーケンス図である。はじめに、クライアント１０nとサーバ２０との間における正常時の動作について説明する。なお、クライアント１０1〜クライアント１０n-1（図示略）とサーバ２０との間における動作は、以下に説明するクライアント１０nとサーバ２０との間における動作と同様である。
【００１９】
（正常時）
図１０に示したステップＳＡ１では、クライアント１０nのリクエスト送信部１２nからリクエストが送信されると、サーバ２０のリクエスト受信部２２によりリクエストが受信される。
【００２０】
これにより、ステップＳＡ２では、サーバ２０のリプライ送信部２３からリプライが送信されると、リプライ受信部１３nによりリプライが受信される。ステップＳＡ３では、コミット／ロールバック送信部１４nによりコミットが送信されると、コミット／ロールバック受信部２４によりコミットが受信される。これにより、サーバ２０では、データベース２５が更新される。
【００２１】
（異常時）
つぎに、図９に示したクライアント１０nとサーバ２０との間に設定されているコネクションが異常切断した場合について説明する。図１０に示したステップＳＢ１では、クライアント１０nのリクエスト送信部１２nからリクエストが送信されると、サーバ２０のリクエスト受信部２２によりリクエストが受信される。これにより、ステップＳＢ２では、サーバ２０のリプライ送信部２３からリプライが送信される。
【００２２】
ここで、コネクションが異常切断するとトランザクション不整合が発生し、上記リプライは、リプライ受信部１３nに受信されない。この場合、ステップＳＢ３では、コミット／ロールバック送信部１４nによりロールバックが送信されると、コミット／ロールバック受信部２４によりロールバックが受信される。これにより、サーバ２０では、データベース２５が、トランザクションが実行される前の状態に戻される。すなわち、異常時には、データベース２５が更新されない。
【００２３】
【発明が解決しようとする課題】
ところで、前述したように、従来のＣＯＲＢＡ通信システムでは、通信の異常発生時に、クライアント１０1〜１０nとサーバ２０との間で、コミット／ロールバックのための通信が必要であるため、クライアント数が増えるに従って、通信負荷（トランザクション）が増大するという問題があった。特に、ネットワークの回線容量が少ない場合にボトルネックとなる。
【００２４】
本発明は、上記に鑑みてなされたもので、通信の異常発生時の通信負荷を低減させることができるデータ通信装置、データ通信方法およびデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記目的を達成するために、本発明は、外部通信装置との間でデータ通信を行うことによりデータベースを更新するデータ通信装置において、前記外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合に前記データベースを更新するデータベース更新手段と、前記リクエストに対応するリプライ情報を前記外部通信装置へ送信するとともにメモリに格納するリプライ手段と、前記外部通信装置との間のコネクションを監視するコネクション監視手段と、前記コネクション監視手段の監視結果に基づいて、前記コネクションが異常切断された場合、前記メモリに格納された、当該コネクションに対応するリプライ情報を前記外部通信装置へ送信する送信手段とを備えたことを特徴とする。
【００２６】
また、本発明は、外部通信装置との間でデータ通信を行うことによりデータベースを更新するデータ通信方法において、前記外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合に前記データベースを更新するデータベース更新工程と、前記リクエストに対応するリプライ情報を前記外部通信装置へ送信するとともにメモリに格納するリプライ工程と、前記外部通信装置との間のコネクションを監視するコネクション監視工程と、前記コネクション監視工程の監視結果に基づいて、前記コネクションが異常切断された場合、前記メモリに格納された、当該コネクションに対応するリプライ情報を前記外部通信装置へ送信する送信工程とを含むことを特徴とする。
【００２７】
また、本発明は、外部通信装置との間でデータ通信を行うことによりデータベースを更新するデータ通信装置に適用されるデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合に前記データベースを更新するデータベース更新工程と、前記リクエストに対応するリプライ情報を前記外部通信装置へ送信するとともにメモリに格納するリプライ工程と、前記外部通信装置との間のコネクションを監視するコネクション監視工程と、前記コネクション監視工程の監視結果に基づいて、前記コネクションが異常切断された場合、前記メモリに格納された、当該コネクションに対応するリプライ情報を前記外部通信装置へ送信する送信工程と、をコンピュータに実行させるためのデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２８】
かかる発明によれば、外部通信装置からトランザクション処理の実行を依頼するリクエストがあった場合にデータベースを更新し、リクエストに対応するリプライ情報を外部通信装置へ送信するとともにメモリに格納しておき、コネクションの異常切断時に当該リプライ情報を外部通信装置へ送信するようにしたので、従来の外部装置からのロールバックの場合に比べて、通信回線のトラフィック量を低減でき、通信の異常発生時の通信負荷を低減させることができる。
【００２９】
【発明の実施の形態】
以下、図面を参照して本発明にかかるデータ通信装置、データ通信方法およびデータ通信プログラムを記録したコンピュータ読み取り可能な記録媒体の一実施の形態について詳細に説明する。
【００３０】
図１は、本発明にかかる一実施の形態の構成を示すブロック図である。同図には、ｎ台のクライアント３０1〜３０nと、これらのクライアント３０1〜３０nとネットワーク（図示略）を介して接続されたサーバ２０とからなるＣＯＲＢＡを利用したデータ通信が図示されている。クライアント３０1〜３０nのそれぞれは、所定のプロトコルに従って、サーバ２０との間で通信を行う。ここで、注意すべき点は、前述した従来のＣＯＲＢＡ通信システム（図９参照）に比較して、コミット／ロールバックという通信負荷を増加させる要因が無いことである。
【００３１】
クライアント３０1において、ＯＲＢ３１1は、クライアント３０1とサーバ２０とを仲介するソフトウェア・バスである。このＯＲＢ３１1は、自身のＩＰアドレスおよびＰＯＲＴ番号を含む初期オブジェクトリファレンスを有している。
【００３２】
リクエスト送信部３２1は、上述したリクエストをサーバ２０へ送信する機能を備えている。ここで、ＯＲＢ３１1は、リクエストの送信時に当該リクエストを識別するためのリクエストＩＤを取得し、これをリクエストに付加する。リプライ受信部３３1は、図５（ａ）に示したリプライ情報５０1を受信する。
【００３３】
このリプライ情報５０1は、ＩＰアドレス（１）、ポート番号（１）、リクエストＩＤ（１）、クライアントアプリケーション名（１）およびリプライデータ（１）から構成されている。このリプライ情報５０1は、リクエストに対する返信として、後述するリプライ送信部４３から送信される情報である。
【００３４】
ここで、上記リクエストＩＤは、ＯＲＢ３１1により取得されたリクエストＩＤである。クライアントアプリケーション（１）は、クライアント３０1のリクエスト送信部３２1およびリプライ受信部３３1の名称である。リプライデータ（１）は、サーバ４０のリプライ送信部４３から送信されるデータである。
【００３５】
トランザクション通知エージェント３４1は、図５（ｂ）に示したフォーマットの通知リプライ情報６０に基づいて、コネクション異常切断によるクライアント３０1側のトランザクションの整合をとる機能を備えている。通知リプライ情報６０は、リクエストＩＤ、クライアントアプリケーション名およびリプライデータから構成されている。
【００３６】
図７（ｂ）に通知リプライ情報６０の具体例を示す。通知リプライ情報９０1は、クライアント３０1とサーバ４０との間でコネクション異常切断が発生した場合に、後述するトランザクション保証部４４から送信される情報であり、リクエストＩＤ（１）、クライアントアプリケーション名（１）およびリプライデータ（１）から構成されている。この通知リプライ情報９０1は、図５（ａ）に示したリプライ情報５０1に対応している。トランザクション通知エージェント３４1は、通知リプライ情報９０1からコネクション異常切断時のリクエストを特定し、この特定結果に基づいて、トランザクションの整合をとる。
【００３７】
クライアント３０2において、ＯＲＢ３１2は、クライアント３０2とサーバ２０とを仲介するソフトウェア・バスである。このＯＲＢ３１2は、自身のＩＰアドレスおよびＰＯＲＴ番号を含む初期オブジェクトリファレンスを有している。
【００３８】
リクエスト送信部３２2は、上述したリクエストをサーバ２０へ送信する機能を備えている。ここで、ＯＲＢ３１2は、リクエストの送信時に当該リクエストを識別するためのリクエストＩＤを取得し、これをリクエストに付加する。リプライ受信部３３2は、図５（ａ）に示したリプライ情報５０2を受信する。
【００３９】
このリプライ情報５０2は、ＩＰアドレス（２）、ポート番号（２）、リクエストＩＤ（２）、クライアントアプリケーション名（２）およびリプライデータ（２）から構成されている。このリプライ情報５０2は、リクエストに対する返信として、後述するリプライ送信部４３から送信される情報である。
【００４０】
ここで、上記リクエストＩＤは、ＯＲＢ３１2により取得されたリクエストＩＤである。クライアントアプリケーション（２）は、クライアント３０2のリクエスト送信部３２2およびリプライ受信部３３2の名称である。リプライデータ（２）は、サーバ４０のリプライ送信部４３から送信されるデータである。
【００４１】
トランザクション通知エージェント３４2は、図７（ｂ）に示した通知リプライ情報９０2に基づいて、コネクション異常切断によるクライアント３０2側のトランザクションの整合をとる機能を備えている。通知リプライ情報９０2は、クライアント３０2とサーバ４０との間でコネクション異常切断が発生した場合に、後述するトランザクション保証部４４から送信される情報であり、リクエストＩＤ（２）、クライアントアプリケーション名（２）およびリプライデータ（２）から構成されている。
【００４２】
また、通知リプライ情報９０2は、図５（ａ）に示したリプライ情報５０2に対応している。トランザクション通知エージェント３４2は、通知リプライ情報９０2からコネクション異常切断時のリクエストを特定し、この特定結果に基づいて、トランザクションの整合をとる。
【００４３】
クライアント３０nにおいて、ＯＲＢ３１nは、クライアント３０nとサーバ２０とを仲介するソフトウェア・バスである。このＯＲＢ３１nは、自身のＩＰアドレスおよびＰＯＲＴ番号を含む初期オブジェクトリファレンスを有している。
【００４４】
リクエスト送信部３２nは、上述したリクエストをサーバ２０へ送信する機能を備えている。ここで、ＯＲＢ３１nは、リクエストの送信時に当該リクエストを識別するためのリクエストＩＤを取得し、これをリクエストに付加する。リプライ受信部３３nは、図５（ａ）に示したリプライ情報５０nを受信する。
【００４５】
このリプライ情報５０nは、ＩＰアドレス（ｎ）、ポート番号（ｎ）、リクエストＩＤ（ｎ）、クライアントアプリケーション名（ｎ）およびリプライデータ（ｎ）から構成されている。このリプライ情報５０nは、リクエストに対する返信として、後述するリプライ送信部４３から送信される情報である。
【００４６】
ここで、上記リクエストＩＤは、ＯＲＢ３１nにより取得されたリクエストＩＤである。クライアントアプリケーション（ｎ）は、クライアント３０nのリクエスト送信部３２nおよびリプライ受信部３３nの名称である。リプライデータ（ｎ）は、サーバ４０のリプライ送信部４３から送信されるデータである。なお、一実施の形態では、図５（ａ）に示したリプライ情報５０1〜５０nに代えて、図７（ｂ）に示したリプライ情報８０1〜８０nを用いてもよい。
【００４７】
トランザクション通知エージェント３４nは、図５（ｂ）に示した通知リプライ情報９０nに基づいて、コネクション異常切断によるクライアント３０n側のトランザクションの整合をとる機能を備えている。通知リプライ情報９０nは、クライアント３０nとサーバ４０との間でコネクション異常切断が発生した場合に、後述するトランザクション保証部４４から送信される情報であり、リクエストＩＤ（ｎ）、クライアントアプリケーション名（ｎ）およびリプライデータ（ｎ）から構成されている。
【００４８】
また、通知リプライ情報９０nは、図５（ａ）に示したリプライ情報５０nに対応している。トランザクション通知エージェント３４nは、通知リプライ情報９０nからコネクション異常切断時のリクエストを特定し、この特定結果に基づいて、トランザクションの整合をとる。
【００４９】
サーバ４０は、クライアント３０1〜３０nからのリクエストを受信する機能と、上記リクエストに対する返信としてのリプライ情報５０1〜５０nをクライアント３０1〜３０nへ送信する機能と、サーバ４０とクライアント３０1〜３０nとの間のコネクションを監視する機能と、データベース４５を更新する機能等を備えている。
【００５０】
具体的には、サーバ４０は、ＯＲＢ４１、リクエスト受信部４２、リプライ送信部４３、トランザクション保証部４４およびデータベース４５から構成されている。ＯＲＢ４１は、サーバ４０とクライアント３０1〜３０nとを仲介するソフトウェア・バスである。このＯＲＢ４１は、リプライ情報５０1〜５０n（図５（ａ）参照）を送信する機能と、サーバ４０とクライアント３０1〜３０nとの間のコネクションを監視する機能とを備えている。
【００５１】
まや、ＯＲＢ４１は、コネクションの監視結果として図５（ｃ）に示したフォーマットのコネクション監視結果情報７０をトランザクション保証部４４へ通知する。コネクション監視結果情報７０は、通知情報種別コード（Ｘ’０３’）および通知コード（Ｘ’００’またはＸ’０１’）から構成されている。通知種別コードは、コネクションが解放されたことを通知するためのコードである。通知コードは、コネクションの解放時に正常解放されたかまたは異常切断されたかを通知するためのコードである。
【００５２】
リクエスト受信部４２は、クライアント３０1〜３０nからのリクエストを受信する機能を備えている。リプライ送信部４３は、上記リクエストに対する返信としてのリプライデータ（図５（ｂ）参照）をＯＲＢ４１へ送信する機能を備えている。トランザクション保証部４４は、コネクションの異常切断時に伴うクライアント側のトランザクション不整合を回避し、トランザクションを保証する機能を備えている。また、トランザクション保証部４４は、ＯＲＢ４１からのコネクション監視結果情報７０（異常解放の場合）に基づいて、通知リプライ情報９０1〜９０nをクライアント３０1〜３０nへ送信する機能を備えている。
【００５３】
つぎに、上述した一実施の形態の動作について図２〜図７を参照して説明する。図２は、本発明にかかる一実施の形態の動作を説明するシーケンス図である。はじめに、クライアント３０nとサーバ４０との間における正常時の動作をメインにして説明する。なお、クライアント３０1〜クライアント３０n-1（図示略）とサーバ４０との間における動作は、以下に説明するクライアント３０nとサーバ４０との間における動作と同様である。
【００５４】
（正常時）
図３に示したステップＳＥ１では、トランザクション保証部４４は、サーバ４０のＯＲＢ４１からのリプライ情報（図７（ａ）参照）を受信したか否かを判断し、この判断結果が「Ｎｏ」である場合、同判断を繰り返す。
【００５５】
一方、図４に示したステップＳＦ１では、クライアント３０1〜３０nのトランザクション通知エージェント３４1〜３４nのそれぞれは、トランザクション保証部４４からの通知リプライ情報（図７（ｂ）参照）を受信したか否かを判断し、この判断結果が「Ｎｏ」である場合、同判断を繰り返す。
【００５６】
ここで、図２に示したステップＳＣ１で、クライアント３０nのリクエスト送信部３２nからリクエストが送信される。このとき、ＯＲＢ３１nは、図５（ａ）に示したリクエストＩＤ（ｎ）を取得し、これをリクエストに付加する。そして、リクエスト（リクエストＩＤ）は、サーバ４０のリクエスト受信部４２により受信される。
【００５７】
ステップＳＣ２では、リプライ送信部４３は、図５（ａ）に示したリプライデータ（ｎ）をＯＲＢ４１へ送信する。これにより、ステップＳＣ３では、ＯＲＢ４１は、図５（ａ）に示したリプライ情報５０nをトランザクション保証部４４へ送信する。このリプライ情報５０nは、トランザクション保証部４４に受信される。
【００５８】
これにより、トランザクション保証部４４は、図３に示したステップＳＥ１の判断結果を「Ｙｅｓ」として、リプライ情報５０1をメモリ（図示略）に格納する。ステップＳＥ２では、トランザクション保証部４４は、ＯＲＢ４１からのコネクション監視結果情報７０（図５（ｂ）参照）を受信したか否かを判断し、この判断結果が判断結果が「Ｎｏ」である場合、同判断を繰り返す。
【００５９】
つぎに、図２に示したステップＳＣ４では、ＯＲＢ４１は、上記リプライ情報５０nをクライアント３０nのリプライ受信部３３nへ送信する。このリプライ情報５０nは、リプライ受信部３３nに受信された後、メモリ（図示略）に格納される。
【００６０】
そして、クライアント３０nとサーバ４０との間のコネクションが正常解放されると、ステップＳＣ６では、ＯＲＢ４１は、コネクション正常解放通知として、コネクション監視結果情報７０（図５（ｃ）参照）をトランザクション保証部４４へ送信する。このコネクション監視結果情報７０（正常解放）は、トランザクション保証部４４により受信される。
【００６１】
これにより、トランザクション保証部４４は、図３に示したステップＳＥ２の判断結果を「Ｙｅｓ」とする。ステップＳＥ３では、トランザクション保証部４４は、受信したコネクション監視結果情報７０の通知コードを参照し、コネクションが正常に解放されたか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＥ４では、トランザクション保証部４４は、メモリに格納されているリプライ情報５０n（図５（ａ）参照）を破棄する。
【００６２】
（異常時）
つぎに、図１に示したクライアント３０nとサーバ４０との間に設定されているコネクションが異常切断した場合について説明する。図３に示したステップＳＥ１では、トランザクション保証部４４は、サーバ４０のＯＲＢ４１からのリプライ情報（図７（ａ）参照）を受信したか否かを判断し、この判断結果が「Ｎｏ」である場合、同判断を繰り返す。
【００６３】
一方、図４に示したステップＳＦ１では、クライアント３０1〜３０nのトランザクション通知エージェント３４1〜３４nのそれぞれは、トランザクション保証部４４からの通知リプライ情報（図７（ｂ）参照）を受信したか否かを判断し、この判断結果が「Ｎｏ」である場合、同判断を繰り返す。
【００６４】
ここで、図２に示したステップＳＤ１で、クライアント３０nのリクエスト送信部３２nからリクエストが送信される。このとき、ＯＲＢ３１nは、図５（ａ）に示したリクエストＩＤ（ｎ）を取得し、これをリクエストに付加する。そして、リクエスト（リクエストＩＤ）は、サーバ４０のリクエスト受信部４２により受信される。
【００６５】
ステップＳＤ２では、リプライ送信部４３は、図５（ａ）に示したリプライデータ（ｎ）をＯＲＢ４１へ送信する。これにより、ステップＳＤ３では、ＯＲＢ４１は、図５（ａ）に示したリプライ情報５０nをトランザクション保証部４４へ送信する。このリプライ情報５０nは、トランザクション保証部４４に受信される。
【００６６】
これにより、トランザクション保証部４４は、図３に示したステップＳＥ１の判断結果を「Ｙｅｓ」として、リプライ情報５０1をメモリ（図示略）に格納する。ステップＳＥ２では、トランザクション保証部４４は、ＯＲＢ４１からのコネクション監視結果情報７０（図５（ｂ）参照）を受信したか否かを判断し、この判断結果が判断結果が「Ｎｏ」である場合、同判断を繰り返す。
【００６７】
つぎに、図２に示したステップＳＤ４では、ＯＲＢ４１は、上記リプライ情報５０nをクライアント３０nのリプライ受信部３３nへ送信する。このリプライ情報５０nは、リプライ受信部３３nに受信された後、メモリ（図示略）に格納される。
【００６８】
ここで、クライアント３０nとサーバ４０との間のコネクションが異常切断されると、ステップＳＤ６では、ＯＲＢ４１は、コネクション異常切断通知として、コネクション監視結果情報７０（図５（ｃ）参照）をトランザクション保証部４４へ送信する。このとき、トランザクションの不整合が発生する。上記コネクション監視結果情報７０（異常切断）は、トランザクション保証部４４により受信される。
【００６９】
これにより、トランザクション保証部４４は、図３に示したステップＳＥ２の判断結果を「Ｙｅｓ」とする。ステップＳＥ３では、トランザクション保証部４４は、受信したコネクション監視結果情報７０の通知コードを参照し、コネクションが正常に解放されたか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＥ５では、トランザクション保証部４４は、コネクション異常切断に対応するＩＰアドレスおよびポート番号をキーにして、メモリに格納されている（複数の）リプライ情報から、コネクション異常切断に対応するリプライ情報５０n（図５（ａ）参照）を検索する。
【００７０】
ステップＳＥ６（図２：ステップＳＤ７）では、トランザクション保証部４４は、リプライ情報５０nに対応する通知リプライ情報９０n（図７（ｂ）参照）をクライアント３０nのトランザクション通知エージェント３４nへ送信する。この通知リプライ情報９０nは、トランザクション通知エージェント３４nにより受信される。
【００７１】
これにより、トランザクション通知エージェント３４nは、図４に示したステップＳＦ１の判断結果を「Ｙｅｓ」とする。ステップＳＦ２では、トランザクション通知エージェント３４1は、受信した通知リプライ情報９０nのクライアントアプリケーション名（リクエストＩＤでも良い）をキーとして、メモリに格納されている複数のリプライ情報の中から、コネクション異常切断に対応する通知リプライ情報９０nを検索する。ステップＳＦ４では、トランザクション通知エージェント３４1は、上記通知リプライ情報９０nのリプライデータに基づいて、トランザクションの整合をとる。
【００７２】
なお、一実施の形態においては、図３に示したステップＳＥ５でリプライ情報を検索し、検索されたリプライ情報に対応する通知リプライ情報をトランザクション通知エージェントへ送信する例について説明したが、図６に示したステップＳＧ５のように検索することなく、メモリに格納されている全リプライ情報をトランザクション通知エージェントへ送信するようにしてもよい。図６に示したステップＳＧ１〜ステップＳＧ４は、図３に示したステップＳＥ１〜ステップＳＥ４に対応している。
【００７３】
以上説明したように、一実施の形態によれば、クライアント３０1〜３０nからトランザクション処理の実行を依頼するリクエストがあった場合にデータベース４５を更新し、リクエストに対応する通知リプライ情報をクライアント３０1〜３０nへ送信するとともに、メモリに格納しておき、コネクションの異常切断時に当該通知リプライ情報をクライアント３０1〜３０nへ送信するようにしたので、従来のクライアント３０1〜３０nからのロールバックの場合に比べて、ネットワークのトラフィック量を低減でき、通信の異常発生時の通信負荷を低減させることができる。
【００７４】
また、一実施の形態によれば、コネクションが正常解放された場合に、メモリに格納されたリプライ情報を破棄するようにしたので、メモリの利用効率を向上させることができる。
【００７５】
また、一実施の形態によれば、通知リプライ情報にリクエストを識別するためのリクエストＩＤを含ませるようにしたので、このリクエストＩＤに基づいて、コネクションの異常切断に対応するリクエストを容易に特定することができ、異常切断に伴うトランザクションの整合をとることができる。
【００７６】
以上本発明にかかる一実施の形態について図面を参照して詳述してきたが、具体的な構成例はこの一実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【００７７】
例えば、前述した一実施の形態においては、サーバ４０の機能を実現するためのデータ通信プログラムを図８に示したコンピュータ読み取り可能な記録媒体２００に記録して、この記録媒体２００に記録されたデータ通信プログラムを同図に示したコンピュータ１００に読み込ませ、実行することによりサーバ４０の機能を実現するようにしてもよい。
【００７８】
図８に示したコンピュータ１００は、上記データ通信プログラムを実行するＣＰＵ（Central Processing Unit）１０１と、キーボード、マウス等の入力装置１０２と、各種データを記憶するＲＯＭ（Read Only Memory）１０３と、演算パラメータ等を記憶するＲＡＭ（Random Access Memory）１０４と、記録媒体２００からデータ通信プログラムを読み取る読取装置１０５と、ディスプレイ、プリンタ等の出力装置１０６と、装置各部を接続するバスＢＵとから構成されている。
【００７９】
ＣＰＵ１０１は、読取装置１０５を経由して記録媒体２００に記録されているデータ通信プログラムを読み込んだ後、データ通信プログラムを実行することにより、前述したサーバ４０の機能を実現する。なお、記録媒体２００には、光ディスク、フロッピー（登録商標）ディスク、ハードディスク等の可搬型の記録媒体が含まれることはもとより、ネットワークのようにデータを一時的に記録保持するような伝送媒体も含まれる。
【００８０】
【発明の効果】
以上説明したように、本発明によれば、外部装置からトランザクション処理の実行を依頼するリクエストがあった場合にデータベースを更新し、リクエストに対応するリプライ情報を外部装置へ送信するとともに、メモリに格納しておき、コネクションの異常切断時に当該リプライ情報を外部装置へ送信するようにしたので、従来の外部装置からのロールバックの場合に比べて、通信回線のトラフィック量を低減でき、通信の異常発生時の通信負荷を低減させることができるという効果を奏する。
【００８１】
また、本発明によれば、コネクションが正常解放された場合に、メモリに格納されたリプライ情報を破棄するようにしたので、メモリの利用効率を向上させることができるという効果を奏する。
【００８２】
また、本発明によれば、リプライ情報にリクエストを識別するための識別情報を含ませるようにしたので、この識別情報に基づいて、コネクションの異常切断に対応するリクエストを容易に特定することができ、異常切断に伴うトランザクションの整合をとることができるという効果を奏する。
【図面の簡単な説明】
【図１】  本発明にかかる一実施の形態の構成を示すブロック図である。
【図２】  同一実施の形態の動作を説明するシーケンス図である。
【図３】  図１に示したトランザクション保証部４４の動作を説明するフローチャートである。
【図４】  図１に示したトランザクション通知エージェント３４1〜３４nの動作を説明するフローチャートである。
【図５】  同一実施の形態で用いられるリプライ情報およびコネクション通知情報のフォーマットを示す図である。
【図６】  図１に示したトランザクション保証部４４の動作を説明するフローチャートである。
【図７】  同一実施の形態で用いられるリプライ情報のフォーマットを示す図である。
【図８】  同一実施の形態の変形例を示すブロック図である。
【図９】  従来のＣＯＲＢＡ通信システムの構成を示すブロック図である。
【図１０】  従来のＣＯＲＢＡ通信システムの動作を説明するシーケンス図である。
【符号の説明】
３０1 〜３０n  クライアント
３１1 〜３１n  ＯＲＢ
３２1 〜３２n  リクエスト送信部
３３1 〜３３n  リプライ受信部
３４1 〜３４n  トランザクション通知エージェント
４０  サーバ
４１  ＯＲＢ
４２  リクエスト受信部
４３  リプライ送信部
４４  トランザクション保証部
１００  コンピュータ
１０１  ＣＰＵ
２００  記録媒体
【図１】
0003776706.tif 000002
【図２】
0003776706.tif 000003
【図３】
0003776706.tif 000004
【図４】
0003776706.tif 000005
【図５】
0003776706.tif 000006
【図６】
0003776706.tif 000007
【図７】
0003776706.tif 000008
【図８】
0003776706.tif 000009
【図９】
0003776706.tif 000010
【図１０】
0003776706.tif 000011