001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Manager.java,v 1.5 2001/07/22 20:13:30 pier Exp $
003: * $Revision: 1.5 $
004: * $Date: 2001/07/22 20:13:30 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 1999 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: * [Additional notices, if required by prior licensing conditions]
061: *
062: */
063:
064: package org.apache.catalina;
065:
066: import java.beans.PropertyChangeListener;
067: import java.io.IOException;
068:
069: /**
070: * A <b>Manager</b> manages the pool of Sessions that are associated with a
071: * particular Container. Different Manager implementations may support
072: * value-added features such as the persistent storage of session data,
073: * as well as migrating sessions for distributable web applications.
074: * <p>
075: * In order for a <code>Manager</code> implementation to successfully operate
076: * with a <code>Context</code> implementation that implements reloading, it
077: * must obey the following constraints:
078: * <ul>
079: * <li>Must implement <code>Lifecycle</code> so that the Context can indicate
080: * that a restart is required.
081: * <li>Must allow a call to <code>stop()</code> to be followed by a call to
082: * <code>start()</code> on the same <code>Manager</code> instance.
083: * </ul>
084: *
085: * @author Craig R. McClanahan
086: * @version $Revision: 1.5 $ $Date: 2001/07/22 20:13:30 $
087: */
088:
089: public interface Manager {
090:
091: // ------------------------------------------------------------- Properties
092:
093: /**
094: * Return the Container with which this Manager is associated.
095: */
096: public Container getContainer();
097:
098: /**
099: * Set the Container with which this Manager is associated.
100: *
101: * @param container The newly associated Container
102: */
103: public void setContainer(Container container);
104:
105: /**
106: * Return the distributable flag for the sessions supported by
107: * this Manager.
108: */
109: public boolean getDistributable();
110:
111: /**
112: * Set the distributable flag for the sessions supported by this
113: * Manager. If this flag is set, all user data objects added to
114: * sessions associated with this manager must implement Serializable.
115: *
116: * @param distributable The new distributable flag
117: */
118: public void setDistributable(boolean distributable);
119:
120: /**
121: * Return descriptive information about this Manager implementation and
122: * the corresponding version number, in the format
123: * <code><description>/<version></code>.
124: */
125: public String getInfo();
126:
127: /**
128: * Return the default maximum inactive interval (in seconds)
129: * for Sessions created by this Manager.
130: */
131: public int getMaxInactiveInterval();
132:
133: /**
134: * Set the default maximum inactive interval (in seconds)
135: * for Sessions created by this Manager.
136: *
137: * @param interval The new default value
138: */
139: public void setMaxInactiveInterval(int interval);
140:
141: // --------------------------------------------------------- Public Methods
142:
143: /**
144: * Add this Session to the set of active Sessions for this Manager.
145: *
146: * @param session Session to be added
147: */
148: public void add(Session session);
149:
150: /**
151: * Add a property change listener to this component.
152: *
153: * @param listener The listener to add
154: */
155: public void addPropertyChangeListener(
156: PropertyChangeListener listener);
157:
158: /**
159: * Construct and return a new session object, based on the default
160: * settings specified by this Manager's properties. The session
161: * id will be assigned by this method, and available via the getId()
162: * method of the returned session. If a new session cannot be created
163: * for any reason, return <code>null</code>.
164: *
165: * @exception IllegalStateException if a new session cannot be
166: * instantiated for any reason
167: */
168: public Session createSession();
169:
170: /**
171: * Return the active Session, associated with this Manager, with the
172: * specified session id (if any); otherwise return <code>null</code>.
173: *
174: * @param id The session id for the session to be returned
175: *
176: * @exception IllegalStateException if a new session cannot be
177: * instantiated for any reason
178: * @exception IOException if an input/output error occurs while
179: * processing this request
180: */
181: public Session findSession(String id) throws IOException;
182:
183: /**
184: * Return the set of active Sessions associated with this Manager.
185: * If this Manager has no active Sessions, a zero-length array is returned.
186: */
187: public Session[] findSessions();
188:
189: /**
190: * Load any currently active sessions that were previously unloaded
191: * to the appropriate persistence mechanism, if any. If persistence is not
192: * supported, this method returns without doing anything.
193: *
194: * @exception ClassNotFoundException if a serialized class cannot be
195: * found during the reload
196: * @exception IOException if an input/output error occurs
197: */
198: public void load() throws ClassNotFoundException, IOException;
199:
200: /**
201: * Remove this Session from the active Sessions for this Manager.
202: *
203: * @param session Session to be removed
204: */
205: public void remove(Session session);
206:
207: /**
208: * Remove a property change listener from this component.
209: *
210: * @param listener The listener to remove
211: */
212: public void removePropertyChangeListener(
213: PropertyChangeListener listener);
214:
215: /**
216: * Save any currently active sessions in the appropriate persistence
217: * mechanism, if any. If persistence is not supported, this method
218: * returns without doing anything.
219: *
220: * @exception IOException if an input/output error occurs
221: */
222: public void unload() throws IOException;
223:
224: }
|