AutoWeb

50. セッション共有問題

現在市販のブラウザのほとんどすべてのブラウザがタブ・ブラウザ型式です。
これはエンド・ユーザーが複数のインターネット・サイトを同時起動させる傾向にあるため
2つ目以降のセッションを開けると自動的にブラウザのタブとして組み込まれるように
なっています。
つまりアプリケーションとしてのブラウザが2つ目として起動されるのではなく
スレッドとしてタブとして起動する方法に変更されています。
技術的に言えばブラウザのプロセス(=IBM iでのJOB)は複数起動するのではなく
ひとつだけの起動でスレッドをタブとして起動する、いわゆるマルチ・スレッドとして
稼動するように設計されています。

ところがブラウザの設計者はここで大きなミスを犯しています。
それはTCP/IP通信のためのSocket通信子までケチってひとつだけにしてしまったことです。
つまり本社と複数ある支店との電話は一台だけで同時に通話しているようなものです。

複数セッションであるタブから送信した結果は別のタブの画面に現れるような
混在現象(=入れ違い現象)が出てしまいます。
これを「セッション共有問題」と呼んでいます。

これはIBMiのWeb化にだけ起こる問題ではなくすべてのWebアプリについて
起こる全世界的な問題で例えばMicrosoftは自社でタブ・ブラウザを開発しておきながら
一方で自社のセッション共有問題に苦しんでいます。
IBM に聞いたところIBMでは「複数のセッションは起動しないでください」と
ユーザーに指導しているとのことです。
これでは解決にはなっていません。

同じように他社製品(aXes, HATS, …)などもすべてセッション共有問題を抱えていますが
ユーザーにはそのことは伏せて販売しています。
ユーザーは購入して初めてセッション共有問題があることを知らされます。

AutoWebでは直販のためお客さまに責任がありセッション共有問題も解決する必要がありました。
AutoWebでは「スマート・コネクション」という手法によってこの問題を解決しています。

■スマート・コネクション

AutoWebは独自のHTTPサーバー:Alaskaを保有しています。
そのためHTTPサーバーにHTTPプロトコルを拡張したIBM i独自の機能を追加することが
できます。
スマート・コネクションとは簡単に言えば

・ブラウザにHTMLが表示されたらTCP/IP通信は切断する

  

HTMLの表示と同時に通信が切断たれるので入れ違い現象は発生しません。

・HTMLにはJOB番号が埋め込まれていて必ず同じJOB番号のJOBに戻る

HTTPサーバーはどの子スレッドが処理するのかし不定というのが原則ですが
Alaskaは元のJOBに必ず戻るような機能を追加しました。

・AutoWebのJOBが終了すると同時に通信していたAalskaのJOBも終了する

これは後でHTMLを保存していて後から再接続する成り済ましを防ぐためです。

…くわしくはAutoWeb ヘルプをご覧ください。