Weblogicに複数アプリケーションをデプロイ
ひとつのアプリケーションサーバに、複数のアプリケーションをデプロイする場合、セッションの管理方法によっては注意が必要だ。
例えばWeblogicではデフォルトでセッション管理にcookieを使用する。デフォルトのcookieの名称は「JSESSIONID」になっているが、これは複数アプリケーションをひとつのサーバにデプロイした際でも、全てのアプリケーションで同じ名称が使用される。
この状態だと、例えばアプリケーションがそれぞれの認証機構にcookieを使用している場合、アプリケーションAでログインした状態で、別のアプリケーションBにログインすると、アプリケーションAの認証情報はcookieが上書きされることにより消えてしまい、再度アプリケーションAにログインしなおす必要がある。
その他、アプリケーションAでセッションに格納した情報が、アプリケーションBの画面を開いたことによりセッションIDが更新されてしまい、アプリケーションAから見えなくなってしまうなどの障害が起こりうる。
これを防ぐためには、cookieの名称(もしくはパス)を、一つのサーバに同居するアプリケーション毎に使い分ける必要がある。
ロードバランサなどを使用し、物理的なサーバは異なっていてもブラウザから同一サーバに見える場合も同様だ。
Weblogicの場合、cookieの設定はweblogic.xmlファイルに記述する。
たとえばこんな感じ。
APP_A_SESSIONID
/Application_A/