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を起動/停止したり、テーブルを操作する機能を持っているため、これを利用すると便利である。