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

📄 hashsessionmanager.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        {            Log.warn(e);        }                if (_sessions==null)            return null;        return (Session)_sessions.get(idInCluster);    }    /* ------------------------------------------------------------ */    protected void invalidateSessions()    {        // Invalidate all sessions to cause unbind events        ArrayList sessions=new ArrayList(_sessions.values());        for (Iterator i=sessions.iterator(); i.hasNext();)        {            Session session=(Session)i.next();            session.invalidate();        }        _sessions.clear();            }    /* ------------------------------------------------------------ */    protected AbstractSessionManager.Session newSession(HttpServletRequest request)    {        return new Session(request);    }        /* ------------------------------------------------------------ */    protected void removeSession(String clusterId)    {        _sessions.remove(clusterId);    }            public void setStoreDirectory (File dir)    {        _storeDir=dir;    }        public File getStoreDirectory ()    {        return _storeDir;    }    public void setLazyLoad(boolean lazyLoad)    {        _lazyLoad = lazyLoad;    }        public boolean isLazyLoad()    {        return _lazyLoad;    }        public void restoreSessions () throws Exception    {        if (_storeDir==null || !_storeDir.exists())        {            return;        }        if (!_storeDir.canRead())        {            Log.warn ("Unable to restore Sessions: Cannot read from Session storage directory "+_storeDir.getAbsolutePath());            return;        }        File[] files = _storeDir.listFiles();        for (int i=0;files!=null&&i<files.length;i++)        {            try            {                FileInputStream in = new FileInputStream(files[i]);                           Session session = restoreSession(in);                in.close();                          addSession(session, false);                files[i].delete();            }            catch (Exception e)            {                Log.warn("Problem restoring session "+files[i].getName(), e);            }        }                _sessionsLoaded = true;    }        public void saveSessions () throws Exception    {        if (_storeDir==null || !_storeDir.exists())        {            return;        }                if (!_storeDir.canWrite())        {            Log.warn ("Unable to save Sessions: Session persistence storage directory "+_storeDir.getAbsolutePath()+ " is not writeable");            return;        }         synchronized (this)        {            Iterator itor = _sessions.entrySet().iterator();            while (itor.hasNext())            {                Map.Entry entry = (Map.Entry)itor.next();                String id = (String)entry.getKey();                Session session = (Session)entry.getValue();                try                {                    File file = new File (_storeDir, id);                    if (file.exists())                        file.delete();                    file.createNewFile();                    FileOutputStream fos = new FileOutputStream (file);                    session.save(fos);                    fos.close();                }                catch (Exception e)                {                    Log.warn("Problem persisting session "+id, e);                }            }        }    }            public Session restoreSession (FileInputStream fis)     throws Exception    {        /*         * Take care of this class's fields first by calling          * defaultReadObject         */                DataInputStream in = new DataInputStream(fis);        String clusterId = in.readUTF();        String nodeId = in.readUTF();        boolean idChanged = in.readBoolean();        long created = in.readLong();        long cookieSet = in.readLong();        long accessed = in.readLong();        long lastAccessed = in.readLong();        //boolean invalid = in.readBoolean();        //boolean invalidate = in.readBoolean();        //long maxIdle = in.readLong();        //boolean isNew = in.readBoolean();        int requests = in.readInt();                Session session = new Session (created, clusterId);        session._cookieSet = cookieSet;        session._lastAccessed = lastAccessed;                int size = in.readInt();        if (size > 0)        {            ArrayList keys = new ArrayList();            for (int i=0; i<size; i++)            {                String key = in.readUTF();                keys.add(key);            }            ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(in);            for (int i=0;i<size;i++)            {                Object value = ois.readObject();                session.setAttribute((String)keys.get(i),value);            }            ois.close();        }        else            session.initValues();        in.close();        return session;    }        /* ------------------------------------------------------------ */    /* ------------------------------------------------------------ */    /* ------------------------------------------------------------ */    protected class Session extends AbstractSessionManager.Session    {        /* ------------------------------------------------------------ */        private static final long serialVersionUID=-2134521374206116367L;                   /* ------------------------------------------------------------- */        protected Session(HttpServletRequest request)        {            super(request);        }                protected Session(long created, String clusterId)        {            super(created, clusterId);        }        /* ------------------------------------------------------------- */        public void setMaxInactiveInterval(int secs)        {            super.setMaxInactiveInterval(secs);            if (_maxIdleMs>0&&(_maxIdleMs/10)<_scavengePeriodMs)                HashSessionManager.this.setScavengePeriod((secs+9)/10);        }                /* ------------------------------------------------------------ */        protected Map newAttributeMap()        {            return new HashMap(3);        }                 public void invalidate ()        throws IllegalStateException        {            super.invalidate();            remove(getId());        }                public void remove (String id)        {            if (id==null)                return;                        //all sessions are invalidated when jetty is stopped, make sure we don't            //remove all the sessions in this case            if (isStopping() || isStopped())                return;                        if (_storeDir==null || !_storeDir.exists())            {                return;            }                        File f = new File(_storeDir, id);            f.delete();        }                public void save(FileOutputStream fos)  throws IOException         {            DataOutputStream out = new DataOutputStream(fos);            out.writeUTF(_clusterId);            out.writeUTF(_nodeId);            out.writeBoolean(_idChanged);            out.writeLong( _created);            out.writeLong(_cookieSet);            out.writeLong(_accessed);            out.writeLong(_lastAccessed);            /* Don't write these out, as they don't make sense to store because they             * either they cannot be true or their value will be restored in the              * Session constructor.             */            //out.writeBoolean(_invalid);            //out.writeBoolean(_doInvalidate);            //out.writeLong(_maxIdleMs);            //out.writeBoolean( _newSession);            out.writeInt(_requests);            if (_values != null)            {                out.writeInt(_values.size());                Iterator itor = _values.keySet().iterator();                while (itor.hasNext())                {                    String key = (String)itor.next();                    out.writeUTF(key);                }                itor = _values.values().iterator();                ObjectOutputStream oos = new ObjectOutputStream(out);                while (itor.hasNext())                {                    oos.writeObject(itor.next());                }                oos.close();            }            else                out.writeInt(0);            out.close();        }            }        protected class ClassLoadingObjectInputStream extends ObjectInputStream    {        public ClassLoadingObjectInputStream(java.io.InputStream in)        throws IOException        {            super(in);        }                public ClassLoadingObjectInputStream ()        throws IOException        {            super();        }                public Class resolveClass (java.io.ObjectStreamClass cl)        throws IOException, ClassNotFoundException        {            Class clazz;            try            {                return Class.forName(cl.getName(), false, Thread.currentThread().getContextClassLoader());            }            catch (ClassNotFoundException e)            {                return super.resolveClass(cl);            }        }    }    }

⌨️ 快捷键说明

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