ページの先頭です。
ここから本文です。

お知らせ

[WebOTX] アドバンスドモードでAJPリスナを使用している場合に、URL Rewritingで送られてきたセッションIDに対するセッション情報が取得できない問題と対策について


概要

アドバンスドモードでAJPリスナを使用している場合に、URL RewritingによってURLへのセッションIDの付加をしても、WebアプリケーションにおいてセッションIDに対するセッション情報を取得できない問題があります。


影響のある製品

  • WebOTX Application Server Standard V9.3 ~ V9.4
  • WebOTX Application Server Enterprise V9.3 ~ V9.4

詳細

以下の条件をすべて満たす場合、リクエストが、セッション情報を持つプロセスへ適切に振り分けされず、同じプロセスグループの別のプロセスへ振り分けられる可能性があります。
そのため、リクエストは同じWebアプリケーションで処理されますが、Webアプリケーションにおいて、セッションIDに対するセッション情報を取得できない問題があります。

(1)Webコンテナの動作モードがアドバンスドモード
(2)WebコンテナとWebサーバの連携モードがAJP
(3)プロセスグループのプロセス数が複数
(4)セッションレプリケーションを設定していない
(5)セッションの管理方法がURL Rewriting

それぞれの確認方法は以下になります。

(1)Webコンテナの動作モードは、WebコンテナのパラメータprocessMultiplicityがtrue(アドバンスドモード)かfalse(スタンダードモード)かで確認できます。
アドバンスドモードの場合、otxadminコマンドでは以下のように出力されます。

# otxadmin get --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号> server.web-container.processMultiplicity
server.web-container.processMultiplicity = true

(2)WebコンテナとWebサーバの連携モードは、Webコンテナのパラメータadvanced-mode-protocolがajp(AJPプロトコル)かiiop(IIOPプロトコル)かで確認できます。
AJPの場合、otxadminコマンドでは以下のように出力されます。

# otxadmin get --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号> server.web-container.advanced-mode-protocol
server.web-container.advanced-mode-protocol = ajp

(3)プロセスグループのプロセス数は、プロセスグループごとに以下のコマンドで確認できます。

# otxadmin get --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号> tpsystem.applicationGroups.<アプリケーショングループ名>.processGroups.<プロセスグループ名>.processCount
tpsystem.applicationGroups.<アプリケーショングループ名>.processGroups.<プロセスグループ名>.processCount = <プロセス数>

(4)セッションレプリケーションを設定しているかどうかは、web.xmlで確認できます。アプリケーションが持つ WEB-INF/web.xmlに次の定義があればセッションレプリケーションを設定しています。無ければセッションレプリケーションは設定されていません。

<web-app>
    :
    <distributable/>
    :

(5)セッション管理方法がURL Rewritingになっているかどうかは、Webアプリケーションごとに以下のコマンドで確認できます。

# otxadmin get --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号> server.applications.web-module.<AP名>.module.<AP名>.engine.web.web-module-config.cookies
server.applications.web-module.<AP名>.module.<AP名>.engine.web.web-module-config.cookies = false

アクセスログからの確認方法は以下です。

プロセスグループのプロセス数が複数で、セッションレプリケーションを設定していない場合、セッションIDにはプロセスIDが付加されます。プロセスIDはセッションIDの最後尾に"$プロセスID"の形で付加されます。
また、セッションの管理方式がURL Rewritingの場合、URLにセッションIDが付加されます。したがって、この問題に該当する場合、アクセスログにはjsessionidとしてプロセスIDを含むセッションIDが設定されているURLのリクエストが記録されます。

例) /HelloSample/HelloServletへのリクエストにURL RewritingでプロセスIDを含むセッションIDが含まれている場合
xx.xx.xx.xx - - xxxx-xx-xx xx:xx:xx "GET /HelloSample/HelloServlet;jsessionid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$xxxx HTTP/1.1" xxx xxx xxxxx

上記の例のようなリクエストが記録されていない場合、この問題には該当しません。

この事象が発生した場合、Webアプリケーションでは正しいセッション情報を取得することができません。


対処方法

パッチの公開時期は現在検討中です。急ぎでパッチが必要な場合はご連絡ください。


回避方法

以下のいずれかを行ってください。

(a)プロセスグループのプロセス数を1に変更する
(b)セッションレプリケーションを設定する
(c)セッションの管理方法をCookieに変更する
(d)WebコンテナとWebサーバの連携モードをIIOPに変更する


それぞれの詳細は以下となります。

(a)プロセスグループのプロセス数は、以下のotxadminコマンドで変更できます。反映には、アプリケーショングループの再起動が必要です。プロセスグループの多重度が減りますので、性能にはご注意ください。

# otxadmin set --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号> tpsystem.applicationGroups.<アプリケーショングループ名>.processGroups.<プロセスグループ名>.processCount=1

(b)セッションレプリケーションの設定は、セッション情報をどこに格納するかによって、設定方法が異なります。セッションへのアクセスのための処理が追加になりますので、性能にはご注意ください。
詳細はマニュアルをご確認ください。

[WebOTX マニュアル V9.3] または [WebOTX マニュアル V9.4]
 > Application Server
   > リファレンス集 運用管理・設定編
     > 1. コンフィグレーション(設定一覧)
       > 1.4. Webコンテナ
         > 1.4.7. HTTPセッション管理について
           > 1.4.7.3. セッションレプリケーション

(c)セッションの管理方法をCookieに変更するには、warアーカイブに格納してあるnec-web.xmlを変更してwarアーカイブを再作成するか、otxadminコマンドで設定します。また、セッションの管理方法として、URL Rewritingを無効にします。詳細はマニュアルをご確認ください。

[WebOTX マニュアル V9.3] または [WebOTX マニュアル V9.4]
 > Application Server
   > リファレンス集 運用管理・設定編
     > 1. コンフィグレーション(設定一覧)
       > 1.4. Webコンテナ
         > 1.4.7. HTTPセッション管理について
           > 1.4.7.1. HTTPセッション管理について

(d)WebコンテナとWebサーバの連携モード(advanced-mode-protocol)を変更するには以下の操作を行います。これにより、advanced-mode-protocol属性および関連する設定を一括で変更します。設定後はドメインを再起動してください。WebコンテナとWebサーバの連携モードをIIOPに変更するには、WebOTX Webサーバを利用していることが前提となります。
また、AJPリスナではなく、IIOPリスナを使用することになりますので、IIOPリスナの機能、設定をご確認ください。
AJPリスナのアクセスログやエラードキュメントカスタマイズ機能を使用している場合は、使用できなくなりますので、IIOPプラグインのエラードキュメントカスタマイズ機能を使用してください。

# otxadmin stop-system --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号>
# otxadmin invoke --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号> server.web-container.switchAdvancedModeProtocol iiop


更新履歴

  • 2017/1/19 初版
  • 2017/2/17 第2版

製品名カテゴリ

WebOTX
WebOTX Application Server

  • コンテンツID: 3010101856
  • 公開日: 2017年03月02日
  • 最終更新日:2018年01月11日
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。