■【2】プログラムによるWebアプリケーションの拡張
Servlet 3.0ではServletやFilter、およびそれらのURLマッピングをプログラムから動的に登録し、Webアプリケーションを拡張できます。拡張メソッドは、そのアプリケーションの初期化中でのみ、呼び出すことが可能です。
そのため、ServletContextListenerのcontexInitializedメソッドか、ServletContainerInitializerのonStartupメソッドのいずれかのみで利用できます。
利用可能なAPIの一部を紹介します。これらAPIはServletContextから呼び出せます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
addServletメソッドやaddFilterメソッドはServletRegistration.DynamicやFilterRegistration.Dynamicを返却します。開発者は、これらRegistrationインターフェイスを利用してServletやFilterのマッピングや初期パラメータの追加などを行います。
ServletRegistration.DynamicインターフェイスとFilterRegistration.DynamicインターフェイスのAPIの一部を、以下に記載します。
- ServletRegistration.Dynamicで利用可能なインターフェイス
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- FilterRegistration.Dynamicで利用可能なインターフェイス
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ServletContextListenerでの利用例は、こんな感じです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記サンプルでは、[1]でTestServletクラスのインスタンスを生成し、【2]でコンテキストにTestServletインスタンスを登録します。
[3]で返却されたServletRegistrationに「/config1」をマッピングすることで、TestServletが/config1のパスでアクセスできるようになります。
もう1つ、ServletContainerInitializerでの利用例も載せておきます。
※ServletContainerInitializerはServlet 3.0から追加されたインターフェイスで、アプリケーションの初期化時にサービスプロバイダによって呼び出されます。
まず、JARのサービスプロバイダにServletContainerInitializerを登録します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ServletContainerInitializerを実装します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これら拡張メソッドを利用することで、Webコンテキスト初期化時にプログラムによって動的にWebアプリケーションを拡張できます。
■【3】JSPのモジュール化
Servlet 3.0では、JSPのモジュール化が追加されました。JARファイルの「META-INF/resources」配下に静的コンテンツやJSPを作成し、Webアプリケーションの「WEB-INF/lib」にJARを配置することで、それらのファイルにWebからアクセスできます。
JSPを1つのJARに固めて利用できるので、ちょっと便利です。
Servlet 3.0の変更点は、まだまだある!
今回はTomcat 7の紹介としてServlet 3.0のうち、EoDとモジュール化と拡張性を紹介しました。
次回は、Servlet 3.0の変更点の紹介の続きとして、非同期処理、セキュリティ、Session Tracking、マルチパート対応について紹介する予定です。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Strutsの常識を知り、EclipseとTomcatの環境構築
- Tomcatはどこまで“安全”にできるのか?
- 【真夏の夜のミステリー】Tomcatを殺したのは誰だ?(2007/8/27)
- 【トラブル大捜査線】失われたコネクションを追え!(2007/9/25)
- 肥え続けるTomcatと胃を痛めるトラブルハッカー(2007/11/27)
- 数百キロのコードでブルー - ドクターTomcat緊急救命(2010/5/25)
- AWS ToolkitでTomcatクラスタをEC2上に楽々構築
- Java屋がTomcatでRuby on Railsを試すには?
- EclipseベースIDEとTomcatで始めるFlex+Java開発
- 狙われる甘〜いTomcat