⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractsessionidmanager.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
字号:
//========================================================================//Copyright 2004-2008 Mort Bay Consulting Pty. Ltd.//------------------------------------------------------------------------//Licensed under the Apache License, Version 2.0 (the "License");//you may not use this file except in compliance with the License.//You may obtain a copy of the License at //http://www.apache.org/licenses/LICENSE-2.0//Unless required by applicable law or agreed to in writing, software//distributed under the License is distributed on an "AS IS" BASIS,//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.//See the License for the specific language governing permissions and//limitations under the License.//========================================================================package org.mortbay.jetty.servlet;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Random;import javax.servlet.http.HttpServletRequest;import org.mortbay.component.AbstractLifeCycle;import org.mortbay.jetty.Server;import org.mortbay.jetty.SessionIdManager;import org.mortbay.log.Log;public abstract class AbstractSessionIdManager extends AbstractLifeCycle implements SessionIdManager{    private final static String __NEW_SESSION_ID="org.mortbay.jetty.newSessionId";      protected final static String SESSION_ID_RANDOM_ALGORITHM = "SHA1PRNG";    protected final static String SESSION_ID_RANDOM_ALGORITHM_ALT = "IBMSecureRandom";        protected Random _random;    protected boolean _weakRandom;    protected String _workerName;    protected Server _server;            public AbstractSessionIdManager(Server server)    {        _server=server;    }            public AbstractSessionIdManager(Server server, Random random)    {        _random=random;        _server=server;    }    public String getWorkerName()    {        return _workerName;    }        public void setWorkerName (String name)    {        _workerName=name;    }    /* ------------------------------------------------------------ */    public Random getRandom()    {        return _random;    }    /* ------------------------------------------------------------ */    public void setRandom(Random random)    {        _random=random;        _weakRandom=false;    }    /**      * Create a new session id if necessary.     *      * @see org.mortbay.jetty.SessionIdManager#newSessionId(javax.servlet.http.HttpServletRequest, long)     */    public String newSessionId(HttpServletRequest request, long created)    {        synchronized (this)        {            // A requested session ID can only be used if it is in use already.            String requested_id=request.getRequestedSessionId();            if (requested_id!=null)            {                String cluster_id=getClusterId(requested_id);                if (idInUse(cluster_id))                    return cluster_id;            }                      // Else reuse any new session ID already defined for this request.            String new_id=(String)request.getAttribute(__NEW_SESSION_ID);            if (new_id!=null&&idInUse(new_id))                return new_id;                                    // pick a new unique ID!            String id=null;            while (id==null||id.length()==0||idInUse(id))            {                long r=_weakRandom                ?(hashCode()^Runtime.getRuntime().freeMemory()^_random.nextInt()^(((long)request.hashCode())<<32))                :_random.nextLong();                r^=created;                if (request!=null && request.getRemoteAddr()!=null)                    r^=request.getRemoteAddr().hashCode();                if (r<0)                    r=-r;                id=Long.toString(r,36);                                //add in the id of the node to ensure unique id across cluster                //NOTE this is different to the node suffix which denotes which node the request was received on                id=_workerName + id;            }            request.setAttribute(__NEW_SESSION_ID,id);            return id;        }    }        public void doStart()    {       initRandom();    }                /**     * Set up a random number generator for the sessionids.     *      * By preference, use a SecureRandom but allow to be injected.     */    public void initRandom ()    {        if (_random==null)        {            try            {                _random=SecureRandom.getInstance(SESSION_ID_RANDOM_ALGORITHM);            }            catch (NoSuchAlgorithmException e)            {                try                {                    _random=SecureRandom.getInstance(SESSION_ID_RANDOM_ALGORITHM_ALT);                    _weakRandom=false;                }                catch (NoSuchAlgorithmException e_alt)                {                    Log.warn("Could not generate SecureRandom for session-id randomness",e);                    _random=new Random();                    _weakRandom=true;                }            }        }        _random.setSeed(_random.nextLong()^System.currentTimeMillis()^hashCode()^Runtime.getRuntime().freeMemory());     }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -