org.codecluster.session
クラス C2Session

java.lang.Object
  上位を拡張 org.codecluster.session.C2Session

public class C2Session
extends java.lang.Object

HttpSession 内に格納される仮想的なセッション情報(vsession)を操作するためのクラスです。

C2SessionManager によりインスタンス化されることを想定されて設計されており、 コンストラクタにより HttpSession と関連づけられます。

仮想セッションは HttpSession(jsessionid) + リクエストパラメータ(デフォルトでは vsid) で識別され、 同一 HttpSession 内で複数のセッションを管理することを目的としています。

このクラス自体が HttpSession に格納されるわけでなく、HttpSession 上のオブジェクトを操作するための、 ツール群であることに注意してください。

仮想セッションの有効期限を設定することができますが、有効期限については既存セッションを取得するコンストラクタと、 メソッド isExpires() によってのみチェックされます。
setAttribute(), getAttribute() などの仮想セッション情報操作中には有効期限チェックが行われないことに注意してください。

有効期限の初期値はプロパティ XML ファイル中に記述されたプロパティ "c2session-timeout" で指定した時間(単位分)となり、 "-1" を指定すると無期限となります。


フィールドの概要
protected  java.lang.String attributePrefix
          この仮想セッションが格納されている HttpSession キーの prefix
protected static java.lang.String KEY_CREATION_TIME
          この仮想セッションが作られた日時を格納するためのキー。
protected static java.lang.String KEY_EXPIRES_TIME
          この仮想セッションの有効日時を格納するためのキー。
protected static java.lang.String KEY_LASTACCESSED_TIME
          この仮想セッションの最終取得日時を格納するためのキー。
protected  javax.servlet.http.HttpSession session
          この仮想セッションが格納されている HttpSession
protected  java.lang.String sessionId
          この仮想セッションのセッションID
protected  java.lang.String sessionKey
          この仮想セッションのセッションIDを受け取ったリクエストパラメータ名
 
コンストラクタの概要
C2Session(javax.servlet.http.HttpSession session, java.lang.String key, java.lang.String id, boolean create)
          仮想セッションを作成します。
 
メソッドの概要
 java.lang.Object getAttribute(java.lang.String key)
          この仮想セッションから指定した名前のオブジェクトを取り出します。
 java.util.Iterator<java.lang.String> getAttributeNames()
          この仮想セッション内のオブジェクトの名前(キー)の Iterator を返します。
protected  java.util.Iterator<java.lang.String> getAttributeRealNames()
          この仮想セッション内のオブジェクトの HttpSession 中に格納されている実際のキーの Iterator を返します。
 long getCreationTime()
          この仮想セッションが作成された時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
 long getExpiresTime()
          この仮想セッションの有効期限を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
 javax.servlet.http.HttpSession getHttpSession()
          この仮想セッションが格納されている HttpSession を返します。
 java.lang.String getHttpSessionId()
          この仮想セッションが格納されている HttpSession のセッションIDを返します。
 java.lang.String getId()
          この仮想セッションのセッションIDを返します。
 java.lang.String getKey()
          この仮想セッションのセッションIDを受け取ったリクエストパラメータ名を返します。
 long getLastAccessedTime()
          この仮想セッションの最終取得時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
protected  java.lang.String getRealKey(java.lang.String virtualKey)
          この仮想セッションにオブジェクトを保存、取得するときの HttpSession キーを生成します。
 void invalidate()
          この仮想セッションを無効にします。
 boolean isExpires()
          この仮想セッションが有効期限に達しているかを検査します。
 void removeAllAttribute()
          この仮想セッションからすべてのオブジェクトを削除します。
 void removeAttribute(java.lang.String key)
          この仮想セッションから指定した名前のオブジェクトを削除します。
 void setAttribute(java.lang.String key, java.lang.Object value)
          この仮想セッションに指定した名前でオブジェクトを保存します。
protected  void setCreationTime()
          この仮想セッションが作成された時刻を、現在時刻で設定します。
protected  void setCreationTime(long creation)
          この仮想セッションが作成された時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で設定します。
 void setExpiresTime(long exp)
          この仮想セッションの有効期限を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で設定します。
