Tomcatって何ができるのですか?
Tomcatの特徴
Tomcatはサーブレット/JSPの解説では、必ずといっていいほど例に使われているサーブレットコンテナです。その最大の理由として、TomcatがSun公式のサーブレットコンテナの参照実装(Reference Implementation)であることと、無償で提供されていることがあげられるでしょう。特に参照実装であることは重要な意味を持ち、Tomcat が、Sunのサポートするサーブレット/JSPの仕様に100%準拠することを示します。
Tomcatは現在、サーブレットコンテナのデファクトスタンダートといっていい地位を確立しています。機能はシンプルですが、オープンソース開発による高い性能と信頼性は、TomcatがJ2EEアプリケーションサーバJBossのアプリケーションコンテナとして採用されていることからも伺えます。
Tomcatの誕生
サーブレット技術が登場した当初、SunはJava Web Serverというサーブレットコンテナ(当時はサーブレットエンジンと呼ばれていました)をリリースしていました。このサーブレットコンテナは、サーブ レット技術を世に知らしめる働きはしましたが、堅牢性に問題をかかえていました。同時期にApache Software Foundation(ASF)の開発グループはApacheと連携するサーブレットコンテナとしてJServをリリースしています。
その後、1999年6月にサンフランシスコで開催されたJavaOneにおいて、Sunが自社のサーブレットコンテナのコードを含むJSWDK(Java Server Web Development Kit)をASFに寄贈したことで、Jakarta Projectが誕生します。このJakarta Projectのサブプロジェクトとして、2つのコンテナが統合されTomcatが生まれることになりました。
http://www.apache.org/
Jakarta Project
http://jakarta.apache.org/
Tomcatの機能
Tomcatは以下のような機能を備えています。
サーブレットコンテナ機能
TomcatはServlet APIとJSP APIを実装しています。これによりサーブレット/JSPを動作させたりセッション管理を行ったりすることができます。Tomcatのバージョンによって対応するサーブレット/JSPのバージョンも異なります(表1)。
Apache Tomcat version | Servlet API | JSP API |
6.0.13 | 2.5 | 2.1 |
5.5.23 | 2.4 | 2 |
4.1.36 | 2.3 | 1.2 |
3.3.2 | 2.2 | 1.1 |
Webサーバ機能
Tomcat開発者であるJames Duncan Davidsonによれば、「Tomcat」という名前には自立して生きる動物という意味も込められているそうです。その名に違わずTomcatはWeb サーバ機能も併せ持ったスタンドアロンコンテナとなっています。
サーブレット/JSPのみを使うWebアプリケーションであればTomcat(と場合によってはデータベース)を用意するだけで構築可能です。とはいえTomcatの本来の目的はサーブレット/JSPの仕様を完全に満たすことにあり、Webサーバ機能は主に開発とデバッグ用に用意されたものです。
バージョンアップとともにTomcatのWebサーバ機能も強化されていますが、C言語で書かれてプラットフォーム依存の利点も活用したWebサー バとしての歴史も長いApacheと比べて、100%JavaのアプリケーションであるTomcatが同等の性能を実現できるかどうかは疑問視されています。
他のWebサーバとの連携機能
TomcatはオープンソースのApacheをはじめ、Windows Serverに組み込まれているIIS(Internet Information Service)などのWebサーバとも連携させることができます。すなわちHTMLや画像などの静的コンテンツはより高速なWebサーバが処理し、動的 コンテンツのみTomcatに処理させることが可能です。また管理ツールの使用など、Webサーバとして便利な機能が利用できます。実際の運用においてはこの形態で使うことがほとんどでしょう。Apacheとの連携については本連載の後半で詳説します。