検索
連載

Tomcat 7も対応したServlet 3.0の6つの主な変更点Tomcat 7の新機能で何ができるようになるのか?(1)(2/3 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

初期化パラメータを使用する場合は「@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サポート
  2. プログラムによるWebアプリケーションの拡張
  3. JSPのモジュール化

【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アプリケーションを構築します。

図2 Web-Fragment
図2 Web-Fragment

 各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.

ページトップに戻る