サーバー接続の復元
Windowsフレームワークでサーバーへの接続の一時的な切断を処理するように構成できます。例えば、このような切断は、ユーザーのラップトップが無線ベース・ステーションの範囲外に出た場合に発生する可能性があります。
次のときにサーバー接続を確認するようにフレームワークを構成することができます。
· ユーザーが別のビジネス・オブジェクトやアプリケーションに移る前
· コマンドを実行する前
· 設計者が指定した間隔で
フレームワークは、サーバー上で簡単なファンクションを実行することにより、接続の状態を確認します。
再接続に失敗した場合、またはファンクションは実行されるもののOK値が返されない場合は、フレームワークは次のいずれかの方法で応答できます。
· デフォルトの応答では、フレームワークのアクティビティを停止し、ユーザーに通知し、ユーザーがOKをクリックした後で再接続を試みます。
· アプリケーション設計者は、独自のサーバー接続テスト用ファンクションを記述することもできます。ファンクションが正常に実行された場合でも、接続エラー・コードを返すように記述することができます。これは、フレームワークのユーザー全員に対して、アップグレードが実行中で、ログ・オフが必要なことを通知する場合に役に立ちます(サンプルのファンクションUF_SYSBR/UFU0004を参照してください)。
· #avFrameworkManager.avCheckConnectionメソッドを使用して、フレームワークのフィルターやコマンド・ハンドラーでプログラムにより接続を確認することもできます。データベース検索の直前にフィルターにコードを記述するか、保存の直前にコマンド・ハンドラーにコードを記述する必要があります。
· avSessRecoverStarted、avSessRecoveredおよびavSessRecoverFailedなどのフレームワーク・マネージャによって通知されたイベントをリスンすることにより、フィルターやコマンド・ハンドラーは接続の復元が進行中であることを検出することもできます。
知っておくべきこと
RDML(X)コードが実行中である場合は、コードが具体的にavCheckConnectionを要求しないかぎり、サーバー接続の確認は発生しません。
[コマンドを実行する前に接続を確認してください]オプションが選択されている場合でも、サーバー・データベースIOを実行する前(例えば、検索や保存を実行する前)に、コマンド・ハンドラーやフィルターにinvoke #avFrameworkManager.avCheckConnectionを格納する必要があります。
接続の復元を使用するには、使用するデータベースのコミット制御の境界がユーザー操作に及ばないようにする必要があります。データベースのコミット制御の境界は、セッションの再接続には及ぶことはありません。
接続の復元を使用している場合は、セッションに基づく値(例:server *JOBNBR)をアプリケーション・セッションで情報に対する「キー」として使用しないでください。このような値は、再接続後に変更される恐れがあるからです。
セッション復元機能は、LANSAスーパーサーバー・セッションのみを処理します。5250 RAMPセッションは復元しません。
フレームワークがフレームワーク・ロッキングでロックされている場合は、接続の確認と復元は実行されません。ただし、次のような場合を除きます。
· 指定された間隔で発生する自動接続チェック
· 特定のフィルターやコマンド・ハンドラーでのavCheckConnectionの使用