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/