Class SessionHelper


  • public class SessionHelper
    extends Base
    A collection of methods that support the implementation of Coherence web container components used to replace the corresponding implementations provided by the application server vendor.

    Must NOT be serializable just in case the application server implements clustering on the ServletContext level (because the session helper will be stored in the app server's ServletContext).

    Version:
    Coherence 2.3
    Author:
    cp 2003.07.21
    • Field Detail

      • PRODUCT_BANNER

        public static final String PRODUCT_BANNER
        The product name banner.
      • CACHE_CONFIGURATION_PATH

        public static final String CACHE_CONFIGURATION_PATH
        The name of the resource that will be used to configure the session management module's own ConfigurableCacheFactory.
        See Also:
        Constant Field Values
      • DEFAULT_CACHE_CONFIGURATION_PATH

        public static final String DEFAULT_CACHE_CONFIGURATION_PATH
        The name of the template resource that will be used to configure the session management module's own ConfigurableCacheFactory.
        See Also:
        Constant Field Values
      • EVT_ADDED

        public static final int EVT_ADDED
        The internal enum for an attribute-added event.
        See Also:
        Constant Field Values
      • SESSION_AFFINITY_SUFFIX_STRIPPED

        public static final String SESSION_AFFINITY_SUFFIX_STRIPPED
        The internal request attribute for tracking that a session affinity suffix has stripped off the session id.
        See Also:
        Constant Field Values
      • EVT_REMOVED

        public static final int EVT_REMOVED
        The internal enum for an attribute-removed event.
        See Also:
        Constant Field Values
      • EVT_REPLACED

        public static final int EVT_REPLACED
        The internal enum for an attribute-replaced event.
        See Also:
        Constant Field Values
      • CTX_INIT_CONFIGURATION_CONSISTENCY

        public static final String CTX_INIT_CONFIGURATION_CONSISTENCY
        The configuration property that indicates whether configuration consistency should be checked.
        See Also:
        Constant Field Values
      • CTX_INIT_APPLICATION_NAME

        public static final String CTX_INIT_APPLICATION_NAME
        The configuration property that overrides the name of the web application.
        See Also:
        Constant Field Values
      • CTX_INIT_FACTORY

        public static final String CTX_INIT_FACTORY
        The name of the application server context's initialization parameter that specifies the fully qualified class name of the SessionHelper Factory to use.
        See Also:
        Constant Field Values
      • CTX_INIT_COLLECTION

        public static final String CTX_INIT_COLLECTION
        The name of the application server context's initialization parameter that specifies the fully qualified class name of the HttpSessionCollection implementation to use.
        See Also:
        Constant Field Values
      • CTX_INIT_CLUSTER_OWNED

        public static final String CTX_INIT_CLUSTER_OWNED
        True if the cluster software is deployed as part of the application and thus must be shut down fully by the application when it shuts down. For example, this should be set to true if coherence.jar is deployed within the application "WAR" file.
        See Also:
        Constant Field Values
      • CTX_INIT_CLUSTER

        public static final String CTX_INIT_CLUSTER
        The name of the application server context's initialization parameter that specifies whether the ServletContext attribute values will be clustered. If the configuration value is "true", then all ServletContext attribute values must be serializable.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHENAME_CONTEXT

        public static final String CTX_INIT_CACHENAME_CONTEXT
        The name of the Coherence cache that will be used to hold the servlet context data if the servlet context is clustered by Coherence.
        See Also:
        Constant Field Values
      • CTX_INIT_LISTENS

        public static final String CTX_INIT_LISTENS
        The comma-delimited list of names of application classes that wish to receive events from the web container.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSIONCONTEXT_ENABLED

        public static final String CTX_INIT_SESSIONCONTEXT_ENABLED
        True to allow the application to iterate sessions from the session context, thus disobeying the deprecation in the servlet spec.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_RETAIN_MILLIS

        public static final String CTX_INIT_SESSION_RETAIN_MILLIS
        The length of time to defer async exit on a session that is accessed "out of context".
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIES_ENABLED

        public static final String CTX_INIT_COOKIES_ENABLED
        True to enable session cookies.
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIE_NAME

        public static final String CTX_INIT_COOKIE_NAME
        The name of the session cookie.
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIE_DOMAIN

        public static final String CTX_INIT_COOKIE_DOMAIN
        The domain of the session cookie.
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIE_PATH

        public static final String CTX_INIT_COOKIE_PATH
        The path of the session cookie.
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIE_MAX_AGE

        public static final String CTX_INIT_COOKIE_MAX_AGE
        The maximum age in seconds of the session cookie.
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIE_SECURE

        public static final String CTX_INIT_COOKIE_SECURE
        True to ensure that the session cookie is only sent from a web client over a SSL connection.
        See Also:
        Constant Field Values
      • CTX_INIT_COOKIE_HTTPONLY

        public static final String CTX_INIT_COOKIE_HTTPONLY
        True to ensure that the session cookie is only send from the browser uising the http/https connection.
        See Also:
        Constant Field Values
      • CTX_INIT_URLENCODE_ENABLED

        public static final String CTX_INIT_URLENCODE_ENABLED
        True to enable URL encoding of session ids.
        See Also:
        Constant Field Values
      • CTX_INIT_URLENCODE_NAME

        public static final String CTX_INIT_URLENCODE_NAME
        The parameter name to encode the session id into the URL with.
        See Also:
        Constant Field Values
      • CTX_INIT_URLDECODE_DEFAULT

        public static final String CTX_INIT_URLDECODE_DEFAULT
        True to use the container's decoding of the URL session ID.
        See Also:
        Constant Field Values
      • CTX_INIT_URLENCODE_DEFAULT

        public static final String CTX_INIT_URLENCODE_DEFAULT
        True to use the container's encoding of the URL session ID.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_PRIORITY

        public static final String CTX_INIT_DAEMON_PRIORITY
        The priority for the session reaper daemon.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_CYCLE_SECS

        public static final String CTX_INIT_DAEMON_CYCLE_SECS
        The number of seconds that the daemon rests between reaping.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_COORDINATED

        public static final String CTX_INIT_DAEMON_COORDINATED
        True to coordinate reaping in the cluster such that only one server will perform reaping within a given reaping cycle, and it will check all session ids in the cluster.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_ASSUME_LOCALITY

        public static final String CTX_INIT_DAEMON_ASSUME_LOCALITY
        True to assume that the sessions in the cache are split across only the servers that are doing reaping.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_SWEEP_MODULO

        public static final String CTX_INIT_DAEMON_SWEEP_MODULO
        The number of times that the reaper reaps the sessions that are being used locally before it will check sessions that may be orphaned or expired elsewhere in the cluster.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_PARALLEL

        public static final String CTX_INIT_DAEMON_PARALLEL
        Configuration parameter for enabling parallel session reaping. Defaults to "false".
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_MIN_THREADS

        public static final String CTX_INIT_DAEMON_MIN_THREADS
        Configuration parameter for setting the minimum number of threads for the session reaper daemon.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_MAX_THREADS

        public static final String CTX_INIT_DAEMON_MAX_THREADS
        Configuration parameter for setting the maximum number of threads for the session reaper daemon.
        See Also:
        Constant Field Values
      • CTX_INIT_DAEMON_QUEUE_SIZE

        public static final String CTX_INIT_DAEMON_QUEUE_SIZE
        Configuration parameter for setting the queue size of the session reaper work manager. This is only used when parallel reaping is enabled and not using the SPI.
        See Also:
        Constant Field Values
      • CTX_INIT_LOGGER_LEVEL

        public static final String CTX_INIT_LOGGER_LEVEL
        Configuration parameter for setting the logger level for this Coherence*Web instance.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHENAME_MANAGEMENT

        public static final String CTX_INIT_CACHENAME_MANAGEMENT
        The configuration property that overrides the name of the clustered cache that stores the sessions management configuration data.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHENAME_SESSIONS

        public static final String CTX_INIT_CACHENAME_SESSIONS
        The configuration property that overrides the name of the clustered cache that stores the sessions.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHENAME_OVERFLOW

        public static final String CTX_INIT_CACHENAME_OVERFLOW
        The configuration property that overrides the name of the clustered cache that stores the "overflowing" (split-out due to size) session attributes. Only used for the "Split" model.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHENAME_LOCAL_SESSIONS

        public static final String CTX_INIT_CACHENAME_LOCAL_SESSIONS
        The configuration property that overrides the name of the local cache that stores non-distributed sessions when the SessionDistributionController option is implemented.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHENAME_LOCAL_ATTRIBUTES

        public static final String CTX_INIT_CACHENAME_LOCAL_ATTRIBUTES
        The configuration property that overrides the name of the local cache that stores non-distributed session attributes (if allowed.)
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_EXPIRE_SECS

        public static final String CTX_INIT_SESSION_EXPIRE_SECS
        The configuration property that overrides the session expirty time.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_ID_LENGTH

        public static final String CTX_INIT_SESSION_ID_LENGTH
        The configuration property that overrides the session id length.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_ID_GENERATOR_CLASS

        public static final String CTX_INIT_SESSION_ID_GENERATOR_CLASS
        The configuration property that specifies the fully qualified class name of the HttpSessionIdGenerator implementation to use.
        See Also:
        Constant Field Values
      • CTX_INIT_CACHE_DELEGATOR_CLASS

        public static final String CTX_INIT_CACHE_DELEGATOR_CLASS
        The configuration property that defines the cache delegator class.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOG_INVALIDATION_EXCEPTIONS

        public static final String CTX_INIT_SESSION_LOG_INVALIDATION_EXCEPTIONS
        The configuration property that specifies if Coherence*Web is to log exceptions thrown by session attribute listeners during invalidation.
        See Also:
        Constant Field Values
      • CTX_INIT_ATTR_OVERFLOW_THRESHOLD

        public static final String CTX_INIT_ATTR_OVERFLOW_THRESHOLD
        The configuration property for the "split" model that overrides the length that attributes must be below to be stored inside a session ("embedded") or above which they will be stored in the separated "overflow" cache ("external").
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCK

        public static final String CTX_INIT_SESSION_LOCK
        The configuration property that specifies that session locking is enabled.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_MEMBER_LOCK

        public static final String CTX_INIT_SESSION_MEMBER_LOCK
        The configuration property that specifies member level session locking.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_APP_LOCK

        public static final String CTX_INIT_SESSION_APP_LOCK
        The configuration property that specifies application level session locking.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_THREAD_LOCK

        public static final String CTX_INIT_SESSION_THREAD_LOCK
        The configuration property that specifies thread level session locking.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_GET_LOCK_TIMEOUT

        public static final String CTX_INIT_SESSION_GET_LOCK_TIMEOUT
        The configuration property that specifies session lock acquisition timeout.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_AFFINITY_TOKEN

        public static final String CTX_INIT_SESSION_AFFINITY_TOKEN
        The configuration property that specifies session id affinity suffix token.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_REPLACE_AFFINITY_TOKEN

        public static final String CTX_INIT_SESSION_REPLACE_AFFINITY_TOKEN
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCKING_MODE

        public static final String CTX_INIT_SESSION_LOCKING_MODE
        The configuration property that sets the session locking Configuration: in one step. Legal values: none, optimistic, member, app, thread. This is a no-op if not configured or if an improper value is used. If used this will overwrite any set operations on individual properties.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCKING_MODE_APP

        public static final String CTX_INIT_SESSION_LOCKING_MODE_APP
        The configuration property that specifies valid application locking mode value.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCKING_MODE_MEMBER

        public static final String CTX_INIT_SESSION_LOCKING_MODE_MEMBER
        The configuration property that specifies valid member locking mode value.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCKING_MODE_NONE

        public static final String CTX_INIT_SESSION_LOCKING_MODE_NONE
        The configuration property that specifies valid none locking mode value.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCKING_MODE_OPTIMISTIC

        public static final String CTX_INIT_SESSION_LOCKING_MODE_OPTIMISTIC
        The configuration property that specifies valid optimistic locking mode value.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LOCKING_MODE_THREAD

        public static final String CTX_INIT_SESSION_LOCKING_MODE_THREAD
        The configuration property that specifies valid thread locking mode value.
        See Also:
        Constant Field Values
      • CTX_INIT_LOG_THREADS_HOLDING_LOCK

        public static final String CTX_INIT_LOG_THREADS_HOLDING_LOCK
        The configuration property that specifies whether an diagnostic invocation service is executed when a member is unable to acquire the cluster lock for a session. The invocation service will cause the member that has ownership of the session to log the stack trace of the threads that are currently holding the lock.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_STRICT_SPEC

        public static final String CTX_INIT_SESSION_STRICT_SPEC
        The configuration property that specifies strict spec adherence.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_LAZY_ACCESS

        public static final String CTX_INIT_SESSION_LAZY_ACCESS
        The configuration property that allows lazy access to a session. Default is false. When false, the session is fetched on entry into a servlet's service method. When true, it is only fetched on getSession.
        See Also:
        Constant Field Values
      • CTX_INIT_SHUTDOWN_DELAY_SECS

        public static final String CTX_INIT_SHUTDOWN_DELAY_SECS
        The configuration property that overrides the shutdown delay time.
        See Also:
        Constant Field Values
      • CTX_INIT_SERVLET

        public static final String CTX_INIT_SERVLET
        In the servlet's configuration, the name of the servlet class that is wrapped by the Coherence servlet.

        This is used in a web-xml

        <servlet>
        element to designate the application servlet name that the Coherence implementation is being wrapped around; this must be done for each application servlet.

        Before:

        
         <servlet>
           <servlet-name>MyServlet</servlet-name>
           <display-name>MyServlet</display-name>
           <description>this servlet is part of my app</description>
           <servlet-class>com.mypkg.MyServlet</servlet-class>
           <init-param>
             <param-name>ContextPath</param-name>
             <param-value>/tomcat</param-value>
           </init-param>
         </servlet>
         

        After:

        
         <servlet>
           <servlet-name>MyServlet</servlet-name>
           <display-name>MyServlet</display-name>
           <description>this servlet is part of my app</description>
           <servlet-class>com.tangosol.coherence.servlet.api22.HttpServletWrapper</servlet-class>
           <init-param>
             <param-name>ContextPath</param-name>
             <param-value>/tomcat</param-value>
           </init-param>
           <init-param>
             <param-name>coherence-servlet-class</param-name>
             <param-value>com.mypkg.MyServlet</param-value>
           </init-param>
         </servlet>
         

        See Also:
        Constant Field Values
      • CTX_INIT_FILTER

        public static final String CTX_INIT_FILTER
        In the filter's configuration, the name of the filter class that is wrapped by the Coherence filter.

        This is used in a web-xml

        <filter>
        element to designate the application filter name that the Coherence implementation is being wrapped around; this must be done for each application filter.

        See Also:
        Constant Field Values
      • CTX_INIT_DIST_CONTROLLER_CLASS

        public static final String CTX_INIT_DIST_CONTROLLER_CLASS
        The configuration property that specifies an implementation of the SessionDistributionController interface to use.
        See Also:
        Constant Field Values
      • CTX_INIT_SCOPE_CONTROLLER_CLASS

        public static final String CTX_INIT_SCOPE_CONTROLLER_CLASS
        The configuration property that specifies an implementation of the AttributeScopeController interface to use.
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_STICKY

        public static final String CTX_INIT_SESSION_STICKY
        The configuration property that specifies whether sticky sessions optimizations will be used. This should only be turned on if a sticky load balancer is being used.
        See Also:
        Constant Field Values
      • CTX_INIT_SERVICENAME_OWNERSHIP

        public static final String CTX_INIT_SERVICENAME_OWNERSHIP
        The configuration property that specifies the name of the invocation service that will be used to manage sticky session ownership.
        See Also:
        Constant Field Values
      • CTX_INIT_ALLOW_LOCAL_ATTRIBUTES

        public static final String CTX_INIT_ALLOW_LOCAL_ATTRIBUTES
        The configuration property that specifies whether non-serializable attributes should be preserved as local.
        See Also:
        Constant Field Values
      • CTX_INIT_ENABLE_SUSPECT_ATTRIBUTES

        public static final String CTX_INIT_ENABLE_SUSPECT_ATTRIBUTES
        Whether we try to determine suspect attributes. With this set to "true", attributes that are deemed to be mutable (detected with a simple check) and which are accessed through a get, are deemed to be suspect in that they may have been changed in application code. Suspect attributes are treated as changed. Defaults to "true".
        See Also:
        Constant Field Values
      • CTX_INIT_ENABLE_ATTR_LISTENER_OPTIMIZATION

        public static final String CTX_INIT_ENABLE_ATTR_LISTENER_OPTIMIZATION
        Determines if attribute listeners should be executed if the same instance of a session attribute is being replaced in the session.
        See Also:
        Constant Field Values
      • CTX_INIT_APPLICATION_NAME_GENERATED

        protected static final String CTX_INIT_APPLICATION_NAME_GENERATED
        Whether the application name was generated by Coherence*Web
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_EXPIRY_FILTER_FACTORY

        protected static final String CTX_INIT_SESSION_EXPIRY_FILTER_FACTORY
        Parameter name for specifying a custom session expiry filter factory
        See Also:
        Constant Field Values
      • CTX_INIT_ENABLE_SESSION_ACCESS_DEBUG_LOGGING

        public static final String CTX_INIT_ENABLE_SESSION_ACCESS_DEBUG_LOGGING
        Enable Debug logging for Session access, creation, invalidation, and attribute access/insertion/update/removal
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_ACCESS_DEBUG_LOGGING_FILTER

        public static final String CTX_INIT_SESSION_ACCESS_DEBUG_LOGGING_FILTER
        Comma separated list of session attribute prefixes not to be logged
        See Also:
        Constant Field Values
      • CTX_INIT_CACHE_CONFIGURATION_PATH

        public static final String CTX_INIT_CACHE_CONFIGURATION_PATH
        The configuration property that indicates which cache configuration path name will be used. This overrides the default "session-cache-config.xml"
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_CACHE_FEDERATED

        public static final String CTX_INIT_SESSION_CACHE_FEDERATED
        The configuration property that indicates whether the session cache needs to be federated
        See Also:
        Constant Field Values
      • CTX_INIT_SESSION_REAPING_MECHANISM

        public static final String CTX_INIT_SESSION_REAPING_MECHANISM
        The configuration property that indicates the mechanism which will be used by the session reaper to delete timed-out sessions. The default value is 'Default' which will remove the session after fetching the session to the local JVM and calling the invalidate method of the HTTP session as per the specification in javax.servlet.http.HttpSession. Coherence*Web also provides an alternate reaping mechanism called 'RemoteDelete' which will remove the timed-out sesions from the session cache using an EntryProcessor. This mechanism will not call the invalidate method of the HttpSession and hence the session listeners will not be invoked in this case. Session Reaping using 'RemoteDelete' will be much faster than the default mechanism, but should only be used in applications which do not use session listeners.
        See Also:
        Constant Field Values
      • CTX_ATTR_CONTEXT

        public static final String CTX_ATTR_CONTEXT
        The name of the application server context's attribute that Coherence stores its servlet context object under.

        Also, the name of the request attribute used to store the request context.

        See Also:
        Constant Field Values
      • REQ_ATTR_COUNT

        public static final String REQ_ATTR_COUNT
        The name of the request attribute that stores a request reference counter.
        See Also:
        Constant Field Values
      • REQ_ATTR_SESSION

        public static final String REQ_ATTR_SESSION
        The name of the request attribute that stores the current Coherence HttpSession instance.
        See Also:
        Constant Field Values
      • REQ_ATTR_TEST

        public static final String REQ_ATTR_TEST
        The name of the request attribute that tests if the Coherence wrapper is in place.
        See Also:
        Constant Field Values
      • DEFAULT_CTXNAME

        public static final String DEFAULT_CTXNAME
        The default cache name for the ServletContext attribute map.
        See Also:
        Constant Field Values
      • DEFAULT_MGTNAME

        public static final String DEFAULT_MGTNAME
        The default cache name for the session management configuration data.
        See Also:
        Constant Field Values
      • CFG_KEY_REAPER

        public static final String CFG_KEY_REAPER
        The key in the configuration cache for coordating cluster-wide session reaping.
        See Also:
        Constant Field Values
      • DEFAULT_FEDERATED_CACHE_CONFIGURATION_PATH

        public static final String DEFAULT_FEDERATED_CACHE_CONFIGURATION_PATH
        The file name of the federated default cache configuration file
        See Also:
        Constant Field Values
      • REMOTE_DELETE_REAPING_MECHANISM

        public static final String REMOTE_DELETE_REAPING_MECHANISM
        The context parameter value to be set if Remote Delete is to be used as reaping mechanism.
        See Also:
        Constant Field Values
      • DEFAULT_REAPING_MECHANISM

        public static final String DEFAULT_REAPING_MECHANISM
        The context parameter value to be set if Default (invalidation) is to be used as Reaping Mechanism.
        See Also:
        Constant Field Values
      • NAME_FILTER

        public static final Filter NAME_FILTER
        The Filter object that hides init param names for Coherence params.
      • NO_REPLICATED_VERSION

        protected static final String NO_REPLICATED_VERSION
        The first version that do not use replicated cache.
        Since:
        22.06.4
        See Also:
        Constant Field Values
      • NO_REPLICATED_VERSION_2206

        protected static final String NO_REPLICATED_VERSION_2206
        The first 14.1.1.2206 patch that do not use replicated cache.
        Since:
        22.06.4
        See Also:
        Constant Field Values
      • REPLICATED_SERVICE

        protected static final String REPLICATED_SERVICE
        The replicated cache service name.
        Since:
        22.06.4
        See Also:
        Constant Field Values
      • KEY_MIGRATED

        protected static final String KEY_MIGRATED
        A key for a cache entry indicating we copied the data from replicated cache to the view.
        Since:
        22.06.4
        See Also:
        Constant Field Values
      • m_cachefactory

        protected ConfigurableCacheFactory m_cachefactory
        The session management module's own ConfigurableCacheFactory.
      • s_collections

        public static List s_collections
        A singleton list of all collections on this server used for sticky session optimzation
      • s_tloReaperFlag

        public static final ThreadLocal<Boolean> s_tloReaperFlag
        When a session needs to be invalidated, the removal must be synthetic remove in case the invalidation is coming from the reaper. This is because in case of federation, we want the session invalidation to be a local event as if it is not local, it can lead to unwanted session deletion if there is a pause/break in federation.
    • Constructor Detail

      • SessionHelper

        public SessionHelper​(SessionHelperFactory factory,
                             javax.servlet.ServletContext ctx)
        Construct a Coherence SessionHelper that will support the implementation of clustered web container services.
        Parameters:
        factory - the object that will instantiate the container-specific (or servlet spec specific) implementations
        ctx - the application server's ServletContext object
    • Method Detail

      • configure

        protected void configure()
        Called immediately after construction.
      • shutdownSessionHelper

        protected void shutdownSessionHelper()
      • shutdownSessionHelperCaches

        protected void shutdownSessionHelperCaches​(SessionHelper helper)
      • configureLogger

        protected void configureLogger()
      • ensureCluster

        protected void ensureCluster()
        Ensure the coherence cluster.
      • checkConfigConsistency

        protected void checkConfigConsistency​(com.tangosol.coherence.servlet.ValidatingConfiguration configuration)
        Check that configuration is consistent with that of existing members.
        Parameters:
        configuration - the validating configuration
        Throws:
        IllegalStateException - if configuration is inconsistent
      • getConfigurationConsistencyVerifier

        protected com.tangosol.coherence.servlet.ConfigurationConsistencyVerifier getConfigurationConsistencyVerifier()
        Get a ConfigurationConsistencyVerifier instance.
        Returns:
        a ConfigurationConsistencyVerifier instance
      • clearStoredConfiguration

        public void clearStoredConfiguration()
        Removes the storeSessd configuration.
      • getConfig

        public XmlElement getConfig()
        Determine the current configuration of the object.
        Returns:
        the XML configuration or null
      • setConfig

        public void setConfig​(XmlElement xml)
        Specify the configuration for the object.
        Parameters:
        xml - the XML configuration for the object
        Throws:
        IllegalStateException - if the object is not in a state that allows the configuration to be set; for example, if the object has already been configured and cannot be reconfigured
      • setConfigurableCacheFactory

        public void setConfigurableCacheFactory​(ConfigurableCacheFactory cacheFactory)
        Sets the global cache factory instance used by Coherence*Web. This can be set either when the first application is deployed or by the container during startup.
        Parameters:
        cacheFactory - the configurable cache factory
      • getConfigurableCacheFactory

        public ConfigurableCacheFactory getConfigurableCacheFactory()
        Obtain the ConfigurableCacheFactory used by the SessionHelper.
        Returns:
        the ConfigurableCacheFactory used by the SessionHelper
      • getCacheConfigPath

        public static String getCacheConfigPath​(javax.servlet.ServletContext servletContext,
                                                ClassLoader appClassLoader)
        Get the cache configuration path
        Parameters:
        servletContext - the servlet context
        appClassLoader - the application classloader
        Returns:
        the cache configuration path
      • getCache

        public NamedCache getCache​(String sCacheName)
        Obtain a session management cache by name.
        Parameters:
        sCacheName - the name of the cache to obtain
        Returns:
        the NamedCache
      • getInvocationService

        public InvocationService getInvocationService​(String sService)
        Obtain a session management invocation service by name.
        Parameters:
        sService - the name of the invocation service to obtain
        Returns:
        the InvocationService
      • getApplicationName

        protected String getApplicationName()
        Return the name of the web application.
        Returns:
        the name of the web application; never null or empty
      • getMBeanObjectName

        protected String getMBeanObjectName()
        Return a string representation of the ObjectName used to register the MBean instance for this SessionHelper.
        Returns:
        a string representation of the ObjectName
      • instantiateMBean

        protected Object instantiateMBean()
        Factory Method: Instantiate a MBean implementation for this SessionHelper.
        Returns:
        a new MBean instance
      • registerMBean

        protected void registerMBean()
        Register an MBean instance for this SessionHelper.
      • unregisterMBean

        protected void unregisterMBean()
        Unregister the MBean instance for this SessionHelper.
      • getRegistry

        protected Registry getRegistry()
        Get the management registry from the CacheFactory
        Returns:
        the management registry
      • contextInitialized

        public void contextInitialized()
        Called by the Coherence ServletContextListener on contextInitialized() if an event listener is registered.
      • getWrappedHttpServletReq

        public com.tangosol.coherence.servlet.api24.HttpServletRequestWrapper getWrappedHttpServletReq()
        Get the wrapped HttpServletRequest.
        Returns:
        the wrapped HttpServletRequest
      • setWrappedHttpServletReq

        public void setWrappedHttpServletReq​(com.tangosol.coherence.servlet.api24.HttpServletRequestWrapper req)
        Set the wrapped HttpServletRequest.
        Parameters:
        req - the wrapped HttpServletRequest to set to
      • contextDestroyed

        public void contextDestroyed()
        Called by the Coherence ServletContextListener on contextDestroyed() if an event listener is registered.
      • servletInitialized

        public void servletInitialized()
        Called by each Coherence Servlet wrapper on init().
      • servletDestroyed

        public void servletDestroyed()
        Called by each Coherence Servlet wrapper on destroy().
      • filterInitialized

        public void filterInitialized()
        Called by each Coherence Filter wrapper on init().
      • filterDestroyed

        public void filterDestroyed()
        Called by each Coherence Filter wrapper on destroy().
      • shutdown

        protected void shutdown()
        Shuts down the SessionHelper and any mess that it created.
      • isClusterOwned

        protected boolean isClusterOwned()
        Determine if the responsibility for shutting down the cluster is owned by the application.
        Returns:
        true if the cluster software is running within the domain of the application context, false if within the domain of the application server
      • getShutdownDelayMillis

        protected long getShutdownDelayMillis()
        Determine the number of milliseconds to defer shutdown after the app appears to have stopped.
        Returns:
        the length of time in milliseconds to defer shutdown after the app is stopped
      • getServletContext

        public javax.servlet.ServletContext getServletContext()
        Returns the Coherence ServletContext wrapper that this SessionHelper is helping with.
        Returns:
        the Coherence ServletContext
      • getServletContextAttributeCache

        public NamedCache getServletContextAttributeCache()
        Get the clustered attribute map.
        Returns:
        the clustered attribute map, or null if the context does not cluster attributes
      • ensureServletContextAttributeCache

        protected NamedCache ensureServletContextAttributeCache()
        Get the clustered attribute map if it exists, otherwise create it (if the ServletContext is supposed to be clustered).
        Returns:
        the clustered attribute map, or null if the context does not cluster attributes
      • shutdownServletContextAttributeCache

        protected void shutdownServletContextAttributeCache()
        Shutdown the clustered attribute map.
      • getServletContextMajorVersion

        public int getServletContextMajorVersion()
        Returns the major version of the Java Servlet API that this servlet container supports.
        Returns:
        the major version of the Java Servlet API that this servlet container supports
      • getServletContextMinorVersion

        public int getServletContextMinorVersion()
        Returns the minor version of the Servlet API that this servlet container supports.
        Returns:
        the minor version of the Servlet API that this servlet container supports
      • getWrappedServletContext

        public javax.servlet.ServletContext getWrappedServletContext()
        Returns the application server's ServletContext that this SessionHelper is helping with.
        Returns:
        the application server's ServletContext
      • isServletContextClustered

        public boolean isServletContextClustered()
        Determine if the context clusters attributes.
        Returns:
        true if the context clusters attributes; false otherwise
      • isStrict

        public boolean isStrict()
        Determine if the Servlet specification is being followed strictly.
        Returns:
        true if the Servlet specification is being followed strictly
      • parseString

        public static String parseString​(javax.servlet.ServletContext ctx,
                                         String sParam,
                                         String sDefault)
        Helper: Get a String init parameter from the context. The parsed init parameter will be stipped of leading and trailing whitespace. If the result is blank, the default will be returned.
        Parameters:
        ctx - the ServletContext
        sParam - the init parameter name
        sDefault - the default to return if the init parameter is not present or is blank
        Returns:
        the specified init parameter, or if it is not present or it is blank, then the passed default
      • parseBoolean

        public static boolean parseBoolean​(javax.servlet.ServletContext ctx,
                                           String sParam,
                                           boolean fDefault)
        Helper: Get a boolean init parameter from the context.
        Parameters:
        ctx - the ServletContext
        sParam - the init parameter name
        fDefault - the default to return if the init parameter is not present or is not a boolean value
        Returns:
        the specified boolean init parameter, or its default
      • parseInt

        public static int parseInt​(javax.servlet.ServletContext ctx,
                                   String sParam,
                                   int nDefault)
        Helper: Get an int init parameter from the context.
        Parameters:
        ctx - the ServletContext
        sParam - the init parameter name
        nDefault - the default to return if the init parameter is not present or is not an int value
        Returns:
        the specified int init parameter, or its default
      • getListeners

        public Listeners getListeners()
        Get the application listeners.
        Returns:
        a Listeners object containing all EventListener objects for the application
      • setListeners

        public void setListeners​(Listeners listeners)
        Store the application listeners. This should only be called once.
        Parameters:
        listeners - a Listeners object containing all EventListener objects for the application
      • getContextAttributeListeners

        protected Listeners getContextAttributeListeners()
        Get the application listeners that listen to servlet context attribute events.
        Returns:
        a Listeners object containing all EventListener objects for the application that implement ServletContextAttributeListener
      • addIgnoreAttributeName

        public void addIgnoreAttributeName​(String sName)
        Register a name to ignore events for.
        Parameters:
        sName - the name to ignore events for
      • removeIgnoreAttributeName

        public void removeIgnoreAttributeName​(String sName)
        Unregister a name to ignore events for.
        Parameters:
        sName - the name to no longer ignore events for
      • isAttributeNameIgnored

        protected boolean isAttributeNameIgnored​(String sName)
        Test to see if events for the specified name should be ignored.
        Parameters:
        sName - the name to test whether events are being ignored for
        Returns:
        true if events for the specified name should be ignored
      • dispatchAttributeEvent

        public void dispatchAttributeEvent​(int nEvent,
                                           javax.servlet.ServletContextAttributeEvent evt)
        Dispatch a wrapped event to the application listeners.
        Parameters:
        nEvent - the internal enum that identifies the event name
        evt - the application server's ServletContextAttributeEvent
      • dispatchInternalAttributeEvent

        public void dispatchInternalAttributeEvent​(int nEvent,
                                                   javax.servlet.ServletContextAttributeEvent evt)
        Dispatch a wrapped event to the application listeners.
        Parameters:
        nEvent - the internal enum that identifies the event name
        evt - the application server's ServletContextAttributeEvent
      • wrapFilterConfig

        public javax.servlet.FilterConfig wrapFilterConfig​(javax.servlet.FilterConfig cfg)
        Given the specified FilterConfig object, return a wrapper to use.
        Parameters:
        cfg - the container's FilterConfig object
        Returns:
        a wrapper for the container's FilterConfig object
      • unwrapFilterConfig

        public javax.servlet.FilterConfig unwrapFilterConfig​(javax.servlet.FilterConfig cfg)
        Attempt to unwrap the passed FilterConfig wrapper to get the container's FilterConfig object back. Note: This does require that each Filter is configured with a different name.
        Parameters:
        cfg - the FilterConfig
        Returns:
        the unwrapped FilterConfig object
      • filter

        public void filter​(javax.servlet.Filter filter,
                           javax.servlet.ServletRequest req,
                           javax.servlet.ServletResponse resp,
                           javax.servlet.FilterChain chain)
                    throws javax.servlet.ServletException,
                           IOException
        Issue the service call to the specified servlet, given the passed request and response objects.
        Parameters:
        filter - the application's filter to invoke
        req - the ServletRequest object that contains the client's request
        resp - the ServletResponse object that contains the servlet's response
        chain - the FilterChain to use to invoke the next filter or the Servlet
        Throws:
        javax.servlet.ServletException - if servlet error occurs
        IOException - if I/O error occurs
      • wrapServletConfig

        public javax.servlet.ServletConfig wrapServletConfig​(javax.servlet.ServletConfig cfg)
        Given the specified servlet config object, return a wrapper to use.
        Parameters:
        cfg - the container's servlet config object
        Returns:
        a wrapper for the container's servlet config object
      • unwrapServletConfig

        public javax.servlet.ServletConfig unwrapServletConfig​(javax.servlet.ServletConfig cfg)
        Attempt to unwrap the passed ServletConfig wrapper to get the container's ServletConfig object back. Note: This does require that each servlet is configured with a different name.
        Parameters:
        cfg - the ServletConfig
        Returns:
        the unwrapped ServletConfig object
      • isServletRequestWrapped

        public boolean isServletRequestWrapped​(javax.servlet.ServletRequest req)
        Test to see if the passed ServletRequest is wrapped, which means that invoking a method on the passed ServletRequest object will invoke the Coherence implementation, and will do so before the container implementation is invoked.
        Parameters:
        req - a ServletRequest object
        Returns:
        true if the use of the passed ServletRequest object will result in the Coherence implementation will be invoked before the container implementation
      • wrapServletRequest

        public javax.servlet.ServletRequest wrapServletRequest​(javax.servlet.ServletRequest req,
                                                               javax.servlet.ServletResponse res)
        Given the specified request, create a request wrapper.
        Parameters:
        req - a ServletRequest object that might need wrapping
        res - the associated ServletResponse
        Returns:
        a request object that wraps the specified ServletRequest
      • unwrapServletRequest

        public javax.servlet.ServletRequest unwrapServletRequest​(javax.servlet.ServletRequest req)
        Fully unwrap the specified request object.
        Parameters:
        req - a ServletRequest object
        Returns:
        the container's ServletRequest object
      • decodeCookie

        public String decodeCookie​(javax.servlet.http.HttpServletRequest req)
        Obtain a session ID from a request object by examining the cookies attached to the request.
        Parameters:
        req - an HttpServletRequest object that may have a session cookie attached to it
        Returns:
        the HttpSession id as a String value, or null if no session id is found in a cookie attached to the request
      • encodeCookie

        public void encodeCookie​(javax.servlet.http.HttpServletRequest req,
                                 javax.servlet.http.HttpServletResponse res,
                                 String sId,
                                 boolean fNew)
        Encode a session ID into a cookie and attach it to the response object.
        Parameters:
        req - the HttpServletRequest object for the current request
        res - the HttpServletResponse object for the current request that the session cookie should be attached to
        sId - the session ID
        fNew - true if the session was just created
      • isSessionIdCookie

        public boolean isSessionIdCookie​(javax.servlet.http.Cookie cookie)
        Tests to see if the supplied cookie is a session ID cookie.
        Parameters:
        cookie - the cookie to test
        Returns:
        true if the cookie is a session ID cookie
      • createRequestContext

        public RequestContext createRequestContext​(javax.servlet.ServletRequest req,
                                                   javax.servlet.ServletResponse res)
        Given the specified request and response, provide a request context.
        Parameters:
        req - a ServletRequest object that might need wrapping or might have already been wrapped
        res - a ServletResponse object that might need wrapping or might have already been wrapped
        Returns:
        the request context that matches the passed request and response objects
      • createServiceHelper

        protected com.tangosol.coherence.servlet.ServiceHelper createServiceHelper()
        Create a ServiceHelper. This allows for example the use of a lazy strategy in obtaining the session.
        Returns:
        the ServiceHelper
      • preService

        public RequestContext preService​(javax.servlet.ServletRequest req,
                                         javax.servlet.ServletResponse res)
                                  throws javax.servlet.ServletException,
                                         IOException
        Wrap the passed request and response (if necessary) and build a request context that contains all the pertinent information about the request. This also touches the pre-existing session, if any, if this is the "point of initial entry" into the web container.
        Parameters:
        req - the servlet response object (could already be wrapped)
        res - the servlet response object (could already be wrapped)
        Returns:
        a request context that contains all the information about this request that is being processed
        Throws:
        javax.servlet.ServletException - if servlet error occurs
        IOException - if I/O error occurs
      • postService

        public void postService​(RequestContext ctx)
                         throws javax.servlet.ServletException,
                                IOException
        Finish the request processing after the servlet/jsp is complete. This includes marking the session (if new) as not new and releasing any locks.
        Parameters:
        ctx - the request context returned by preService()
        Throws:
        javax.servlet.ServletException - if servlet error occurs
        IOException - if I/O error occurs
      • service

        public void service​(javax.servlet.Servlet servlet,
                            javax.servlet.ServletRequest req,
                            javax.servlet.ServletResponse resp)
                     throws javax.servlet.ServletException,
                            IOException
        Issue the service call to the specified servlet, given the passed request and response objects.
        Parameters:
        servlet - the servlet to invoke
        req - a ServletRequest object that might need wrapping or might have already been wrapped
        resp - might a ServletResponse object that might need wrapping or have already been wrapped
        Throws:
        javax.servlet.ServletException - if servlet error occurs
        IOException - if I/O error occurs
      • instantiateHttpSessionCollection

        protected CoherenceHttpSessionCollection instantiateHttpSessionCollection()
        Get the HttpSessionCollection object that manages the HttpSessionModel objects.
        Returns:
        the HttpSessionCollection that manages the session models for the application
      • getHttpSessionCollection

        public HttpSessionCollection getHttpSessionCollection()
        Get the HttpSessionCollection object that manages the HttpSessionModel objects.
        Returns:
        the HttpSessionCollection that manages the session models for the application
      • getHttpSessionMap

        protected Map getHttpSessionMap()
        Get the map of session ID to session object for HttpSession objects managed in this application within this JVM/classloader.
        Returns:
        the map of session IDs to HttpSession objects
      • removeHttpSessionFromMap

        public void removeHttpSessionFromMap​(String sId)
        Remove the session object cached in the local session map.
        Parameters:
        sId - the session id
      • getLocalSessionIds

        public Set<String> getLocalSessionIds()
        Gets session ids for all sessions that are in the local map, i.e. has been accessed by this node.
        Returns:
        A Set of all local session ids.
      • createHttpSession

        public javax.servlet.http.HttpSession createHttpSession()
        Create a new HttpSession object.
        Returns:
        an HttpSession object
      • getHttpSession

        public javax.servlet.http.HttpSession getHttpSession​(String sId)
        Get the HttpSession object for the specified ID.
        Parameters:
        sId - the session ID
        Returns:
        an HttpSession object, if it exists, or null
      • ensureHttpSession

        public javax.servlet.http.HttpSession ensureHttpSession​(String sId)
        Get the HttpSession object for the specified ID. A HttpSesion object will always be returned.
        Parameters:
        sId - the session ID
        Returns:
        an HttpSession object
      • updateSessionId

        public String updateSessionId​(String sId,
                                      String sNewId)
        Updates the session model id to a new session id. Used after authentication for security purposes in Servlet 3.1 compliant application containers.
        Parameters:
        sId - the session id
        sNewId - the new session id
        Returns:
        the updated session id
      • getHttpSession

        public javax.servlet.http.HttpSession getHttpSession​(javax.servlet.http.HttpServletRequest req)
        Return the HttpSession associated with the given request.
        Parameters:
        req - the request
        Returns:
        the current session associated with the given request or null if a session has not been associated with the request
      • onGetHttpSession

        public void onGetHttpSession​(javax.servlet.http.HttpServletRequest req)
        Allow service helper to perform actions on getSession calls. For example can be used for lazy fetching of session. Invoked by the framework at the beginning of a HttpServletRequest.getSession(boolean) method.
        Parameters:
        req - the request
      • setHttpSession

        public void setHttpSession​(javax.servlet.http.HttpServletRequest req,
                                   javax.servlet.http.HttpSession session)
        Associate the supplied HttpSession with the given request.
        Parameters:
        req - the request
        session - the session to associate with the given request
      • isSessionContextEnabled

        public boolean isSessionContextEnabled()
        Determine if the session context should disobey the deprecation and allow an application to enumerate sessions.
        Returns:
        true if the session context should allow the application to enumerate sessions
      • getHttpSessionContext

        public javax.servlet.http.HttpSessionContext getHttpSessionContext()
        Get the HttpSessionContext.
        Returns:
        an HttpSessionContext object
      • isSessionIdCookieEnabled

        public boolean isSessionIdCookieEnabled()
        Determine if a cookie may be used to hold the session ID.
        Returns:
        true if a cookie may be used to hold the session ID
      • getSessionIdCookieName

        public String getSessionIdCookieName()
        Determine the name of the cookie for holding the session ID.
        Returns:
        the name of the cookie for holding the session ID
      • getSessionIdCookieDomain

        public String getSessionIdCookieDomain()
        Determine the domain of the cookie for holding the session ID.
        Returns:
        the domain of the cookie for holding the session ID
      • getSessionIdCookiePath

        public String getSessionIdCookiePath()
        Determine the path of the cookie for holding the session ID.
        Returns:
        the path of the cookie for holding the session ID
      • getSessionIdCookieMaxAge

        public int getSessionIdCookieMaxAge()
        Determine the max age (in seconds) of the cookie for holding the session ID.
        Returns:
        the max age of the cookie for holding the session ID
      • getSessionIdCookieSecure

        public boolean getSessionIdCookieSecure()
        Determine if a web client will only send the session cookie over a SSL connection.
        Returns:
        true if the client will only send the session cookie over a SSL connection
      • getSessionIdCookieHttpOnly

        public boolean getSessionIdCookieHttpOnly()
        Determine if a web client will only send the session using the initial http/https connection.
        Returns:
        true if the client will only send the session cookie using the initial http/https connection
      • isSessionIdEncodingEnabled

        public boolean isSessionIdEncodingEnabled()
        Determine if URL encoding may be used to hold the session ID.
        Returns:
        true if URL encoding may be used to hold the session ID
      • getSessionIdEncodingName

        public String getSessionIdEncodingName()
        Determine the name of the URL parameter for session ID encoding and decoding.
        Returns:
        the name of the URL parameter that contains the session id
      • isUseDefaultSessionIdDecoding

        public boolean isUseDefaultSessionIdDecoding()
        Determine if the session ID decoding (from a URL) performed by the application server's request object is sufficient. Sometimes, it is necessary to use the application server's own decoding because it will "hide" the "jsessionid" parameter, making custom parsing impossible.
        Returns:
        true to use the session ID provided by the application server's request object
      • isUseDefaultSessionIdEncoding

        public boolean isUseDefaultSessionIdEncoding()
        Determine if the session ID encoding (into a URL) performed by the application server's response object is sufficient. This will be false for all known cases, since the container has no way of knowing the session ID of the custom session implementation.
        Returns:
        true to use the app server to URL encode the session ID; false to use the custom implementation to encode it
      • getSessionIdAffinityToken

        public String getSessionIdAffinityToken()
        Retrieve the session id affinity suffix token if one is defined. The token along with all the characters to right of the token will be stripped off the session id.
        Returns:
        the session id affinity token
      • isSessionIdReplaceAffinityToken

        public boolean isSessionIdReplaceAffinityToken()
        If true, replace the session id affinity suffix token with the configured affinity token for this server.
        Returns:
        true if the session affinity token should be replaced
      • decodeUrl

        public String decodeUrl​(javax.servlet.http.HttpServletRequest request)
        Decodes the session ID from the URL represented by the passed request.
        Parameters:
        request - the current HttpServletRequest
        Returns:
        the session id if there were one encoded in the URL, otherwise null
      • encodeUrl

        public String encodeUrl​(String sUrl,
                                javax.servlet.http.HttpServletRequest request)
        Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged. The implementation of this method includes the logic to determine whether the session ID needs to be encoded in the URL. For example, if the browser supports cookies, or session tracking is turned off, URL encoding is unnecessary.
        Parameters:
        sUrl - the URL to be encoded
        request - the current HttpServletRequest
        Returns:
        the encoded URL if encoding is needed; the unchanged URL otherwise
      • encodeUrl

        protected String encodeUrl​(String sUrl,
                                   String sId)
        Encodes the specified URL by including the given session ID in it.
        Parameters:
        sUrl - the URL to be encoded
        sId - the session ID to encode in the URL
        Returns:
        the encoded URL
      • enterSession

        public void enterSession​(String sId)
        Obtain any necessary ownership for the specified session.

        If the session specified by the session ID does not exist, then this method has no effect; no exception is thrown.

        Parameters:
        sId - the session id
      • exitSession

        public void exitSession​(String sId,
                                boolean fNew)
        Release ownership for the specified session. This method must be called exactly once for each call to enterSession(sId), with the only exceptions being:
        • If the session no longer exists, exit should not be called.
        • If the session was created as part of the HTTP request processing, this method must be invoked even though the corresponding enterSession(sId) method was never invoked.

        If the session specified by the session ID does not exist, then this method has no effect; no exception is thrown.

        Parameters:
        sId - the session id
        fNew - true if the session was just created
      • requestAsyncOwnership

        public void requestAsyncOwnership​(String sId)
        Enter (obtain) and schedule an asynchronous call to exit (release) the specified session ID.
        Parameters:
        sId - the session ID to async enter and exit
      • shutdownHttpSessionCollection

        public void shutdownHttpSessionCollection()
        Shutdown the http session collection.
      • toString

        public String toString()
        Returns a string representation of the object.
        Overrides:
        toString in class Object
        Returns:
        a string representation of the object
      • getConfigurationCache

        public NamedCache getConfigurationCache()
        Get the NamedCache used to store configuration and management information for the session management implementation.
        Returns:
        the clustered cache used to store configuration and management information
      • ensureConfigurationCache

        protected NamedCache ensureConfigurationCache()
        Get the NamedCache used to store configuration and management information for the session management implementation if it exists, otherwise create it.
        Returns:
        the clustered cache used to store configuration and management information
      • shutdownConfigurationCache

        protected void shutdownConfigurationCache()
        Shutdown the NamedCache used to store configuration and management information for the session management implementation.
      • getDescription

        protected String getDescription()
        Returns a string representation of this object's attributes.
        Returns:
        a string representation of this object's attributes
      • getFactory

        public SessionHelperFactory getFactory()
        Determine the factory to use to instantiate container-specific implementations of the Servlet specification interfaces.
        Returns:
        the factory used by the session helper
      • instantiateSessionReaperDaemon

        protected SessionHelper.SessionReaperDaemon instantiateSessionReaperDaemon()
        Factory method: Instantiate a daemon thread that will clean up expired sessions.
        Returns:
        the instantiated SessionReaperDaemon
      • getSessionReaperDaemon

        protected SessionHelper.SessionReaperDaemon getSessionReaperDaemon()
        Get the daemon thread that cleans up expired sessions.
        Returns:
        the session reaper daemon, if it exists, otherwise null
      • getDaemonPriority

        protected int getDaemonPriority()
        Determine the configured priority for the session reaper daemon.
        Returns:
        the configured priority of the session reaper daemon
      • getDaemonCycleMillis

        protected long getDaemonCycleMillis()
        Determine the number of milliseconds per reap cycle. This means that a new cycle will not start until this many milliseconds has passed since the previous cycle started.
        Returns:
        the number of milliseconds per reap cycle
      • getDaemonCheckCollectionModulo

        protected int getDaemonCheckCollectionModulo()
        Determine how many times the daemon will perform its check before checking the session models that the collection considers "local".
        Returns:
        the modulo on which the daemon will check the session models that the collection considers "local"
      • isDaemonCheckCoordinated

        protected boolean isDaemonCheckCoordinated()
        Determine if the reaper daemon coordinates the check across the cluster instead of just doing its own "local" scan.
        Returns:
        true if the daemon coordinates a global scan with other nodes in the cluster
      • isDaemonAssumeLocality

        protected boolean isDaemonAssumeLocality()
        Determine if the reaper daemon assumes that session data is stored only on nodes that are running the session reaper daemon thread.
        Returns:
        true if the daemon can assume that all cluster nodes that store sessions are also running a reaper daemon
      • getWorkManagerMinThreads

        protected int getWorkManagerMinThreads()
        Returns the minimum number of threads used by the work manager.
        Returns:
        the the minimum number of threads used by the work manager
      • getWorkManagerMaxThreads

        protected int getWorkManagerMaxThreads()
        Returns the maximum number of threads used by the work manager.
        Returns:
        the maximum number of threads used by the work manager
      • getWorkManager

        protected WorkManager getWorkManager()
        Gets a WorkManager for use by the parallel reap task.
        Returns:
        A WorkManager
      • getReapTaskFactory

        protected com.tangosol.coherence.servlet.SessionHelper.ReapTaskFactory getReapTaskFactory()
        Getter for reap task factory.
        Returns:
        The ReapTaskFactory
      • getSessionReapingMechanism

        public String getSessionReapingMechanism()
        Returns the session reaping mechanism that is used in the application.
        Returns:
        the session reaper mechanism that is used
      • logWarningIfRemoteDeleteMechanismConfigured

        public void logWarningIfRemoteDeleteMechanismConfigured()
        Log the warning that session listener is being added even though the reaper mechanism used is RemoteDelete
      • cleanUpSession

        protected void cleanUpSession​(String sessionId)
        Does any addition clean up necessary for the deleted sessions. Session helpers can override this session and do any additional environment specific clean up. Used in 'RemoteDelete' reaping mechanism.
        Parameters:
        sessionId - the sessionId to be removed
      • checkForDeadSessions

        protected void checkForDeadSessions()
        Discard the HttpSession objects that are no longer alive.
      • killSession

        public void killSession​(String sId)
        Forcibly destroy a session. Use HttpSession invalidate method instead; this is only a last-ditch attempt to get rid of the session model when nothing else works.
        Parameters:
        sId - the session ID to destroy
      • shutdownSessionReaperDaemon

        public void shutdownSessionReaperDaemon()
        Stop the daemon thread that is used for expiring sessions.
      • instantiateSessionWorkerDaemon

        protected TaskDaemon instantiateSessionWorkerDaemon()
        Factory method: Instantiate a daemon thread that will be used for scheduled tasks.
        Returns:
        a new session worker daemon, but without starting the thread
      • getSessionWorkerDaemon

        protected TaskDaemon getSessionWorkerDaemon()
        Get the daemon thread that is used for scheduled tasks.
        Returns:
        the session worker daemon, or null if it does not exist
      • setSessionWorkerDaemon

        protected void setSessionWorkerDaemon​(TaskDaemon daemon)
        Set the daemon thread that is used for scheduled tasks.
        Parameters:
        daemon - the session worker daemon
      • ensureSessionWorkerDaemon

        public TaskDaemon ensureSessionWorkerDaemon()
        Get the daemon thread that is used for scheduled tasks, creating it if necessary.
        Returns:
        the session worker daemon
      • shutdownSessionWorkerDaemon

        public void shutdownSessionWorkerDaemon()
        Stop the daemon thread that is used for scheduled tasks.
      • formatListeners

        public static String formatListeners​(Listeners listeners)
        Format a Listeners object into a human readable string.
        Parameters:
        listeners - a Listeners object
        Returns:
        a human readable description of the Listeners contents
      • formatCacheName

        public static String formatCacheName​(NamedCache cache)
        Format a NamedCache object into a human readable string.
        Parameters:
        cache - a NamedCache object
        Returns:
        a human readable string describing the named cache
      • formatMapKeys

        public static String formatMapKeys​(Map<?,​?> map)
        Format a map into a list of keys.
        Parameters:
        map - a Map object
        Returns:
        a human readable list of keys from the Map
      • logEventException

        public static void logEventException​(RuntimeException e,
                                             String sMethod,
                                             boolean fContinue)
        Log an event exception.
        Parameters:
        e - the exception
        sMethod - the event method name etc.
        fContinue - true if the execution will be continued; false if the exception has to be logged and re-thrown
      • setIsReaperThread

        public static void setIsReaperThread​(boolean isReaperThread)
      • unsetIsReaperThread

        public static void unsetIsReaperThread()
      • isReaperThread

        public static boolean isReaperThread()
      • isSyntheticSessionRemoveRequired

        public static boolean isSyntheticSessionRemoveRequired()