Web Server
- クライアントからサーバーにページのリクエストを投げるとリクエストを受け取って静的コンテンツ(.html、.png、.cssなど)を提供するサーバーのこと
- クライアントからのリクエストがあったら一番先端でリクエストの処理を行う。
※プロセス
リクエストを分析します。
- 静的コンテンツの場合、私が提供できるよ!!=> .html、.pngなどのレスポンスを返す。
- 静的コンテンツではない場合、私が処理できないね。。WASに処理をお願いするね!!
=> WASが処理を行ったコンテンツを受け取り、レスポンスを返す。
※代表的に
Apache、nginxがあります。
WAS(Web Application Server)
- 動的コンテンツを提供するために利用されるアプリケーションサーバー(DB照会、ロジック処理が必要なコンテンツ)
- JSP、Servletを実行できる環境を提供
- コンテナ、ウェブコンテナ、サーブレットコンテナとも呼ばれる。
- JSP、Servletを実行できるソフトウェア = コンテナ
※プロセス
- Web Serverからリクエストがある場合、コンテナが受け取って処理を行う。
- コンテナはweb.xmlを参照して該当サーブレットのスレッドを生成します。それからhttpServletRequestと httpServletResponseのオブジェクトを生成して渡します。
- コンテナはサーブレッドを呼び出します。
- 呼び出されたサーブレッドの作業を担当することになったスレッド(2番で生成されたスレッド)はdoPost()またはdoGet()を呼び出します。
- 呼び出されたdoPost(), doGet()メソッドは生成された動的ページをレスポンスに入れてコンテナに渡します。
- コンテナは渡されたレスポンスをHTTPResponse形に変えてWeb Serverに渡してから生成されたスレッドを終了させ、httpServletRequest, httpServletResponseのオブジェクトを消滅させます。
※代表的に
Tomcat, Jeus, JBossがあります。
Web ServerとWASの違い
- 動的コンテンツの処理が可能なのか
- WASは静的、動的コンテンツどちらも処理が可能ですが、静的コンテンツ処理までWASがすることになると負荷が多いので、良くないらしいです。
- Web Serverは動的コンテンツの処理ができない。
※Tomcat5.5以上からはhttpdのnativeモジュールを利用し、静的コンテンツの処理機能を提供していますが、これはapacheのHttpdだけを使うのと性能的に低くないらしいですね。
それでも分けられている利用を考えてみると、phpアプリケーションやJavaアプリケーションを一緒に使ったり、httpdサーバーを簡単なロードバランシングのために使わなけれなならないとき必要らしいですね。