|
||||||||||||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||||||||||||
| リスナでアプリケーションイベントを捕捉する | ||||||||||||||||||||||||||
|
リスナクラスを利用することで、アプリケーションやセッション、リクエストの開始/終了を捕捉し、そのタイミングでさまざまな共通処理を実行することが可能になります。 たとえば、アプリケーションリスナを介することで、アプリケーションの開始時に必要なリソースをメモリ(コンテキスト属性)上にロードし、アプリケーション内でのデータアクセスの負荷を軽減することができます。 メニュー情報のような、変更頻度は少ないのにアクセス頻度が多い情報は、アプリケーション開始時にコンテキスト属性としてセットすることで、画面生成の負荷を軽減することもできます。 また、リクエストリスナを利用すれば、リクエスト時のロギング処理を、個別のJSP&サーブレットに影響を与えることなく追加することもできるでしょう。このように、リスナ・クラスを利用することで、アプリケーション内でイベントが発生するタイミングで、さまざまなサービスを提供することができるというわけです。 JSP 2.0&サーブレット2.4で利用可能なリスナは表3のとおりです。目的に応じて、必要なインターフェースを実装(implements)したリスナクラスを定義する必要があります。必要なメソッドをオーバライドして、イベント発生時に行うべき処理を記述してください。リスト3には、最も単純なリクエスト時にログ情報をTomcat標準のログに出力する例を示します。 リスト3:LoggingListener.java(抜粋)
リスト4:web.xml(抜粋)
なお、リスナクラスは、必ずweb.xmlに登録しておく必要があります(リスト4)。 といっても、<listener>要素配下の<listener-class>要素にリスナクラスの完全修飾名を定義するだけです。これで、アプリケーション配下のリソースにリクエストがあるたびに、コンテナの標準ログにロギング情報が記録されるようになります(図1)。 複数のリスナクラスを定義したい場合は、<listener>要素を複数個列記します。ただし、1つの<listener>要素配下に複数の<listener-class>要素を記述することはできませんので注意してください。 以上駆け足でしたが、本連載では、JSP&サーブレットの主要な機能について紹介してきました。誌面の都合上、本連載ではサーブレットやJavaBeans、あるいはデプロイメントディスクリプタによるJSPコンフィギュレーションやユーザ認証などについては割愛しています。書籍では本連載では扱えなかった諸テーマについても扱っていますので、興味のある方はあわせて参照してみることをお勧めします。 |
||||||||||||||||||||||||||
|
前のページ 1 2 |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||



