MeFt/Webアプリケーションの運用中に、サーバとクライアントとの間の通信が切断されるパターンとして、次の2つがあります。
WWWブラウザで[戻る]ボタンが押されたり、WWWブラウザのアドレスバーで別のURLが指定されたとき
クライアントマシンの電源が切断されたり、ネットワークが不通になったとき
サーバとクライアントとの間の通信が切断された場合、サーバのアプリケーションはそのことを認識できず、クライアントからの入力を待ちつづける状態となります。しかし、通信切断によりクライアントから応答を返すことができないため、正常にプログラムを終了することができなくなります。プログラムを終了するには強制終了するしかありませんが、ファイルやデータベースが正常にクローズされないため、データに影響が出る可能性があります。
MeFt/Webアプリケーションを構築するにあたっては、このような通信切断時への対応を考慮する必要があります。以下に、とるべき対応を説明します。
WWWブラウザで[戻る]ボタンが押されたり、WWWブラウザのアドレスバーで別のURLが指定されたとき
WWWブラウザで[戻る]ボタンが押されたり、WWWブラウザのアドレスバーで別のURLが指定されたりすると、他のページに移動します。その結果、それまで入出力を行っていたページとサーバとの通信が切断されてしまいます。この状況に対応するには、MeFt/WebコントロールのQuitメソッドを使用します。Quitメソッドを使用すると、WWWブラウザでイベントが発生したことをアプリケーションに通知することができます。
リモート実行に使用するHTMLで、WWWブラウザのページが遷移したときに発生するWindow_onUnloadイベントの処理としてMeFt/WebコントロールのQuitメソッドを実行するように記述すると、WWWブラウザで[戻る]ボタンが押されるなどしてページが移動した場合、Quitメソッドが実行されてアプリケーションにコードが通知されます。
HTMLでのQuitメソッドの記述例を以下に示します。
<HTML> : <OBJECT ID="MeFtWeb1" : </OBJECT> <SCRIPT type="text/javascript"> function Window_onUnload(){ MeFtWeb1.Quit(); } : </SCRIPT> </HTML>
COBOLアプリケーションには、表示ファイルのFILE STATUS句に指定された4桁のデータ名の領域に「90N8」で通知されます。それを判定することによってページが移動されたことを知ることができるので、ファイルのクローズやデータベースの切断などの後処理を行うようにします。
MeFt/WebコントロールのQuitメソッドは、“4.4 HTMLの作成”および、“MeFt/Webユーザーズガイド”の“利用者プログラムの中断(Quit)”を参照してください。
クライアントマシンの電源が切断されたり、ネットワークが不通になったとき
クライアントマシンの電源が切断されたり、ネットワークが不通になったりして、サーバとクライアントとの間の通信が切断された状況に対応するには、MeFt/Webサーバの通信監視時間の機能を使用します。
MeFt/Webサーバに通信監視時間を設定すると、設定された通信時間を越えてクライアントからレスポンスがなかった場合、MeFt/Webサーバからアプリケーションにコードを通知します。COBOLアプリケーションには、表示ファイルのFILE STATUS句に指定された4桁のデータ名の領域に「90N7」で通知されます。それを判定することによって通信監視時間を超えて応答がなかったことを知ることができるので、ファイルのクローズやデータベースの切断などの後処理を行うようにします。
MeFt/Webの通信監視時間の設定は、“4.2.1 MeFt/Web動作環境の設定”、および“MeFt/Webユーザーズガイド”の“MeFt/Webの動作環境を設定する”を参照してください。
参考
設定される通信監視時間が長すぎると、サーバとクライアントとの間の通信が切断されているにもかかわらずアプリケーションは起動し続けることになり、サーバの負荷が高まります。
一方、設定される通信監視時間が短すぎると、画面での作業に時間がかかった場合、突然アプリケーションが終了することになってしまいます。
通信監視時間は、業務の内容に応じて適切な値を設定してください。