Name
Password

HTTPリクエストの処理の流れ

  • 2010-05-27 18:33 更新

Kvasir/SoraではHTTPリクエストはまずKvasirFilter(org.seasar.kvasir.webapp.servlet.KvasirFilter)によってフィルタ処理され、次にKvasirServlet(org.seasar.kvasir.webapp.servlet.KvasirServlet)によって処理されます。

KvasirFilterはorg.seasar.kvasir.base.webappプラグインのrequestFilter拡張ポイントにプラグインされたRequestFilterをフェーズ順に呼び出します。同一フェーズに複数のRequestFilterがプラグインされている場合は後からプラグインされたものが先に呼び出されます。

RequestFilterのフェーズには以下のものがあります。

initializationフェーズ
初期化フェーズです。
authenticationフェーズ
認証を行なうフェーズです。
permissionフェーズ
認可、権限チェックを行なうフェーズです。
filteringフェーズ(デフォルト)
一般的なフィルタ処理を行なうフェーズです。
elseフェーズ
上記のどのフェーズにもあてはまらない処理を行なうフェーズです。

KvasirServletはorg.seasar.kvasir.base.webappプラグインのrequestProcessor拡張ポイントにプラグインされたRequestProcessorをフェーズ順に呼び出します。同一フェーズに複数のRequestProcessorがプラグインされている場合は後からプラグインされたものが先に呼び出されます。

RequestServletのフェーズには以下のものがあります。

initializationフェーズ
初期化フェーズです。
controllerフェーズ
リクエストのディスパッチを行なうフェーズです。
logicフェーズ
リクエストに関するビジネスロジックの実行を行なうフェーズです。
presentationフェーズ(デフォルト)
リクエストの処理結果のレンダリング処理を行なうフェーズです。
elseフェーズ
上記のどのフェーズにもあてはまらない処理を行なうフェーズです。

Kvasir/Sora CMSにおいて具体的に呼び出されるFilter/Processorは以下のとおりです。基本的に上から下に順に呼び出されていきます。

  • org.seasar.kvasir.webapp.servlet.KvasirFilter → 各RequestFilter
    1. initializationフェーズ
      • [R] multibyteRequestFilter (org.seasar.kvasir.base.webapp.multibyte)
    2. authenticationフェーズ
    3. permissionフェーズ
    4. filteringフェーズ(デフォルト)
      • [R, F, I] pageRequestFilter (org.seasar.kvasir.cms) → 各PageFilter
        1. initializationフェーズ
          • [R] [Ymir] setCharacterEncodingPageFilter (org.seasar.kvasir.cms.ymir)
          • [R] [Ymir] multipartRequestPageFilter (org.seasar.kvasir.cms.ymir)
        2. authenticationフェーズ
          • [R] actorBindingPageFilter (org.seasar.kvasir.cms)
        3. permissionフェーズ
          • [R] concealPageFilter (org.seasar.kvasir.cms)
          • [R] permissionPageFilter (org.seasar.kvasir.cms)
        4. filteringフェーズ(デフォルト)
          • [R, I] [Ymir] ymirPageFilter (org.seasar.kvasir.cms.ymir)
        5. elseフェーズ
    5. elseフェーズ
  • org.seasar.kvasir.webapp.servlet.KvasirServlet → 各RequestProcessor
    1. initializationフェーズ
    2. controllerフェーズ
      • staticContentProcessor (org.seasar.kvasir.base.webapp)
    3. logicフェーズ(デフォルト)
      • pageRequestProcessor (org.seasar.kvasir.cms) → 各PageProcessor
        1. initializationフェーズ
        2. controllerフェーズ
          • standardPageProcessor (org.seasar.kvasir.cms)
        3. logicフェーズ(デフォルト)
          • javaPageProcessor (org.seasar.kvasir.cms.java)
        4. presentationフェーズ
          • [Ymir] resourcePageProcessor (org.seasar.kvasir.cms.ymir)
          • [Ymir] zptPageProcessor (org.seasar.kvasir.cms.ymir)
          • [templateType=zpt] zptPageProcessor (org.seasar.kvymir.cms.zpt)
        5. elseフェーズ
          • noEntryPageProcessor (org.seasar.kvasir.cms)
    4. presentationフェーズ
    5. elseフェーズ

[R]、[F]、[I] はそれぞれリクエストディスパッチ、フォワードディスパッチ、インクルードディスパッチの時に呼び出されることを表わします。

[templateType=zpt] はテンプレートタイプがZPTである場合に呼び出されることを表わします。

[Ymir] はYmirアプリケーションの配下のパスへのリクエストの時に呼び出されることを表わします。