Ⅱ-13-2. Javaを用いたWebサーバの実装

Java言語により処理を行うWebサーバ、Webアプリケーションの実装方法について説明する。代表的なアーキテクチャであるServletを紹介し、構築ツールやプラットフォーム、構築上のポイントなど具体的なシステム設計手法について述べる。またデータベースの処理や構築についても触れる。

【学習の要点】

* Java言語を用いてHTTPリクエストを処理するサーバを実装する手段として、Servletを利用することができる。

* Java言語を用いたWebアプリケーションにおいて、Servletは単に動的なHTMLを生成するだけでなく、JSPやEJBコンテナに処理を振り分ける、MVC (Ⅱ-13-3参照)におけるコントローラの役割を担うことが多い。

* Java言語を用いてデータベース接続を行うAPIとしてJDBC (Java Database Connectivity)を利用することができる。

図II-13-2. Servletのソースコード例
【解説】

1) Servletとは

Servletとは、Java言語を用いてWebサーバの機能を拡張し、動的なWebページの生成を可能にするプログラム、および仕様であり、Java EE仕様の一部となっている。Servlet登場以前は、動的なWebページの生成は主にCGIによって実現されていた。CGIがリクエスト毎に新たなプロセスを起動するのに対し、Servletは単一のプロセス内で複数リクエストの処理を行うために、リクエストあたりの負担が少ない、というメリットがある。

2) Servletのプラットフォーム

Servlet、およびJSPの実行環境を提供するサーバソフトウェアをサーブレットコンテナとよび、OSSのサーブレットコンテナとしてTomcatなどが公開されている。

3) Servletの機能

* ServletはGET、POSTといったHTTPのメソッドに対応したJavaメソッドを実装することで、任意のHTTPリクエストを処理することができる。Servletで行う処理としては、HTMLを組み立てることで動的なページを生成するほか、サーバ内のファイルシステムへのアクセスや、データベースに対する検索、保存など、Java言語を用いた任意の処理を行うことが可能である。

* Servletは、異なるページの間での同一クライアントの認識や、クライアント毎の情報管理を行うためのSession管理機能を提供し、Cookie単体では難しい高度なユーザ情報管理を容易に実現できる。

4) Servletの役割

* Webアプリケーションの全ての機能をServletにより実装することも可能であるが、デザインとロジックが分離されないなど、保守性に問題が生じる可能性がある。そのため、今日のWebアプリケーションでは、ServletはMVCアーキテクチャにおけるControllerの役割を担い、ViewはJSP、ModelはJavaBeans、といったように、より適した技術を併用することが多い。

* 多くのWebアプリケーションフレームワークでは、MVCアーキテクチャのControllerとしてのServletの実装はフレームワークから提供され、開発者はXMLなどの設定ファイルに制御情報を記述する場合が多い。このようなフレームワークの例としてはApache StrutsやJavaServer Facesが挙げられる。

5) データベース接続

Java EE環境では、データベース接続方法として、JNDI を利用してDataSourceオブジェクトを取得し、DataSourceオブジェクトからデータベース接続オブジェクトを取得する方法が推奨されている。JNDI (Java Naming and Directory Interface)を用いることで接続情報が一元化され、Webアプリケーションの保守性が向上する。また、DataSourceを利用することで、コンテナの提供するコネクションプーリング機能などを利用することが可能になる。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン