001: /*
002: * Enhydra Java Application Server Project
003: *
004: * The contents of this file are subject to the Enhydra Public License
005: * Version 1.1 (the "License"); you may not use this file except in
006: * compliance with the License. You may obtain a copy of the License on
007: * the Enhydra web site ( http://www.enhydra.org/ ).
008: *
009: * Software distributed under the License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
011: * the License for the specific terms governing rights and limitations
012: * under the License.
013: *
014: * The Initial Developer of the Enhydra Application Server is Lutris
015: * Technologies, Inc. The Enhydra Application Server and portions created
016: * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
017: * All Rights Reserved.
018: *
019: * Contributor(s):
020: *
021: * $Id: SimpleServletSessionManager.java,v 1.2 2006-06-15 13:44:07 sinisa Exp $
022: *
023: * formatted with JxBeauty (c) johann.langhofer@nextra.at
024: */
025:
026: package com.lutris.appserver.server.sessionEnhydra;
027:
028: import java.util.Date;
029:
030: import javax.servlet.http.HttpSession;
031:
032: import com.lutris.appserver.server.Application;
033: import com.lutris.appserver.server.httpPresentation.HttpPresentationComms;
034: import com.lutris.appserver.server.session.Session;
035: import com.lutris.appserver.server.session.SessionException;
036: import com.lutris.logging.LogChannel;
037: import com.lutris.util.Config;
038: import com.lutris.util.ConfigException;
039:
040: /**
041: * This session manager extends <code>StandardSessionManager</code>
042: * it obtains SessionId from the servletContainer and uses it to
043: * create a new Enhydra session
044: *
045: * @version $Revision: 1.2 $
046: * @author DT
047: */
048: public class SimpleServletSessionManager extends StandardSessionManager {
049:
050: public SimpleServletSessionManager() {
051: super ();
052: }
053:
054: /**
055: * Creates a new <code>SessionManager</code> object.
056: * This constructor will first looks for the session manager
057: * configuration parameters that have the specified configuration
058: * prefix prepended to the standard session manager configuration
059: * option.<p>
060: *
061: * @param app the application associate with this session
062: * manager.
063: * @param config Object parsed from configuration file. This should be
064: * for the section constaining the session manager configuration.
065: * @param sessionMgrLogChannel If not <CODE>null</CODE>, channel to
066: * log debugging information to.
067: * @exception ConfigException signifies a problem in the
068: * configuration file.
069: * @exception SessionException
070: * if all classes (Home and UserTable) couldn't be loaded
071: * by the session manager.
072: */
073: public SimpleServletSessionManager(Application application,
074: Config config, LogChannel sessionMgrLogChannel)
075: throws ConfigException, SessionException {
076: super (application, config, sessionMgrLogChannel);
077: }
078:
079: /**
080: * Creates a new <code>SessionManager</code> object.
081: * This constructor will first looks for the session manager
082: * configuration parameters that have the specified configuration
083: * prefix prepended to the standard session manager configuration
084: * option.<p>
085: *
086: * @param app the ClassLoader associate with this application.
087: * @param config Object parsed from configuration file. This should be
088: * for the section constaining the session manager configuration.
089: * @param sessionMgrLogChannel If not <CODE>null</CODE>, channel to
090: * log debugging information to.
091: * @exception ConfigException signifies a problem in the
092: * configuration file.
093: * @exception SessionException
094: * if all classes (Home and UserTable) couldn't be loaded
095: * by the session manager.
096: */
097: public SimpleServletSessionManager(ClassLoader classLoader,
098: Config config, LogChannel sessionMgrLogChannel)
099: throws ConfigException, SessionException {
100: super (classLoader, config, sessionMgrLogChannel);
101: }
102:
103: /**
104: * Create a new <CODE>Session</CODE> object.
105: *
106: * @param comms the HttpPresentationComms object used for geting existing
107: * Session object ID.
108: * @return session The new <code>Session</code> object.
109: * @exception SessionException
110: * if the session cannot be created.
111: * @see Session
112: */
113: public Session createSession(HttpPresentationComms comms)
114: throws SessionException {
115: Session session = null;
116: HttpSession servletSession = comms.request
117: .getHttpServletRequest().getSession();
118: String servletSessionId = servletSession.getId();
119: session = sessionHome.createSession(servletSessionId);
120: int currentSize = sessionHome.size();
121: if (currentSize > maxSessions) {
122: maxSessions = currentSize;
123: maxSessionsDate = new Date();
124: }
125: return session;
126: }
127: }
|