SCWCD / Webコンポーネントの基礎


SCWCD

Contents

Javaサーブレットの概要

サーブレットとは

サーバーの2つの責任

  1. ネットワーク接続の処理…ソケットレベルのプログラム、FTPやHTTPといったクライアント/サーバープロトコルの実装
  2. レスポンスの生成…サービスごとに異なるレスポンスの生成が必要。動的なものも有り。
 

動的なレスポンスを返すサーバーの場合、次のような設計が適している

  • ネットワークの処理とアプリケーションロジックを提供するコードの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
  • SCWCD/Webコンポーネントの基礎
2004-08-24 2004-08-20 2004-08-19