Servlet 2.5における変更点

一般にServlet 2.5と呼ばれているものは、「JSR 154: Java Servlet 2.4 Specification」のメンテナンス仕様のことを指す。2004年2月に最初のドラフトが公開され、2006年5月に正式版がリリースされた。

Servlet 2.5では、2.4に対して主に次のような変更が加えられている。

  • J2SE 5.0が必須となった
  • アノテーションがサポートされ、それによるリソース・インジェクションが可能になった
  • web.xmlの構文が変更された
  • フィルタマッピングの設定において複数のサーブレット名を指定できるようになり、ワイルドカードも利用可能になった

フィルタマッピングの設定において複数のURLパターンを指定できるようになった

サーブレットマッピングの設定において複数のURLパターンを指定できるようになった

http-methodにHTTP/1.1の全てのメソッド名を使用できるようになった

  • エラーハンドリングに関する制限が緩和された

ここでは、これらの機能を利用するいくつかのプログラムをApache Tomcat 6.0.10によって動作させてみる。

アノテーションによるリソース・インジェクション

まずはServlet 2.5における最も大きな変更である、アノテーションを使ったリソース・インジェクションを試してみる。今回はデータベースに接続するためのDataSourceをアノテーションを使ってインジェクションする例を紹介する。

最初に、前準備としてサーブレットから利用するデータベースを用意する。本稿ではApache DBプロジェクトよりリリースされているオープンソースのデータベースエンジン「Apache Derby」を使用した。

まず任意の場所(以下、$DERBY_HOMEと記載する)にApache Derbyをインストールし、$DERBY_HOME/libディレクトリにあるderbyclient.jar、derbynet.jar、derbytools.jarの3つのJARファイルを$CATALINA_HOME/libディレクトリにコピーする。そして$DERBY_HOME/binにあるstartNetworkServer.bat(Windows環境)またはstartNetworkServer(UNIX環境)を使用してApache Derbyをネットワークモードで起動する。Apache Derbyはデフォルトでは1527番ポートで接続を待機する。

続いて、適当なツールを使用してサーブレットからアクセスするデータベースおよびテーブルをApache Derby上に作成する。ここでは「sampledb」という名前のデータベースを作成し、表1のようなテーブル「ITEM」を用意した。

表1 テーブル'ITEM'

ID 1 2 3
NAME apple orange blueberry

なお、Java EE 5の実装としてオープンソースのアプリケーションサーバであるGlassfishがインストールされている場合は、そこに「Java DB」としてApache Derbyも付属している(ただし、バージョンは若干古い)。NetBeansにはJava DBを起動/停止したり、テーブルを操作する機能を持っているため、これを利用すると便利である。