Package org.eclipse.jetty.server.session
Class Session
- java.lang.Object
-
- org.eclipse.jetty.server.session.Session
-
- All Implemented Interfaces:
javax.servlet.http.HttpSession,SessionHandler.SessionIf
public class Session extends java.lang.Object implements SessionHandler.SessionIf
Session A heavy-weight Session object representing an HttpSession. Session objects relating to a context are kept in aSessionCache. The purpose of the SessionCache is to keep the working set of Session objects in memory so that they may be accessed quickly, and facilitate the sharing of a Session object amongst multiple simultaneous requests referring to the same session id. TheSessionHandlercoordinates the lifecycle of Session objects with the help of the SessionCache.- See Also:
SessionHandler,SessionIdManager
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSession.IdStateclassSession.SessionInactivityTimerSessionInactivityTimer Each Session has a timer associated with it that fires whenever it has been idle (ie not accessed by a request) for a configurable amount of time, or the Session expires.static classSession.StateState Validity states of a session
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String_extendedIdprotected SessionHandler_handlerprotected boolean_idChangedprotected Locker_lockprotected boolean_newSessionprotected long_requestsprotected boolean_residentprotected SessionData_sessionDataprotected Session.SessionInactivityTimer_sessionInactivityTimerprotected Session.State_stateprotected java.util.concurrent.locks.Condition_stateChangeCompletedstatic java.lang.StringSESSION_CREATED_SECURE
-
Constructor Summary
Constructors Constructor Description Session(SessionHandler handler, javax.servlet.http.HttpServletRequest request, SessionData data)Create a new sessionSession(SessionHandler handler, SessionData data)Re-inflate an existing session from some eg persistent store.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected booleanaccess(long time)protected booleanbeginInvalidate()voidbindValue(java.lang.String name, java.lang.Object value)Bind value if value implementsHttpSessionBindingListener(callsHttpSessionBindingListener.valueBound(HttpSessionBindingEvent))longcalculateInactivityTimeout(long now)Calculate what the session timer setting should be based on: the time remaining before the session expires and any idle eviction time configured.protected voidcallSessionAttributeListeners(java.lang.String name, java.lang.Object newValue, java.lang.Object oldValue)Call binding and attribute listeners based on the new and old values of the attribute.protected voidcheckLocked()protected voidcheckValidForRead()Chech that the session data can be read.protected voidcheckValidForWrite()Check that the session can be modified.protected voidcomplete()protected voidcookieSet()voiddidActivate()Call the activation listeners.protected voiddoInvalidate()Deprecated.protected voidfinishInvalidate()Call HttpSessionAttributeListeners as part of invalidating a Session.java.lang.ObjectgetAttribute(java.lang.String name)java.util.Enumeration<java.lang.String>getAttributeNames()intgetAttributes()java.lang.StringgetContextPath()longgetCookieSetTime()longgetCreationTime()java.lang.StringgetExtendedId()java.lang.StringgetId()longgetLastAccessedTime()intgetMaxInactiveInterval()java.util.Set<java.lang.String>getNames()longgetRequests()Returns the current number of requests that are active in the Session.javax.servlet.ServletContextgetServletContext()SessiongetSession()javax.servlet.http.HttpSessionContextgetSessionContext()Deprecated.protected SessionDatagetSessionData()SessionHandlergetSessionHandler()java.lang.ObjectgetValue(java.lang.String name)Deprecated.java.lang.String[]getValueNames()Deprecated.As of Version 2.2, this method is replaced bygetAttributeNames()java.lang.StringgetVHost()voidinvalidate()Called by users to invalidate a session, or called by the access method as a request enters the session if the session has expired, or called by manager as a result of scavenger expiring sessionbooleanisChanging()protected booleanisExpiredAt(long time)Check to see if session has expired as at the time given.booleanisIdChanged()protected booleanisIdleLongerThan(int sec)Check if the Session has been idle longer than a number of seconds.booleanisInvalid()booleanisNew()booleanisResident()booleanisValid()Locker.Locklock()Grab the lock on the sessionvoidputValue(java.lang.String name, java.lang.Object value)Deprecated.voidremoveAttribute(java.lang.String name)voidremoveValue(java.lang.String name)Deprecated.voidrenewId(javax.servlet.http.HttpServletRequest request)Force a change to the id of a session.voidsetAttribute(java.lang.String name, java.lang.Object value)voidsetExtendedId(java.lang.String extendedId)voidsetIdChanged(boolean changed)voidsetMaxInactiveInterval(int secs)voidsetResident(boolean resident)java.lang.StringtoString()voidunbindValue(java.lang.String name, java.lang.Object value)Unbind value if value implementsHttpSessionBindingListener(callsHttpSessionBindingListener.valueUnbound(HttpSessionBindingEvent))voidupdateInactivityTimer()Deprecated.protected voiduse()voidwillPassivate()Call the passivation listeners.
-
-
-
Field Detail
-
SESSION_CREATED_SECURE
public static final java.lang.String SESSION_CREATED_SECURE
- See Also:
- Constant Field Values
-
_sessionData
protected final SessionData _sessionData
-
_handler
protected final SessionHandler _handler
-
_extendedId
protected java.lang.String _extendedId
-
_requests
protected long _requests
-
_idChanged
protected boolean _idChanged
-
_newSession
protected boolean _newSession
-
_state
protected Session.State _state
-
_lock
protected Locker _lock
-
_stateChangeCompleted
protected java.util.concurrent.locks.Condition _stateChangeCompleted
-
_resident
protected boolean _resident
-
_sessionInactivityTimer
protected final Session.SessionInactivityTimer _sessionInactivityTimer
-
-
Constructor Detail
-
Session
public Session(SessionHandler handler, javax.servlet.http.HttpServletRequest request, SessionData data)
Create a new session- Parameters:
handler- the SessionHandler that manages this sessionrequest- the request the session should be based ondata- the session data
-
Session
public Session(SessionHandler handler, SessionData data)
Re-inflate an existing session from some eg persistent store.- Parameters:
handler- the SessionHandler managing the sessiondata- the session data
-
-
Method Detail
-
getRequests
public long getRequests()
Returns the current number of requests that are active in the Session.- Returns:
- the number of active requests for this session
-
setExtendedId
public void setExtendedId(java.lang.String extendedId)
-
cookieSet
protected void cookieSet()
-
use
protected void use()
-
access
protected boolean access(long time)
-
complete
protected void complete()
-
isExpiredAt
protected boolean isExpiredAt(long time)
Check to see if session has expired as at the time given.- Parameters:
time- the time since the epoch in ms- Returns:
- true if expired
-
isIdleLongerThan
protected boolean isIdleLongerThan(int sec)
Check if the Session has been idle longer than a number of seconds.- Parameters:
sec- the number of seconds- Returns:
- true if the session has been idle longer than the interval
-
callSessionAttributeListeners
protected void callSessionAttributeListeners(java.lang.String name, java.lang.Object newValue, java.lang.Object oldValue)Call binding and attribute listeners based on the new and old values of the attribute.- Parameters:
name- name of the attributenewValue- new value of the attributeoldValue- previous value of the attribute- Throws:
java.lang.IllegalStateException- if no session manager can be find
-
unbindValue
public void unbindValue(java.lang.String name, java.lang.Object value)Unbind value if value implementsHttpSessionBindingListener(callsHttpSessionBindingListener.valueUnbound(HttpSessionBindingEvent))- Parameters:
name- the name with which the object is bound or unboundvalue- the bound value
-
bindValue
public void bindValue(java.lang.String name, java.lang.Object value)Bind value if value implementsHttpSessionBindingListener(callsHttpSessionBindingListener.valueBound(HttpSessionBindingEvent))- Parameters:
name- the name with which the object is bound or unboundvalue- the bound value
-
didActivate
public void didActivate()
Call the activation listeners. This must be called holding the lock.
-
willPassivate
public void willPassivate()
Call the passivation listeners. This must be called holding the lock
-
isValid
public boolean isValid()
-
isInvalid
public boolean isInvalid()
-
isChanging
public boolean isChanging()
-
getCookieSetTime
public long getCookieSetTime()
-
getCreationTime
public long getCreationTime() throws java.lang.IllegalStateException- Specified by:
getCreationTimein interfacejavax.servlet.http.HttpSession- Throws:
java.lang.IllegalStateException
-
getId
public java.lang.String getId()
- Specified by:
getIdin interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getId()
-
getExtendedId
public java.lang.String getExtendedId()
-
getContextPath
public java.lang.String getContextPath()
-
getVHost
public java.lang.String getVHost()
-
getLastAccessedTime
public long getLastAccessedTime()
- Specified by:
getLastAccessedTimein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getLastAccessedTime()
-
getServletContext
public javax.servlet.ServletContext getServletContext()
- Specified by:
getServletContextin interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getServletContext()
-
setMaxInactiveInterval
public void setMaxInactiveInterval(int secs)
- Specified by:
setMaxInactiveIntervalin interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.setMaxInactiveInterval(int)
-
updateInactivityTimer
@Deprecated public void updateInactivityTimer()
Deprecated.
-
calculateInactivityTimeout
public long calculateInactivityTimeout(long now)
Calculate what the session timer setting should be based on: the time remaining before the session expires and any idle eviction time configured. The timer value will be the lesser of the above.- Parameters:
now- the time at which to calculate remaining expiry- Returns:
- the time remaining before expiry or inactivity timeout
-
getMaxInactiveInterval
public int getMaxInactiveInterval()
- Specified by:
getMaxInactiveIntervalin interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getMaxInactiveInterval()
-
getSessionContext
@Deprecated public javax.servlet.http.HttpSessionContext getSessionContext()
Deprecated.- Specified by:
getSessionContextin interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getSessionContext()
-
getSessionHandler
public SessionHandler getSessionHandler()
-
checkValidForWrite
protected void checkValidForWrite() throws java.lang.IllegalStateExceptionCheck that the session can be modified.- Throws:
java.lang.IllegalStateException- if the session is invalid
-
checkValidForRead
protected void checkValidForRead() throws java.lang.IllegalStateExceptionChech that the session data can be read.- Throws:
java.lang.IllegalStateException- if the session is invalid
-
checkLocked
protected void checkLocked() throws java.lang.IllegalStateException- Throws:
java.lang.IllegalStateException
-
getAttribute
public java.lang.Object getAttribute(java.lang.String name)
- Specified by:
getAttributein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getAttribute(java.lang.String)
-
getValue
@Deprecated public java.lang.Object getValue(java.lang.String name)
Deprecated.- Specified by:
getValuein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getValue(java.lang.String)
-
getAttributeNames
public java.util.Enumeration<java.lang.String> getAttributeNames()
- Specified by:
getAttributeNamesin interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.getAttributeNames()
-
getAttributes
public int getAttributes()
-
getNames
public java.util.Set<java.lang.String> getNames()
-
getValueNames
@Deprecated public java.lang.String[] getValueNames() throws java.lang.IllegalStateExceptionDeprecated.As of Version 2.2, this method is replaced bygetAttributeNames()- Specified by:
getValueNamesin interfacejavax.servlet.http.HttpSession- Throws:
java.lang.IllegalStateException
-
setAttribute
public void setAttribute(java.lang.String name, java.lang.Object value)- Specified by:
setAttributein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.setAttribute(java.lang.String, java.lang.Object)
-
putValue
@Deprecated public void putValue(java.lang.String name, java.lang.Object value)Deprecated.- Specified by:
putValuein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.putValue(java.lang.String, java.lang.Object)
-
removeAttribute
public void removeAttribute(java.lang.String name)
- Specified by:
removeAttributein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.removeAttribute(java.lang.String)
-
removeValue
@Deprecated public void removeValue(java.lang.String name)
Deprecated.- Specified by:
removeValuein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.removeValue(java.lang.String)
-
renewId
public void renewId(javax.servlet.http.HttpServletRequest request)
Force a change to the id of a session.- Parameters:
request- the Request associated with the call to change id.
-
invalidate
public void invalidate()
Called by users to invalidate a session, or called by the access method as a request enters the session if the session has expired, or called by manager as a result of scavenger expiring session- Specified by:
invalidatein interfacejavax.servlet.http.HttpSession- See Also:
HttpSession.invalidate()
-
lock
public Locker.Lock lock()
Grab the lock on the session- Returns:
- the lock
-
beginInvalidate
protected boolean beginInvalidate()
- Returns:
- true if the session is not already invalid or being invalidated.
-
doInvalidate
@Deprecated protected void doInvalidate() throws java.lang.IllegalStateExceptionDeprecated.Call HttpSessionAttributeListeners as part of invalidating a Session.- Throws:
java.lang.IllegalStateException- if no session manager can be find
-
finishInvalidate
protected void finishInvalidate() throws java.lang.IllegalStateExceptionCall HttpSessionAttributeListeners as part of invalidating a Session.- Throws:
java.lang.IllegalStateException- if no session manager can be find
-
isNew
public boolean isNew() throws java.lang.IllegalStateException- Specified by:
isNewin interfacejavax.servlet.http.HttpSession- Throws:
java.lang.IllegalStateException
-
setIdChanged
public void setIdChanged(boolean changed)
-
isIdChanged
public boolean isIdChanged()
-
getSession
public Session getSession()
- Specified by:
getSessionin interfaceSessionHandler.SessionIf
-
getSessionData
protected SessionData getSessionData()
-
setResident
public void setResident(boolean resident)
-
isResident
public boolean isResident()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-