連載
» 2011年04月12日 00時00分 公開

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

[藤野圭一,NTT OSSセンタ]

Tomcat 7安定版がリリース!

 去る2011年1月に「Tomcat 7」が安定版としてリリースされました。ご存じの方が多いかと思いますが、Tomcatは、Apache Software FoundatonのApache Tomcatプロジェクトで開発されているサーブレット/JSPコンテナです。

 Tomcatは長い歴史のあるオープンソースプロダクトで、10年以上の間、多くのバージョンアップが行われ、現在も開発が継続しています。

図1 Tomcatの歴史 図1 Tomcatの歴史

 Tomcat 6の機能について知りたい読者は、下記記事を参照してください。

“安全”のためにTomcatを理解し、構築し、動作させる
Tomcatはどこまで“安全”にできるのか?(1)
 そもそもTomcatとは何か、最新版で何が変わったのかを紹介し、環境構築や自動起動の仕方、Apacheとの連携も解説する
Java Solution」フォーラム 2007/10/11

 そんなTomcatが前回のメジャーバージョンであるTomcat 6から約4年ぶりにTomcat 7を安定版としてリリースしました。

Tomcat 6からTomcat 7への変更点

 Tomcat 7では、Tomcat 6に対して実装するサーブレット/JSP仕様のバージョンアップとTomcat独自のさまざまな機能の追加・改善を行っています。

 実装する仕様は、以下のバージョンにアップデートされました。

  • Servlet 2.5⇒Servlet 3.0
  • JSP 2.1⇒JSP 2.2
  • EL 2.1⇒EL 2.2

 本連載では3回の連載を通して、Tomcatの最新メジャーバージョンであるTomcat 7について説明します。第1回目と第2回目でServlet 3.0を紹介し、第3回目でTomcat独自の新機能を紹介する予定です。

Servlet 3.0における6つの主な変更点

 第1回目となる今回は、Tomcat 7が実装したServlet 3.0について説明します。Servlet 3.0とはJSR-315のことを指します。Tomcatは、このJSR-315仕様を実装しています。

 Servlet 3.0では、Servlet 2.5に対して主に、次のような仕様変更を導入しました。

  1. Ease of Development(EoD、開発容易性)
    Servlet開発を簡単に
  2. Pluggability and Extendibility(モジュール化と拡張性)
    Webアプリケーションのモジュール化と拡張性を推進
  3. Asynchronous Processing(非同期処理)
    Servletで非同期処理を実行可能に
  4. セキュリティ
    Servlet APIで認証メソッドを提供
  5. Session Tracking
    Sessionのコンフィグレーションを柔軟に
  6. マルチパート対応
    Servlet APIでファイルアップロードを提供

 今回と次回で、Servlet 3.0で導入された新仕様について、順に説明していきます。

アノテーションで開発が簡単に

 まずは、Servlet 3.0の主要なテーマの1つであるEoDです。

 Servlet 3.0では、EoDとして「Annotation based configuration」を新しく定義しました。アノテーションを利用することでServletの開発が簡単になります。

Servletを利用する場合は「@WebServlet」

 では、簡単なサンプルを使って紹介していきます。

 Servletを利用する場合、従来のTomcat 6.0.x、Servlet 2.5以前の場合では、まず以下のようにサーブレットを作成します。

public class WebServletTest extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.getWriter().print("HELLO!");
    }
}

 そして、作成したサーブレットをweb.xmlにマッピングします。

<servlet>
<servlet-name>WebServletTest</servlet-name>
<servlet-class>test.annotation.WebServletTest</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>WebServletTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>

 これにServlet 3.0で導入した「Annotation based configuration」を利用すると、「@WebServlet」というアノテーションを付加するだけでOKです。

@WebServlet(name="WebServletTest",urlPatterns={"/test"})
public class WebServletTest extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.getWriter().print("HELLO!");
    }
}

 次ページでは、さらにアノテーションを紹介します。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。