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

📄 standardmanager.java

📁 这是一个法律事务所系统源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     *     * @param id The session id for the session to be returned     *     * @exception ClassNotFoundException if a deserialization error occurs     *  while processing this request     * @exception IllegalStateException if a new session cannot be     *  instantiated for any reason     * @exception IOException if an input/output error occurs while     *  processing this request     */    public HttpSession findSession(String id) {	if (id == null)	    return (null);	HttpSession s=((HttpSession) sessions.get(id));	if( s==null ) return s;	access( s );	return s;    }    /**     * Return the set of active Sessions associated with this Manager.     * If this Manager has no active Sessions, a zero-length array is returned.     */    public HttpSession[] findSessions() {	synchronized (sessions) {	    Vector keys = new Vector();	    Enumeration ids = sessions.keys();	    while (ids.hasMoreElements()) {		String id = (String) ids.nextElement();		keys.addElement(id);	    }	    HttpSession results[] = new HttpSession[keys.size()];	    for (int i = 0; i < results.length; i++) {		String key = (String) keys.elementAt(i);		results[i] = (HttpSession) sessions.get(key);	    }	    return (results);	}    }	/**		This method will return a Hashtable of HttpSession		objects.	*/	public Hashtable getSessions() {		return this.sessions;	}        /**                This method will replace the sessions Hashtable with                that given.        */        public void setSessions(Hashtable sessions) {                            // make sure all the sessions know they belong to us                Enumeration e = sessions.keys();                while (e.hasMoreElements())                {                    StandardSession sess                         = (StandardSession)sessions.get(e.nextElement());                    sess.setManager(this);                }                            this.sessions = sessions;        }	    /**     * Construct and return a new session object, based on the default     * settings specified by this Manager's properties.  The session     * id will be assigned by this method, and available via the getId()     * method of the returned session.  If a new session cannot be created     * for any reason, return <code>null</code>.     *     * @exception IllegalStateException if a new session cannot be     *  instantiated for any reason     */    public HttpSession getNewSession(String jsIdent) {	if ((maxActiveSessions >= 0) &&	  (sessions.size() >= maxActiveSessions))	    throw new IllegalStateException		(sm.getString("standardManager.createSession.ise"));	// Recycle or create a Session instance	StandardSession session = null;	synchronized (recycled) {	    int size = recycled.size();	    if (size > 0) {		session = (StandardSession) recycled.elementAt(size - 1);		recycled.removeElementAt(size - 1);	    }	}	if (session == null)	    session = new StandardSession(this);	// Initialize the properties of the new session and return it	session.setNew(true);	session.setValid(true);	session.setCreationTime(System.currentTimeMillis());	session.setMaxInactiveInterval(this.maxInactiveInterval);	session.setId(SessionUtil.generateSessionId(jsIdent));	return (session);    }    public void handleReload(Request req, ClassLoader newLoader) {	SessionSerializer.doSerialization(req, newLoader, this);    }    /**     * Prepare for the beginning of active use of the public methods of this     * component.  This method should be called after <code>configure()</code>,     * and before any of the public methods of the component are utilized.     *     * @exception IllegalStateException if this component has not yet been     *  configured (if required for this component)     * @exception IllegalStateException if this component has already been     *  started     */    public void start() {	// Start the background reaper thread	threadStart();    }    /**     * Gracefully terminate the active use of the public methods of this     * component.  This method should be the last one called on a given     * instance of this component.     *     * @exception IllegalStateException if this component has not been started     * @exception IllegalStateException if this component has already     *  been stopped     */    public void stop() {	// Stop the background reaper thread	threadStop();	// Expire all active sessions	HttpSession sessions[] = findSessions();	for (int i = 0; i < sessions.length; i++) {	    StandardSession session = (StandardSession) sessions[i];	    if (!session.isValid())		continue;	    session.expire();	}    }    // -------------------------------------------------------- Package Methods    /**     * Add this Session to the set of active Sessions for this Manager.     *     * @param session Session to be added     */    void add(StandardSession session) {	sessions.put(session.getId(), session);    }    /**     * Add this Session to the recycle collection for this Manager.     *     * @param session Session to be recycled     */    void recycle(StandardSession session) {	recycled.addElement(session);    }    /**     * Remove this Session from the active Sessions for this Manager.     *     * @param session Session to be removed     */    void remove(StandardSession session) {	sessions.remove(session.getId());    }    // -------------------------------------------------------- Private Methods    /**     * Invalidate all sessions that have expired.     */    private void processExpires() {	long timeNow = System.currentTimeMillis();	HttpSession sessions[] = findSessions();	for (int i = 0; i < sessions.length; i++) {	    StandardSession session = (StandardSession) sessions[i];	    if (!session.isValid())		continue;	    int maxInactiveInterval = session.getMaxInactiveInterval();	    if (maxInactiveInterval < 0)		continue;	    int timeIdle = // Truncate, do not round up		(int) ((timeNow - session.getLastAccessedTime()) / 1000L);	    if (timeIdle >= maxInactiveInterval)		session.expire();	}    }    /**     * Sleep for the duration specified by the <code>checkInterval</code>     * property.     */    private void threadSleep() {	try {	    Thread.sleep(checkInterval * 1000L);	} catch (InterruptedException e) {	    ;	}    }    /**     * Start the background thread that will periodically check for     * session timeouts.     */    private void threadStart() {	if (thread != null)	    return;	threadDone = false;	thread = new Thread(this, threadName);	thread.setDaemon(true);	thread.start();    }    /**     * Stop the background thread that is periodically checking for     * session timeouts.     */    private void threadStop() {	if (thread == null)	    return;	threadDone = true;	thread.interrupt();	try {	    thread.join();	} catch (InterruptedException e) {	    ;	}	thread = null;    }    // ------------------------------------------------------ Background Thread    /**     * The background thread that checks for session timeouts and shutdown.     */    public void run() {	// Loop until the termination semaphore is set	while (!threadDone) {	    threadSleep();	    processExpires();	}    }}

⌨️ 快捷键说明

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