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

お知らせ

[WebOTX] 1回のリクエストで業務処理が複数回実行される問題について(WebOTX V9)

概要

WebOTX Web Server(Apache) やIIS(Microsoft Internet Information Services)と連携を行っている場合、1回のリクエストで同一の業務処理が複数回実行される可能性があります。
同一の業務処理が複数回実行された場合、ブラウザに同一の業務処理の結果表示画面が複数表示される等の現象が発生します。

なお、WebOTX V8についてはこちらをご参照ください。


問題の詳細

Webサーバプラグインの動的反映機能に問題があり、Webコンテナにリクエストを転送する処理が成功しているにも関わらず失敗したと誤認する場合があり、Webコンテナにリクエストの転送をリトライする場合があります。

本問題が発生した場合、Webコンテナでは同一のリクエストを複数回受け取り、その度にWebアプリケーションを実行します。そのため、DBの更新を多重に実行したり、ブラウザに同じ処理結果を多重に返却してしまい、同一の処理結果画面が多重に表示される等の現象が発生します。

また、Webサーバプラグインのログファイルには次のメッセージが出力されます。

ajp_connection_tcp_get_message::jk_ajp_common.c (xxxx): (ajp13) can't receive the response body message from Web Container (::1:8099) (errno=10038,Socket operation on nonsocket.)

※Webサーバプラグインのログファイルの場所
${INSTANCE_ROOT}/logs/web/ 配下

  • WebOTX Webサーバ2.2の場合:mod_jk-22.log*
  • WebOTX Webサーバ2.4の場合:mod_jk-24.log*
  • IISの場合:isapi.log*
    ログがローテーションされている場合は"*"部分にローテート情報が付加されます。


本問題の発生条件を以下に記載します。

  • WebOTX V9.1x.xx.xx/V9.2x.xx.xx
