SCWCD
Contents
Javaサーブレットの概要
サーブレットとは
サーバーの2つの責任
- ネットワーク接続の処理…ソケットレベルのプログラム、FTPやHTTPといったクライアント/サーバープロトコルの実装
- レスポンスの生成…サービスごとに異なるレスポンスの生成が必要。動的なものも有り。
動的なレスポンスを返すサーバーの場合、次のような設計が適している
- ネットワークの処理とアプリケーションロジックを提供するコードの2つに分ける。
- 2つの実行可能ファイルに共通のインターフェースを持たせる。
このようにすることで、インターフェースの規則を守っている限り、
ネットワークモジュールに影響を与えず、アプリケーションロジックを変更できる。
これまで、このような設計のHTTPサーバはCGI(Common Gataway Interface)を使って実装されていた。
- 新しいリクエストが発行される度に新しいプロセスが生成され、破棄される。
- サーバーとの通信手段としてI/Oを使用するため、レスポンスの所要時間がかかる。
サーバー拡張
- サーバーがメモリにロードしてサーバ起動時に一度だけ初期化できる別の実行可能モジュールをサポートすること。
- このような独立した実行可能モジュールをサーバー拡張という。
- Javaのサーバー拡張はServlet APIで書かれており、サーバー拡張モジュールをServletという。
サーブレットコンテナとは
サーブレットコンテナ(サーブレットエンジン)
サーブレットコンテナの概略
- HTMLドキュメントはファイルシステムに格納される
- サーブレットはサーブレットコンテナ内で実行される
- ビジネスデータはDBの中にある
リクエストの対象が
- HTMLドキュメントの場合→サーバーはリクエストを直接処理
- サーブレットの場合→サーバーはリクエストをサーブレットコンテナへ委譲。サーブレットコンテナによってサーブレットへ転送される。
サーブレットは、ファイルシステムとDBを利用して、動的な出力を生成する。
サーブレットコンテナの概要
サーブレットコンテナは3つに分けられる。
- スタンドアロン
メインWebサーバとサーブレットコンテナからなるJavaベースのWebサーバ
単体で稼動するTomcat
静的コンテンツ用のハンドラ(デフォルトハンドラ)と、サーブレットハンドラ、JSPハンドラが含まれる。
- インプロセス
コンテナはメインのWebサーバのアドレス空間でプラグインとして実行される
Apache内で実行されるTomcat
Apacheはデフォルトハンドラで静的コンテンツを処理
Tomcatはサーブレットハンドラ、JSPハンドラでサーブレットとJSPを処理。
- アウトオブプロセス
Webサーバとサーブレットコンテナが別々のプロセスで実行される。
Webサーバはプラグインを使ってサーブレットコンテナとやり取りする。
Apacheからリクエストを受信するように構成されたTomcat
(Apacheはプラグインmod_jkをロードする)
サーブレットの開発と実行
サーブレットコンテナとServlet APIの関係
Servlet API
サーブレットとそのコンテナがやり取りするためのプラットフォームに依存しない標準的なフレームワーク
フレームワーク=Javaのインターフェース + クラス →Servlet API
Servlet APIはjavax.servletとjavax.servlet.httpの2つのパッケージに分かれる。
- javax.servletパッケージ
どのプロトコルにも依存しない、サーブレットの汎用的なインターフェースとクラスが含まれる。
- javax.servlet.Servletインターフェース
どのサーブレットクラスも、直接的・間接的にこのインターフェースを実装しなければいけない。
下記に示す5つのメソッドが定義されている
メソッド | 説明 |
init() | サーブレットコンテナはサーブレットに対して、このメソッドを呼び出し、初期化を行って、サービスを提供する準備をおこなうことを支持する。引数としてServletConfig?型のオブジェクトを渡す。 |
service() | サーブレットがリクエストに応答できるように、クライアントからリクエストを受ける度にサーブレットコンテナによって呼び出される。 |
destoroy() | サーブレットコンテナはサーブレットに対してこのメソッドを呼び出し、後処理を行い、確保していた全てのリソースを開放して、サービスを終了する準備を行うことを指示する。 |
getServletConfig?() | 初期化パラメータなど、サーブレットに関する情報を返す。 |
getServletInfo?() | このインターフェイスを実装するクラスは、サーブレットの開発者、バージョン、著作権情報など、サーブレット関連の情報を返さなければならない。 |
- javax.servlet.httpパッケージ
HTTPベースのサーブレットに必要となる基本的な機能を提供する。このパッケージに含まれているインターフェイスとクラスはHTTPプロトコルをサポートするためにjavax.servletパッケージの該当するインターフェイスとクラスを拡張したものである。
- javax.servlet.http.HttpServlet?クラス
JSPの概要
WebアプリケーションとHTTPの基礎
最新の20件
2012-02-17
2006-09-22
2004-09-19
2004-09-11
2004-09-09
2004-09-08
2004-09-07
2004-09-06
2004-08-31
2004-08-27
2004-08-26
2004-08-24
2004-08-20
2004-08-19