- - PR -
サーブレットライフサイクルに関して
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-26 17:42
お世話になります。
サーブレット実行時の初期化に関して質問があります。 サーブレットで初期化処理で init()で行なうとコンストラクタで行なうでは init()で行なうのが正しいとサンの試験の例題回答にありましたが http://suned.sun.co.jp/JPN/certification/compsqwa.html 明確な理由が良く分かりませんでした。 init()は初期化メソッドなのでそちらの方が好ましいのは 分かるのですが、コンストラクタで初期化処理を行なってはいけない 具体的な理由があるのでしょうか? | ||||
|
投稿日時: 2006-06-26 18:29
サーブレットの初期化には、通常初期化のパラメータを使用しますが、
初期化のパラメータはServletConfigによって参照できます。 ServletConfigはinit(ServletConfig)メソッドで初めて設定され、 その後initメソッドが実行されます。 この辺はjavax.servlet.GenericServletのソースを読むとわかると思います。 厳密にはインスタンスが生成されたタイミング=初期化可能ではありません。 コンテナがサーブレットのインスタンスを生成するのは、 コンテナの準備の段階で生成するものですが、 初期化は準備か完了してから行われるものです。 この手のコンテナ管理系のフレームワークでは 通常コンストラクタを書かないことが推奨されているものも多いです。 | ||||
|
投稿日時: 2006-06-26 20:48
サーブレット、はほとんどの場合、サーバとして動作します。 「サーバ」ということは「起動時」と「クラスインスタンス時」 が異なる可能性があります。 先にクラスを割り付けておけば、クラスをアクセス時に割り付けない分、 早いのは当然です。 |
1