■ 初期化パラメータを使用する場合は「@WebInitParam」
初期化パラメータを使用する場合でも、従来なら以下のようにweb.xmlのServletマッピングに設定を追加していました。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これが、「@WebInitParam」というアノテーションを追加するだけでOKになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
■ Filterを使用する場合は「@WebFilter」
Filterについても従来は、web.xmlにマッピングしていました。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これには、「@WebFilter」を利用するだけでOKです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
■ Listenerを使用する場合は「@WebListener」
Listenerもweb.xmlにマッピングしなくても、@WebListenerを以下のServlet仕様で定義されたListenerのインターフェイスを実装したクラスにアノテーションするだけで利用できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
つまり、簡単なアプリケーションならweb.xmlなしでjarファイルやclassファイルを配置するだけで実行できてしまいます。
■ 他にも使えるアノテーション
上記で紹介したアノテーション以外にもいろいろと用意されています。
- @MultipartConfig
ファイルアップロードを使用する際のアノテーション - @ServletSecurity
セキュリティ制約を設けるアノテーション - @HandlesTypes
ServletContainerInitializerで使用するアノテーション
このように、Servlet 3.0では「Annotation based configuration」の導入によって、今までweb.xmlに定義していたServletやFilterなどの設定をアノテーションで定義できるようになり、EoDがぐっと向上しました。
「モジュール化と拡張性」における3つの仕様
次は、Pluggability and Extendibilityを紹介します。Servlet 3.0では、Pluggability and Extendibilityとして以下の3つの仕様を新しく定義しました。
■【1】Web-Fragmentでweb.xmlをモジュール化
Webアプリケーション開発では、SpringやStrutsのようなWebアプリケーションフレームワークを利用することが多いと思います。これらフレームワークを使用するために、開発者は、アプリケーションのweb.xmlにServletやFilter、Listenerなどのようなフレームワーク特有の設定を行う必要があります。
このため、web.xmlはファイルの肥大化やアプリケーション特有の設定とフレームワーク特有の設定が混ざり合った煩雑なWeb設定になってしまいます。
利用するフレームワークが増えていくと、事態はより深刻になってしまいます。Servlet 3.0では、上記のような問題を解決するため、「web-fragment」という新しい概念を導入しました。
web-fragmentは、web.xmlをモジュール化して、フレームワークや外部モジュールが自らのjarファイルの中にそれを含めることを可能にします。モジュール化されたweb.xmlは「web-fragment.xml」と呼ばれ、Servletコンテナはすべてのweb-fragment.xmlをマージしてWebアプリケーションを構築します。
各JAR内のweb-fragment.xmlは、デプロイ中にTomcatによって処理され、最終的にWEB-INF内のweb.xmlとマージして1つのWebアプリケーションとして構築します。
また、web-fragment.xmlを読み込む順番を絶対的順序と相対的順序の2種類の方法で提供しているので、フレームワーク間でServletやFilterが特別な順番で呼び出される必要がある場合にも対応できます。
JARごとにweb-fragment.xmlが記述できるようになったので、フレームワークやリソースをモジュール化して、JARファイルをアプリケーションの「WEB-INF/lib」フォルダに単に配置するだけで、自動的にWeb設定できるようになります。
また、フレームワーク特有の設定などをアプリケーションのweb.xmlから分離できるため、本来のアプリケーションの設定以外によるweb.xmlの肥大化を抑制でき、非常にすっきりします。
次ページで、残りの2つを説明します。
Copyright © ITmedia, Inc. All Rights Reserved.