Open5

day 1 : tomcat で受け取ったリクエストが HttpServletRequest として伝搬される迄

nananana
  • "セッション生成の原点は何処か" という疑問を過去抱いた。これを起点にサーブレット周りの理解を深めたい。
    • 過去に Java Silver 学習はしたけど、このあたり試験範囲に含まれてた記憶がない。学生時代に習ったかもだが、忘却済み
  • 普段何気なく参照する HttpServletRequest の系譜を辿るとこから
  • 調査環境は tomcat
nananana

サーブレットに届くまで

tomcat が リクエストを受け、最終的に HttpServletRequest として処理されるに至る過程で、Request 自体を表すクラスは以下(ChatGPT より)

org.apache.coyote.Request:基本的なリクエストデータを表すTomcat内部のリクエストオブジェクト。
org.apache.catalina.connector.Request:HttpServletRequest に適合するラッパークラス。

coyote, catalina あたりの理解が必要そう。

coyote とか catalina とか

📝 coyote catalina 含め、tomcat のアーキテクチャがまとめられた記事
https://rainbow-engine.com/architecture-of-tomcat/

nananana

tomcat(catalina) コネクタにおけるリクエスト受信 -> サーブレットへ伝搬 フロー

tomcat 構成コンポーネントと示しつつChatGPTに解説依頼

  1. Connector がリクエストを受け取り、CoyoteAdapter で CoyoteRequest を Catalina Request (catalina.connector.Request) に変換します。
  2. Service はリクエストを Engine にルーティングし、Engine が適切な Host に振り分けます。
  3. Host はリクエストの Context(対象のWebアプリ)を選び、Wrapper が該当サーブレットにルーティングします。
  4. ApplicationFilterChain を通してフィルタを実行後、最終的にサーブレットに HttpServletRequest としてリクエストが渡され、処理が行われます。