Class DefaultSessionIdManager

    • Field Detail

      • __NEW_SESSION_ID

        public static final java.lang.String __NEW_SESSION_ID
        See Also:
        Constant Field Values
      • COUNTER

        protected static final java.util.concurrent.atomic.AtomicLong COUNTER
      • _random

        protected java.util.Random _random
      • _weakRandom

        protected boolean _weakRandom
      • _workerName

        protected java.lang.String _workerName
      • _workerAttr

        protected java.lang.String _workerAttr
      • _reseed

        protected long _reseed
      • _server

        protected Server _server
      • _ownHouseKeeper

        protected boolean _ownHouseKeeper
    • Constructor Detail

      • DefaultSessionIdManager

        public DefaultSessionIdManager​(Server server)
        Parameters:
        server - the server associated with the id manager
      • DefaultSessionIdManager

        public DefaultSessionIdManager​(Server server,
                                       java.util.Random random)
        Parameters:
        server - the server associated with the id manager
        random - a random number generator to use for ids
    • Method Detail

      • setServer

        public void setServer​(Server server)
        Parameters:
        server - the server associated with this id manager
      • getServer

        public Server getServer()
        Returns:
        the server associated with this id manager
      • getWorkerName

        @ManagedAttribute(value="unique name for this node",
                          readonly=true)
        public java.lang.String getWorkerName()
        Get the workname. If set, the workername is dot appended to the session ID and can be used to assist session affinity in a load balancer.
        Specified by:
        getWorkerName in interface SessionIdManager
        Returns:
        name or null
      • setWorkerName

        public void setWorkerName​(java.lang.String workerName)
        Set the workername. If set, the workername is dot appended to the session ID and can be used to assist session affinity in a load balancer. A worker name starting with $ is used as a request attribute name to lookup the worker name that can be dynamically set by a request Customizer.
        Parameters:
        workerName - the name of the worker, if null it is coerced to empty string
      • getRandom

        public java.util.Random getRandom()
        Returns:
        the random number generator
      • setRandom

        public void setRandom​(java.util.Random random)
        Parameters:
        random - a random number generator for generating ids
      • getReseed

        public long getReseed()
        Returns:
        the reseed probability
      • setReseed

        public void setReseed​(long reseed)
        Set the reseed probability.
        Parameters:
        reseed - If non zero then when a random long modulo the reseed value == 1, the SecureRandom will be reseeded.
      • newSessionId

        public java.lang.String newSessionId​(long seedTerm)
        Parameters:
        seedTerm - the seed for RNG
        Returns:
        a new unique session id
      • initRandom

        public void initRandom()
        Set up a random number generator for the sessionids. By preference, use a SecureRandom but allow to be injected.
      • getExtendedId

        public java.lang.String getExtendedId​(java.lang.String clusterId,
                                              javax.servlet.http.HttpServletRequest request)
        Get the session ID with any worker ID.
        Specified by:
        getExtendedId in interface SessionIdManager
        Parameters:
        clusterId - the cluster id
        request - the request
        Returns:
        sessionId plus any worker ID.
      • getId

        public java.lang.String getId​(java.lang.String extendedId)
        Get the session ID without any worker ID.
        Specified by:
        getId in interface SessionIdManager
        Parameters:
        extendedId - the session id with the worker extension
        Returns:
        sessionId without any worker ID.
      • invalidateAll

        public void invalidateAll​(java.lang.String id)
        Description copied from interface: SessionIdManager
        Invalidate all sessions on all contexts that share the same id.
        Specified by:
        invalidateAll in interface SessionIdManager
        Parameters:
        id - the session id