protected  void setLastAccessedTime()
          この仮想セッションの最終取得時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で設定します。
 void setMaxAge(long sec)
          この仮想セッションの有効期限を、セッション作成時刻からの経過秒数で設定します。
 java.lang.String toString()
          この仮想セッション内の全てのオブジェクトを toString() によって文字列化して返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

KEY_CREATION_TIME

protected static final java.lang.String KEY_CREATION_TIME
この仮想セッションが作られた日時を格納するためのキー。規定値("$CreationTime$")

関連項目:
定数フィールド値

KEY_EXPIRES_TIME

protected static final java.lang.String KEY_EXPIRES_TIME
この仮想セッションの有効日時を格納するためのキー。規定値("$ExpiresTime$")

関連項目:
定数フィールド値

KEY_LASTACCESSED_TIME

protected static final java.lang.String KEY_LASTACCESSED_TIME
この仮想セッションの最終取得日時を格納するためのキー。規定値("$LastAccessedTime$")

関連項目:
定数フィールド値

session

protected javax.servlet.http.HttpSession session
この仮想セッションが格納されている HttpSession


attributePrefix

protected java.lang.String attributePrefix
この仮想セッションが格納されている HttpSession キーの prefix


sessionKey

protected java.lang.String sessionKey
この仮想セッションのセッションIDを受け取ったリクエストパラメータ名


sessionId

protected java.lang.String sessionId
この仮想セッションのセッションID

コンストラクタの詳細

C2Session

public C2Session(javax.servlet.http.HttpSession session,
                 java.lang.String key,
                 java.lang.String id,
                 boolean create)
          throws NoSessionException,
                 ExpiresSessionException
仮想セッションを作成します。
指定された仮想セッションIDの仮想セッションが存在せず、create が true の場合は、 新しい仮想セッションを作成して関連付け、false の場合は、NoSessionException をスローします。
仮想セッションの有効期限の初期値はプロパティ XML ファイル中に記述されたプロパティ "c2session-timeout" で指定した時間(単位分)となり、 "-1" を指定すると無期限となります。正しい数値を指定していない場合には無期限とします。

仮想セッションが存在する場合には、新規作成せずに既存仮想セッションを関連付けます。
既存仮想セッションの有効期限が切れていた場合は、例外 ExpiresSessionException をスローします。

パラメータ:
session - 関連付ける HttpSession
key - 仮想セッションIDのリクエストパラメータ名
id - 仮想セッションID
create - 指定された仮想セッションがないときに新規セッションを作成する場合は true。例外を返す場合は false
例外:
NoSessionException - 既存セッションが存在しない場合にスローされます。
ExpiresSessionException - 既存セッションが有効期限切れの場合にスローされます。
java.lang.IllegalArgumentException - パラメータが無効な場合にスローされます。
メソッドの詳細

getHttpSession

public javax.servlet.http.HttpSession getHttpSession()
この仮想セッションが格納されている HttpSession を返します。

戻り値:
格納されている HttpSession

getHttpSessionId

public java.lang.String getHttpSessionId()
この仮想セッションが格納されている HttpSession のセッションIDを返します。
getHttpSession().getId() と等価です。

戻り値:
この仮想セッションが格納されている HttpSession のセッションID

getKey

public java.lang.String getKey()
この仮想セッションのセッションIDを受け取ったリクエストパラメータ名を返します。

戻り値:
この仮想セッションのセッションIDを受け取ったリクエストパラメータ名

getId

public java.lang.String getId()
この仮想セッションのセッションIDを返します。

戻り値:
この仮想セッションの仮想セッションID

setAttribute

public void setAttribute(java.lang.String key,
                         java.lang.Object value)
この仮想セッションに指定した名前でオブジェクトを保存します。オブジェクトはシリアライズ可能でなくてはなりません。

パラメータ:
key - オブジェクトの名前を指定する文字列
value - 保存されるオブジェクト
例外:
java.lang.IllegalArgumentException - key が null か、value がシリアライズ可能オブジェクトでない場合にスローされます。
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

getAttribute

public java.lang.Object getAttribute(java.lang.String key)
この仮想セッションから指定した名前のオブジェクトを取り出します。オブジェクトがない場合には null を返します。