次のいずれかの条件に合致する場合
  • WebOTX のエディションが Express
  • WebOTX のエディションが Standard, Enterprise で、Web コンテナの動作モードがスタンダードモードの場合

  • WebOTX V9.30.xx.xx
  • 次のいずれかの条件に合致する場合
    • WebOTX のエディションが Express
    • WebOTX のエディションが Standard, Enterprise で、Web コンテナの動作モードがスタンダードモードの場合、もしくは、Web コンテナの動作モードがアドバンスドモードで、WebコンテナとWebサーバの連携モードをAJPプロトコルで利用している場合

  • 全てに共通の条件
    • 動的反映機能が有効である場合
    • Webサーバプラグインのバージョンが「1.2.37.x または 1.2.40.0」の場合(Webサーバプラグインのバージョン確認方法は後述します)


    WebOTXの動作モードの確認方法

    ご利用されている WebOTX がスタンダードモードで動作しているかどうかを確認するためには、以下のコマンドを実行してください。

    otxadmin> get server.web-container.processMultiplicity

    コマンドの実行結果が以下のように false が表示された場合はスタンダードモードで動作しています。

    server.web-container.processMultiplicity = false


    WebOTX V9.30.xx.xxの場合にWebコンテナとWebサーバの連携モードがAJPプロトコルで動作しているかどうかを確認するためには、以下のコマンドを実行してください。

    otxadmin> get server.web-container.advanced-mode-protocol

    コマンドの実行結果が以下のように ajp と表示された場合はAJPプロトコルで動作しています。

    server.web-container.advanced-mode-protocol = ajp


    Webサーバプラグインのバージョン確認方法

    Webサーバプラグインのバージョンの確認方法は以下のとおりです。

    WebOTX Web Server(Apache)をご利用の場合

    以下のファイルにバージョン情報が出力されます。

      ${INSTANCE_ROOT}/logs/web/error.log
      (Linux または HP-UX の場合、ファイル名は error_log となります)。

    「Webserver_Plugin/1.2.37.x」 または 「1.2.40.0 configured.」と表示された場合は本問題が発生します。

    IISをご利用の場合

    isapi_redirect.dll をエクスプローラで選択して右クリックメニューでプロパティを開くと「詳細」タブの「ファイルバージョン」にバージョン情報が表示されます。isapi_redirect.dll は以下のフォルダにあります。

    • 32bitの場合
    • ${INSTALL_ROOT}\bin\win32\i386

    • 64bitの場合
    • ${INSTALL_ROOT}\bin\win64\x64

    「1.2.37.x」 または 「1.2.40.0」と表示された場合は本問題が発生します。


    対処方法

    本件に問題に対応するパッチを提供します。次のダウンロードページから該当するモジュールをダウンロードしてください。

    (注意) パッチモジュールは製品保守契約を結んでいただいたお客様に限定して提供させていただいています。まだ契約がお済みでないお客様は、保守契約締結の後、ダウンロードをお願いいたします。


    回避方法

    問題の原因となる動的反映機能を無効化する事で回避が可能です。
    動的反映機能を無効化する方法はWebOTXマニュアルの以下をご参照ください。

    リファレンス集 運用管理・設定編
    1. コンフィグレーション(設定一覧)
      1.4. Webコンテナ
        1.4.4. Webサーバプラグイン定義ファイルの設定方法
          1.4.4.1. 動的反映しない設定方法

    動的反映機能を無効化した場合は、WebサーバプラグインがWebコンテナへ転送するコンテキスト名(ブラウザ等でWebアプリケーションにアクセスする時のWebアプリケーションを識別する名称(URI部分)) をWebサーバプラグイン定義 ファイルに明記する必要があります。
    以下の手順で設定を変更します。

    ※なお、WebOTX のドメイン・ディレクトリを「INSTANCE_ROOT」と表現しています。パスの区切り 文字"/"は、Windows環境では"\" と読み替えてください。

    WebOTX Webサーバ(Apache)をご利用の場合

    1. ${INSTANCE_ROOT}/config/WebServer/httpd.conf を開いてTM_WS_PLUGIN-start ~ TM_WS_PLUGIN-end で囲まれた部分を編集し、".conf-auto" を".conf"に変更します。

      変更前:
         # TM_WS_PLUGIN-start
         include "${INSTANCE_ROOT}/config/WebCont/mod_jk-2(2|4).conf-auto"
         # TM_WS_PLUGIN-end
      変更後:
         # TM_WS_PLUGIN-start
         include "${INSTANCE_ROOT}/config/WebCont/mod_jk-2(2|4).conf"
         # TM_WS_PLUGIN-end

    2. ${INSTANCE_ROOT}/config/WebCont/mod_jk-2(2|4).conf-auto を ${INSTANCE_ROOT}/config/WebCont/mod_jk-2(2|4).conf にコピーします。

    3. ${INSTANCE_ROOT}/config/WebCont/mod_jk-2(2|4).conf を開いてJkMountFile のファイル名拡張子 ".properties-auto"を ".properties"に変更します。

      変更前:JkMountFile "${INSTANCE_ROOT}/config/WebCont/uriworkermap.properties-auto"
      変更後:JkMountFile "${INSTANCE_ROOT}/config/WebCont/uriworkermap.properties"

    IISをご利用の場合

    1. ${INSTANCE_ROOT}\config\WebCont\isapi_redirect.properties を開いてworker_mount_file のファイル名拡張子 ".properties-auto"を ".properties"に変更します。

      変更前:worker_mount_file=${INSTANCE_ROOT}\config\WebCont\uriworkermap.properties-auto
      変更後:worker_mount_file=${INSTANCE_ROOT}\config\WebCont\uriworkermap.properties

    WebOTX Webサーバ(Apache)/IIS ご利用の場合共通

    1. ${INSTANCE_ROOT}/config/WebCont/uriworkermap.properties-auto を${INSTANCE_ROOT}/config/WebCont/uriworkermap.properties にコピーします。

    2. ${INSTANCE_ROOT}/config/WebCont/uriworkermap.properties を開いてWebコンテナに転送を行うコンテキストの定義を必要に合わせて追記します。

      /<コンテキスト名>=$(default.worker)
      /<コンテキスト名>/*=$(default.worker)
      のセットで追記します。

      フォーマット

         …
         /<コンテキスト名1>=$(default.worker)
         /<コンテキスト名1>/*=$(default.worker)
         /<コンテキスト名2>=$(default.worker)
         /<コンテキスト名2>/*=$(default.worker)
      ※新規のアプリケーションを配備した場合は、その都度本作業を実施します。

    3. ${INSTANCE_ROOT}/config/WebCont/workers.properties を開いてworker.listに"ajp13_original"を追加します。

      変更前:worker.list=ajp13
      変更後:worker.list=ajp13,ajp13_original

      ※「変更前」はデフォルトの状態を記載しています。
    4. WebOTX Webサーバ(Apache)/IISを再起動します。


    問題のある製品

    • WebOTX Application Server Express V9.1, V9.2, V9.3
    • WebOTX Application Server Standard V9.2, V9.3
    • WebOTX Application Server Enterprise V9.2, V9.3
    • WebOTX Portal V9.1, V9.3

    上記の環境において Web サーバプラグインのバージョンが以下となっている場合に問題があります。

    バージョン:1.2.37.x または 1.2.40.0

    製品名カテゴリ

    WebOTX
    WebOTX Application Server

    • コンテンツID: 3010101574
    • 公開日: 2016年01月06日
    • 最終更新日:2021年09月28日
    ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。