スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(Windows(R)用)
コネクションが切断された場合,実行中のUAPを終了後,再起動してください。再起動すると,自動的にコネクションが再接続されます。
UAPを再起動したくない場合は,コネクションが切断されたことを示すエラーがUAPに返ったときに,tx_open関数を再発行してください。そうすれば,UAPを終了しなくてもサービスを続行できます。tx_open関数を再発行するときのコーディング例を次に示します。
int connection = 1; void service(char *in_data,long *in_len,char *out_data,long *out_len) { if (connection == 0) { tx_close(); tx_open(); ………コネクション切断時のtx_open再発行処理 } tx_begin(); EXEC SQL INSERT INTO ......; ……… SQL文発行 if (SQLCODE == 0) { tx_commit(); *out_data = "OK"; } else { tx_rollback(); *out_data = "NG"; if (SQLCODE == -563 || SQLCODE == -722) { connection = 0; ………………コネクション切断を記憶 } } } |
トランザクションの開始又は終了時にHiRDBとのコネクションを確立又は切断するため,途中で切断した場合も次回のトランザクション開始時にコネクションが再接続されます。
動的登録の場合は,OpenTP1/Server Baseのtrn_rm_open_close_scopeオペランドにtransactionを指定してください。そうすれば,OpenTP1/Server Baseはトランザクションの開始又は終了でHiRDBとのコネクションを確立又は切断します。したがって,途中でコネクションが切断されても,次回のトランザクションの開始時にコネクションが再接続されます。
静的登録の場合は,トランザクションの開始時にHiRDBとのコネクションが確立されているかどうかをトランザクションマネジャが確認します。コネクションが切断されている場合は,自動的に再接続されて,トランザクションを開始します。
トランザクションマネジャでトランザクションを開始して,最初にHiRDBにアクセスするSQL文を実行するまでに,HiRDBとのコネクションが切断されていた場合,SQL文の実行時にHiRDBクライアントライブラリでコネクションが再接続されます。ただし,ネットワーク障害による切断は検知できないため,再接続されません。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.