サーブレットのライフサイクルを見る
「サーブレットが生成されてから破棄されるまでのライフサイクルを確認するために、先ほどのサーブレットにinit()とdestroy()という2つのメソッドを加えたものを用意しました」
●init()メソッド
サーブレットがインスタンス化されたときに、JSP/サーブレットコンテナーによって1回だけ呼び出されるメソッドで、何らかの初期化処理を行う際に使用します。サーブレット関連のすべてのスーパーインターフェイスであるServletに用意されていて、オーバーライドは次のように行います。
●destroy()
サーブレットが停止する直前にJSP/サーブレットコンテナーによって呼び出されます。サーブレットが停止するということは、サーブレットのインスタンスが破棄されることを意味します。何らかのリソースを利用していて、最後に解放するなどの処理に使用します。インスタンスの破棄は、サーブレットのソースコードを変更したことによる再デプロイ時やアプリケーションサーバーが停止する際に行われます。
「次のサーブレットでは、init()メソッドでフィールドの初期化を行います」
コンソールウィンドウでサーブレットの生成から破棄までを確認する
「NetBeansの[ウィンドウ]メニューの[出力]を選択すると、ログを出力するウィンドウグループが表示されますので、[Glass Fish Server]タブを表示しておきましょう。では、サーブレットを実行してみてください」
「init()が呼ばれたのは最初の1回だけですが、その後、サーブレットをリクエストするたびにdoGet()が呼ばれていることがわかるかと思います。で、Glass Fishを停止する直前にdestroy()が呼ばれました。この流れを図にすると次のようになります」
「スレッドにおいて呼び出されるservice()は、doGet()やdoPost()などのdoXxxx系のメソッドに処理を振り分けるメソッドです。実は、doXxxx系のメソッドは、このメソッドが呼び出していたのです。で、リクエストがあると、service()→doXxxx()の順でメソッドが実行されます。スレッド内部では、この2つのメソッドが実行されることで、リクエストに対するレスポンスを返すのです」
Javaサーバサイドプログラミング パーフェクトマスター
金城俊哉著
秀和システム 3,780円
Javaははじめてですか? でも、しり込みしなくたっていいんです。いきなりサーバサイドからはじめましょう!
本書は、Webエンジニアを目指す人のために対話形式でJava
EEを基礎からストア構築まで動かしながら学べる解説書です。Javaサーブレットを学び、Java
EEを極めていく一方、初心者のためにコラム形式でJavaの基本も説明します。実行環境の構築、ロジックの作成、データベース連携まで動かしながら覚えられます!
Copyright © ITmedia, Inc. All Rights Reserved.