📑

Spring Framework with Embedded Tomcat

2023/11/20に公開

web.xml

従来のweb applicationにおける中心的な設定ファイル.
以下の情報を定義するファイル.

  • servlet
  • listener
  • filter
  • session timeout

Embedded Tomcatを使用する場合、多くの設定はプログラムによって行われる.
そのため、web.xmlファイルは必須ではない.

Embedded Tomcatでもweb.xmlを使用することは可能.
例えば、既存のアプリケーションをEmbedded Tomcatに移行する際、web.xmlを使って設定を維持することができる.
Embedded Tomcatでweb.xmlを使用するには、Tomcatのコンテキストに対してweb.xmlのパスを指定する必要がある

public class TomcatServer {

    public static void main(String[] args) throws Exception {
        // Tomcatインスタンスを作成
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080); // ポートを設定
        tomcat.getConnector();

        // コンテキストを作成
        Context ctx = tomcat.addWebapp("/", new File("src/main/webapp").getAbsolutePath());

        // web.xmlのパスを指定
        File configFile = new File("src/main/webapp/WEB-INF/web.xml");
        ctx.setConfigFile(configFile.toURI().toURL());

        // Springframework DispatcherServlet の追加(web.xml or initializerで実施することも可能であるためcomment out)
        // AnnotationConfigWebApplicationContext spring = new AnnotationConfigWebApplicationContext();
        // tomcat.addServlet("", "dispatcher", new DispatcherServlet(spring)).addMapping("/");

        // Tomcatを起動
        tomcat.start();
        tomcat.getServer().await();
    }
}

Servlets

  • サーブレットは、クライアントからのリクエストを処理し、レスポンスを生成するJavaプログラム
  • サーブレットは通常、HTTPリクエストを取り扱い、HTML、JSON、XMLなどの形式でレスポンスを返す
  • web.xmlでは、サーブレットのクラス名、URLパターン(サーブレットが反応するURL)、初期化パラメータなどを定義

springframework: org.springframework.web.servlet.DispatcherServlet

Listeners

  • リスナーは、アプリケーションのライフサイクルイベント(アプリケーションの起動や終了など)を監視するコンポーネント
    • 例えば、ServletContextListenerは起動または終了するときに通知を受け取る
  • web.xmlでは、リスナーのクラス名を定義し、アプリケーションのイベントに対してそれらが反応するように設定

springfaramework: org.springframework.web.context.ContextLoaderListener

Filters

  • フィルターは、サーブレットに到達するリクエストやサーブレットからのレスポンスを変更、検査、または加工するために使用
  • フィルターは、認証、ロギング、画像変換、データ圧縮などの機能に使われる
  • web.xmlでは、フィルターのクラス名とフィルタリングすべきURLパターンを定義

Other components

  • コンテキストパラメータ: アプリケーション全体で利用される構成データを定義
  • エラーページ: 特定のエラーコードや例外タイプに対するカスタムエラーページを指定
  • セキュリティ設定: ウェブアプリケーションのセキュリティに関連する構成を定義
    • 例えば、特定のURLに対するアクセス制御や認証メカニズムを設定できる

spring-framework-petclinic の embedded tomcat migration sample PR

https://github.com/kackey0-1/spring-framework-petclinic/pull/1

References

Discussion