RPG

87. パーシスタント CGI と活動化グループによるセッションの維持

先の「86. 実行環境を分割する活動化グループとは」で名前つきの活動化グループを

あらためて説明した背景は パーシスタントCGI を説明するためである。

パーシスタントCGI とは直訳すると「永久的なCGI」とでも呼べばよいのであろうか?

仕組みとしては名前つきの活動化グループとして作成され、途中で終了するときは

LR をONにしないで RETURN命令だけで終了するCGI のことである。

名前つきの活動化グループのために CGI はメモリに留まり続けることになる。

パーシスタントCGI は JSP & Servlet と同じ効果があり、その最大利点と同じ効果を

発揮することになる。

次回に呼び出されたときにはDISK からではなくメモリ内から直接、起動されるため

パフォーマンスが著しく向上する。

ここにきてパーシスタントCGI を注目したのは EnterpriseServer Ver3.0 の TONAKAI による

仮想対話式環境を実現したかったからである。

TONAKAI によって生成されたパーシスタントCGI は次のような動きをする。

  • 最初の EXFMT 命令では HTMLを出力した後でRETURN によって終了する。

    このときCGI は終了はしているのでスタックからは完全に消滅する。

    しかし活動化グループは消えることなく内部では残存している。

  • スタックからは元のCGI は消え去って存在していないので別のCGI を同じスレッド内で

    自由に起動することができる。

  • 先のCGI がEXFMT の続きとして呼び出されたときは前に実行されたEXFMT からの続きとして

    処理が再開
    される。

  • このようにしてスタック環境の復元はいつでも可能である。
  • スタックの復元が可能であることによって ボタンや ボタンを

    ユーザーが押しても適切なスタック位置が復元されて、そこから処理が再開される。

  • ユーザーが ボタンを押したり、F3=終了を行うと活動化グループも CGI も
    はじめて完全に終了する。

従来のセッションBean やセッション管理との違いがおわかりであろうか?

更新を行っている多くのサイトでは「 ボタンは押さないでください。」と明記している

場合が多い。

しかし EnterpriseSever の TONAKAI では ボタンやこれらの ボタンを使用可能に

してしまったのである。F5キーを押してもかまわない。

しかも CGI がデータ待ち行列などを待機するようなことはしていない。

フィールドなどの変数値もそのまま残っているし COMMIT & ROLLBACK も可能である。

これはILE活動化グループの最大利点を生かした結果であり、これは iSeries400にしか

できない芸当である。

パフォーマンスは従来より向上し、セッションの残骸がDISK に数多く残ることもない。