Interface PortletSession
PortletSession
interface provides a way to identify a user
across more than one request and to store transient information about that user.
A PortletSession
is created per user client per portlet application.
A portlet can bind an object attribute into a PortletSession
by name.
The PortletSession
interface defines two scopes for storing objects:
APPLICATION_SCOPE
PORTLET_SCOPE
APPLICATION_SCOPE
must be available to all the portlets, servlets and
JSPs that belongs to the same portlet application and that handles a
request identified as being a part of the same session.
Objects stored in the session using the PORTLET_SCOPE
must be
available to the portlet during requests for the same portlet window
that the objects where stored from. Attributes stored in the
PORTLET_SCOPE
are not protected from other web components
of the portlet application. They are just conveniently namespaced.
The portlet session is based on the HttpSession
. Therefore all
HttpSession
listeners do apply to the portlet session and
attributes set in the portlet session are visible in the HttpSession
and vice versa.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
This constant defines an application wide scope for the session attribute.static final int
This constant defines the scope of the session attribute to be private to the portlet and its included resources. -
Method Summary
Modifier and TypeMethodDescriptiongetAttribute
(String name) Returns the object bound with the specified name in this session under thePORTLET_SCOPE
, ornull
if no object is bound under the name in that scope.getAttribute
(String name, int scope) Returns the object bound with the specified name in this session, ornull
if no object is bound under the name in the given scope.Returns anEnumeration
of String objects containing the names of all the objects bound to this session under thePORTLET_SCOPE
, or an emptyEnumeration
if no attributes are available.getAttributeNames
(int scope) Returns anEnumeration
of String objects containing the names of all the objects bound to this session in the given scope, or an emptyEnumeration
if no attributes are available in the given scope.long
Returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT.getId()
Returns a string containing the unique identifier assigned to this session.long
Returns the last time the client sent a request associated with this session, as the number of milliseconds since midnight January 1, 1970 GMT.int
Returns the maximum time interval, in seconds, for which the portlet container keeps this session open between client accesses.Returns the portlet application context associated with this session.void
Invalidates this session (all scopes) and unbinds any objects bound to it.boolean
isNew()
Returns true if the client does not yet know about the session or if the client chooses not to join the session.void
removeAttribute
(String name) Removes the object bound with the specified name under thePORTLET_SCOPE
from this session.void
removeAttribute
(String name, int scope) Removes the object bound with the specified name and the given scope from this session.void
setAttribute
(String name, Object value) Binds an object to this session under thePORTLET_SCOPE
, using the name specified.void
setAttribute
(String name, Object value, int scope) Binds an object to this session in the given scope, using the name specified.void
setMaxInactiveInterval
(int interval) Specifies the time, in seconds, between client requests, before the portlet container invalidates this session.
-
Field Details
-
APPLICATION_SCOPE
static final int APPLICATION_SCOPEThis constant defines an application wide scope for the session attribute.APPLICATION_SCOPE
session attributes enable Portlets within one portlet application to share data.Portlets may need to prefix attributes set in this scope with some ID, to avoid overwriting each other's attributes in the case where two portlets of the same portlet definition are created.
Value:
0x01
- See Also:
-
PORTLET_SCOPE
static final int PORTLET_SCOPEThis constant defines the scope of the session attribute to be private to the portlet and its included resources.Value:
0x02
- See Also:
-
-
Method Details
-
getAttribute
Returns the object bound with the specified name in this session under thePORTLET_SCOPE
, ornull
if no object is bound under the name in that scope.- Parameters:
name
- a string specifying the name of the object- Returns:
- the object with the specified name for
the
PORTLET_SCOPE
. - Throws:
IllegalStateException
- if this method is called on an invalidated session.IllegalArgumentException
- if name isnull
.
-
getAttribute
Returns the object bound with the specified name in this session, ornull
if no object is bound under the name in the given scope.- Parameters:
name
- a string specifying the name of the objectscope
- session scope of this attribute- Returns:
- the object with the specified name
- Throws:
IllegalStateException
- if this method is called on an invalidated sessionIllegalArgumentException
- if name isnull
.
-
getAttributeNames
Enumeration getAttributeNames()Returns anEnumeration
of String objects containing the names of all the objects bound to this session under thePORTLET_SCOPE
, or an emptyEnumeration
if no attributes are available.- Returns:
- an
Enumeration
ofString
objects specifying the names of all the objects bound to this session, or an emptyEnumeration
if no attributes are available. - Throws:
IllegalStateException
- if this method is called on an invalidated session
-
getAttributeNames
Returns anEnumeration
of String objects containing the names of all the objects bound to this session in the given scope, or an emptyEnumeration
if no attributes are available in the given scope.- Parameters:
scope
- session scope of the attribute names- Returns:
- an
Enumeration
ofString
objects specifying the names of all the objects bound to this session, or an emptyEnumeration
if no attributes are available in the given scope. - Throws:
IllegalStateException
- if this method is called on an invalidated session
-
getCreationTime
long getCreationTime()Returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT.- Returns:
- a
long
specifying when this session was created, expressed in milliseconds since 1/1/1970 GMT - Throws:
IllegalStateException
- if this method is called on an invalidated session
-
getId
String getId()Returns a string containing the unique identifier assigned to this session.- Returns:
- a string specifying the identifier assigned to this session
-
getLastAccessedTime
long getLastAccessedTime()Returns the last time the client sent a request associated with this session, as the number of milliseconds since midnight January 1, 1970 GMT.Actions that your portlet takes, such as getting or setting a value associated with the session, do not affect the access time.
- Returns:
- a
long
representing the last time the client sent a request associated with this session, expressed in milliseconds since 1/1/1970 GMT
-
getMaxInactiveInterval
int getMaxInactiveInterval()Returns the maximum time interval, in seconds, for which the portlet container keeps this session open between client accesses. After this interval, the portlet container invalidates the session. The maximum time interval can be set with thesetMaxInactiveInterval
method. A negative time indicates the session should never timeout.- Returns:
- an integer specifying the number of seconds this session remains open between client requests
- See Also:
-
invalidate
void invalidate()Invalidates this session (all scopes) and unbinds any objects bound to it.Invalidating the portlet session will result in invalidating the underlying
HttpSession
- Throws:
IllegalStateException
- if this method is called on a session which has already been invalidated
-
isNew
boolean isNew()Returns true if the client does not yet know about the session or if the client chooses not to join the session.- Returns:
true
if the server has created a session, but the client has not joined yet.- Throws:
IllegalStateException
- if this method is called on a session which has already been invalidated
-
removeAttribute
Removes the object bound with the specified name under thePORTLET_SCOPE
from this session. If the session does not have an object bound with the specified name, this method does nothing.- Parameters:
name
- the name of the object to be removed from this session in thePORTLET_SCOPE
.- Throws:
IllegalStateException
- if this method is called on a session which has been invalidatedIllegalArgumentException
- if name isnull
.
-
removeAttribute
Removes the object bound with the specified name and the given scope from this session. If the session does not have an object bound with the specified name, this method does nothing.- Parameters:
name
- the name of the object to be removed from this sessionscope
- session scope of this attribute- Throws:
IllegalStateException
- if this method is called on a session which has been invalidatedIllegalArgumentException
- if name isnull
.
-
setAttribute
Binds an object to this session under thePORTLET_SCOPE
, using the name specified. If an object of the same name in this scope is already bound to the session, that object is replaced.After this method has been executed, and if the new object implements
HttpSessionBindingListener
, the container callsHttpSessionBindingListener.valueBound
. The container then notifies anyHttpSessionAttributeListeners
in the web application.If an object was already bound to this session that implements
HttpSessionBindingListener
, itsHttpSessionBindingListener.valueUnbound
method is called.If the value is
null
, this has the same effect as callingremoveAttribute()
.- Parameters:
name
- the name to which the object is bound under thePORTLET_SCOPE
; this cannot benull
.value
- the object to be bound- Throws:
IllegalStateException
- if this method is called on a session which has been invalidatedIllegalArgumentException
- if name isnull
.
-
setAttribute
Binds an object to this session in the given scope, using the name specified. If an object of the same name in this scope is already bound to the session, that object is replaced.After this method has been executed, and if the new object implements
HttpSessionBindingListener
, the container callsHttpSessionBindingListener.valueBound
. The container then notifies anyHttpSessionAttributeListeners
in the web application.If an object was already bound to this session that implements
HttpSessionBindingListener
, itsHttpSessionBindingListener.valueUnbound
method is called.If the value is
null
, this has the same effect as callingremoveAttribute()
.- Parameters:
name
- the name to which the object is bound; this cannot benull
.value
- the object to be boundscope
- session scope of this attribute- Throws:
IllegalStateException
- if this method is called on a session which has been invalidatedIllegalArgumentException
- if name isnull
.
-
setMaxInactiveInterval
void setMaxInactiveInterval(int interval) Specifies the time, in seconds, between client requests, before the portlet container invalidates this session. A negative time indicates the session should never timeout.- Parameters:
interval
- An integer specifying the number of seconds
-
getPortletContext
PortletContext getPortletContext()Returns the portlet application context associated with this session.- Returns:
- the portlet application context
-