検索
連載

図で分かるサーブレットのライフサイクルとスレッド初心者のためのサーブレット/JSP入門(5)(3/3 ページ)

初めてJavaのWebアプリを作ってみたいという人に向けて、サーブレットのライフサイクルとスレッドについて解説する。

Share
Tweet
LINE
Hatena
前のページへ |       

サーブレットのライフサイクルを見る

Navigator

「サーブレットが生成されてから破棄されるまでのライフサイクルを確認するために、先ほどのサーブレットにinit()とdestroy()という2つのメソッドを加えたものを用意しました」


init()メソッド

 サーブレットがインスタンス化されたときに、JSP/サーブレットコンテナーによって1回だけ呼び出されるメソッドで、何らかの初期化処理を行う際に使用します。サーブレット関連のすべてのスーパーインターフェイスであるServletに用意されていて、オーバーライドは次のように行います。

init()メソッドのオーバーライド

destroy()

 サーブレットが停止する直前にJSP/サーブレットコンテナーによって呼び出されます。サーブレットが停止するということは、サーブレットのインスタンスが破棄されることを意味します。何らかのリソースを利用していて、最後に解放するなどの処理に使用します。インスタンスの破棄は、サーブレットのソースコードを変更したことによる再デプロイ時やアプリケーションサーバーが停止する際に行われます。

destroy()メソッドのオーバーライド
Navigator

「次のサーブレットでは、init()メソッドでフィールドの初期化を行います」


サーブレットのライフサイクルを確認する(CounterServlet02.java)

コンソールウィンドウでサーブレットの生成から破棄までを確認する

Navigator

「NetBeansの[ウィンドウ]メニューの[出力]を選択すると、ログを出力するウィンドウグループが表示されますので、[Glass Fish Server]タブを表示しておきましょう。では、サーブレットを実行してみてください」


[Glass Fish Server]タブに表示されたログ
Navigator

「init()が呼ばれたのは最初の1回だけですが、その後、サーブレットをリクエストするたびにdoGet()が呼ばれていることがわかるかと思います。で、Glass Fishを停止する直前にdestroy()が呼ばれました。この流れを図にすると次のようになります」


サーブレットのライフサイクル
Navigator

「スレッドにおいて呼び出されるservice()は、doGet()やdoPost()などのdoXxxx系のメソッドに処理を振り分けるメソッドです。実は、doXxxx系のメソッドは、このメソッドが呼び出していたのです。で、リクエストがあると、service()→doXxxx()の順でメソッドが実行されます。スレッド内部では、この2つのメソッドが実行されることで、リクエストに対するレスポンスを返すのです」


書籍紹介

Javaサーバサイドプログラミング パーフェクトマスター

Javaサーバサイドプログラミング パーフェクトマスター

金城俊哉著
秀和システム 3,780円

Javaははじめてですか? でも、しり込みしなくたっていいんです。いきなりサーバサイドからはじめましょう!

本書は、Webエンジニアを目指す人のために対話形式でJava

EEを基礎からストア構築まで動かしながら学べる解説書です。Javaサーブレットを学び、Java

EEを極めていく一方、初心者のためにコラム形式でJavaの基本も説明します。実行環境の構築、ロジックの作成、データベース連携まで動かしながら覚えられます!

注文ページへ


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る