パラメータ:
key - オブジェクトの名前を指定する文字列
戻り値:
指定された名前のオブジェクト
例外:
java.lang.IllegalArgumentException - key が null の場合にスローされます。
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

getAttributeNames

public java.util.Iterator<java.lang.String> getAttributeNames()
この仮想セッション内のオブジェクトの名前(キー)の Iterator を返します。

戻り値:
この仮想セッション内のオブジェクトの名前(キー)の Iterator
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

getAttributeRealNames

protected java.util.Iterator<java.lang.String> getAttributeRealNames()
この仮想セッション内のオブジェクトの HttpSession 中に格納されている実際のキーの Iterator を返します。

戻り値:
キーの Iterator
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

removeAttribute

public void removeAttribute(java.lang.String key)
この仮想セッションから指定した名前のオブジェクトを削除します。

パラメータ:
key - オブジェクトの名前を指定する文字列
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

removeAllAttribute

public void removeAllAttribute()
この仮想セッションからすべてのオブジェクトを削除します。

例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

invalidate

public void invalidate()
この仮想セッションを無効にします。

例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

getCreationTime

public long getCreationTime()
この仮想セッションが作成された時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。

戻り値:
GMT 1970年 1 月 1 日 からのミリ秒単位で表した、このセッションが作成された時刻を示す long
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

setCreationTime

protected void setCreationTime(long creation)
この仮想セッションが作成された時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で設定します。

パラメータ:
creation - GMT 1970年 1 月 1 日 からのミリ秒単位で表した、このセッションが作成された時刻を示す long
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

setCreationTime

protected void setCreationTime()
この仮想セッションが作成された時刻を、現在時刻で設定します。

例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

getExpiresTime

public long getExpiresTime()
この仮想セッションの有効期限を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。

有効期限が設定されていない場合は -1 を返します。

戻り値:
GMT 1970年 1 月 1 日 からのミリ秒単位で表した、このセッションの有効期限を示す long
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

setExpiresTime

public void setExpiresTime(long exp)
この仮想セッションの有効期限を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で設定します。
有効期限を設定しない場合は -1 を設定します。

有効期限はコンストラクタ C2Session() か、isExpires() でのみ検査されます。
setAttribute(), getAttribute() などのでは検査されません。

パラメータ:
exp - GMT 1970年 1 月 1 日 からのミリ秒単位で表した、このセッションの有効期限を示す long
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

setMaxAge

public void setMaxAge(long sec)
この仮想セッションの有効期限を、セッション作成時刻からの経過秒数で設定します。
有効期限はコンストラクタ C2Session() か、isExpires() でのみ検査されます。
setAttribute(), getAttribute() などのでは検査されません。

パラメータ:
sec - このセッションが作成された時刻からの秒数を示す long
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

isExpires

public boolean isExpires()
この仮想セッションが有効期限に達しているかを検査します。

戻り値:
有効期限切れの場合 true を返す
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

setLastAccessedTime

protected void setLastAccessedTime()
この仮想セッションの最終取得時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で設定します。
現在の実装では HTTPリクエスト毎にコンストラクタする想定で、コンストラクタでのみ情報が更新されます。


getLastAccessedTime

public long getLastAccessedTime()
この仮想セッションの最終取得時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
現在の実装では HTTPリクエスト毎にコンストラクタする想定で、コンストラクタでのみ情報が更新されます。

戻り値:
GMT 1970年 1 月 1 日 からのミリ秒単位で表した、このセッションの最終取得時刻を示す long
例外:
java.lang.IllegalStateException - セッションが無効である場合にスローされます。

getRealKey

protected java.lang.String getRealKey(java.lang.String virtualKey)
この仮想セッションにオブジェクトを保存、取得するときの HttpSession キーを生成します。

パラメータ:
virtualKey - オブジェクトの名前を指定する文字列
戻り値:
HttpSession 内でのオブジェクトを示す文字列

toString

public java.lang.String toString()
この仮想セッション内の全てのオブジェクトを toString() によって文字列化して返します。

オーバーライド:
クラス java.lang.Object 内の toString
戻り値:
仮想セッション内の全てのオブジェクトのテキスト文字列