感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

サーブレットの基礎。オブジェクトのスコープについて(リクエストスコープ/セッションスコープ/アプリケーションスコープ)

<スポンサーリンク>

オブジェクトのスコープ

複数のサーブレットJSPを連携する際に考慮すべきは、「オブジェクトのスコープ」である。
サーブレットAPIには、3つのスコープが用意されている。

  • リクエストスコープ

リクエストスコープとは、リクエスト単位のスコープである。
複数のサーブレットJSPでデータを共有できる。
リクエストスコープの有効範囲は1つのリクエストが終わるまでの間で、リクエストをまたいでデータは保持されない。
リクエストスコープに対応するクラスは、HttpServletRequestとなる。

  • セッションスコープ

セッションスコープとは、セッション単位のスコープである。
セッションという言葉は、「クライアント単位の接続」という意味である。
1回目のリクエスト時に登録したデータを2回目のリクエスト時に利用できる。
セッションスコープのデータの有効範囲は、同じクライアントとなる。
異なるクライアントの間ではデータは共有されない。ECサイトのショッピングカートなど、複数の画面をまたいでデータが保持される必要があるときに使われる。
セッションスコープに対応するクラスは、HttpSessionとなる。

  • アプリケーションスコープ

アプリケーションスコープは、Webアプリケーション単位のスコープとなる。
Webアプリケーション内では、クライアントが異なっても、サーブレットが異なってもデータを共有できる。
アプリケーションスコープのデータの有効範囲は、同じWebアプリケーション全体となる。
合うリケーションスコープに対応するクラスは、ServletContextとなる。

コネクションプール

Webアプリではリクエストごとにコネクションを開いたり閉じたりする。
しかし、コネクションの取得や開放という処理はけっこう時間がかかる処理なので、コネクションプールという方法が使われる。
コネクションプールというのは、あらかじめコネクションを複数取得しておき、利用するときにプールの中からコネクションを割り当てるという処理を行う。
TomcatやJBossなどのアプリケーションサーバがプールにコネクションを保持しておいて、その保持しておいたコネクションをアプリケーションが取り出して使う。

データソース

コネクションプールなどの機能を提供する技術はデータソースと呼ばれる。
データソースは、javax.sql.DataSourceインターフェースとして標準化されている。
データソースの取得はnewしてインスタンスを取得するか、JNDI経由でルックアップする。

JNDI

JNDIとはJava Naming and Directory Serviceの略。
名前を指定してオブジェクトを登録したり取得したりすることができる。

Tomcatでデータソースを取得するサンプル

以下の記事を参照してください。
Tomcatでデータソースを使ってコネクションを取得。JDBC経由でDBに接続する方法。
http://d.hatena.ne.jp/sho322/20130904/1378289946

参考にした本

基礎からのサーブレット/JSP 第3版 (基礎からのシリーズ)

基礎からのサーブレット/JSP 第3版 (基礎からのシリーズ)