📑
Spring Framework with Embedded Tomcat
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
Discussion