You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/01/20 07:33:39 UTC
cvs commit: jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat Realm.java Request.java Resources.java Response.java Session.java Store.java Valve.java Wrapper.java
craigmcc 00/01/19 22:33:39
Added: proposals/catalina/src/share/org/apache/tomcat Realm.java
Request.java Resources.java Response.java
Session.java Store.java Valve.java Wrapper.java
Log:
Check-in #3 of the basic interfaces for the "Catalina" proposal.
Revision Changes Path
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Realm.java
Index: Realm.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Realm.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.security.Principal;
/**
* A <b>Realm</b> is a read-only facade for an underlying security realm
* used to authenticate individual users, and identify the security roles
* associated with those users. Realms can be attached at any Container
* level, but will typically only be attached to a Context, or higher level,
* Container.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Realm {
// ------------------------------------------------------------- Properties
/**
* Return the Container with which this Realm has been associated.
*/
public Container getContainer();
/**
* Set the Container with which this Realm has been associated.
*
* @param container The associated Container
*/
public void setContainer(Container container);
/**
* Return descriptive information about this Realm implementation and
* the corresponding version number, in the format
* <code><description>/<version></code>.
*/
public String getInfo();
// --------------------------------------------------------- Public Methods
/**
* Return the Principal associated with the specified username and
* credentials, if there is one; otherwise return <code>null</code>.
*
* @param username Username of the Principal to look up
* @param credentials Password or other credentials to use in
* authenticating this username
*/
public Principal authenticate(String username, String credentials);
/**
* Return the Principal associated with the specified username and
* credentials, if there is one; otherwise return <code>null</code>.
*
* @param username Username of the Principal to look up
* @param credentials Password or other credentials to use in
* authenticating this username
*/
public Principal authenticate(String username, byte[] credentials);
/**
* Return <code>true</code> if the specified Principal has the specified
* security role, within the context of this Realm; otherwise return
* <code>false</code>.
*
* @param principal Principal for whom the role is to be checked
* @param role Security role to be checked
*/
public boolean hasRole(Principal principal, String role);
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Request.java
Index: Request.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Request.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.io.InputStream;
import java.io.IOException;
import java.security.Principal;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
/**
* A <b>Request</b> is the Tomcat-internal facade for an
* <code>HttpServletRequest</code> that is to be processed, in order to
* produce a corresponding Response.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Request {
// ------------------------------------------------------------- Properties
/**
* Return the Context within which this Request is being processed.
*/
public Context getContext();
/**
* Set the Context within which this Request is being processed. This
* must be called as soon as the appropriate Context is identified, because
* it identifies the value to be returned by <code>getContextPath()</code>,
* and thus enables parsing of the request URI.
*
* @param context The newly associated Context
*/
public void setContext(Context context);
/**
* Return descriptive information about this Request implementation and
* the corresponding version number, in the format
* <code><description>/<version></code>.
*/
public String getInfo();
/**
* Return the <code>HttpServletRequest</code> for which this object
* is the facade.
*/
public HttpServletRequest getRequest();
/**
* Return the Response with which this Request is associated.
*/
public Response getResponse();
/**
* Set the Response with which this Request is associated.
*
* @param response The new associated response
*/
public void setResponse(Response response);
// --------------------------------------------------------- Public Methods
/**
* Add a Cookie to the set of Cookies associated with this Request.
*
* @param cookie The new cookie
*/
public void addCookie(Cookie cookie);
/**
* Add a Header to the set of Headers associated with this Request.
*
* @param name The new header name
* @param value The new header value
*/
public void addHeader(String name, String value);
/**
* Add a Locale to the set of preferred Locales for this Request. The
* first added Locale will be the first one returned by getLocales().
*
* @param locale The new preferred Locale
*/
public void addLocale(Locale locale);
/**
* Release all object references, and initialize instance variables, in
* preparation for reuse of this object.
*/
public void recycle();
/**
* Set the authentication type used for this request, if any; otherwise
* set the type to <code>null</code>. Typical values are "BASIC",
* "DIGEST", or "SSL".
*
* @param type The authentication type used
*/
public void setAuthType(String type);
/**
* Set the content length associated with this Request.
*
* @param length The new content length
*/
public void setContentLength(int length);
/**
* Set the content type (and optionally the character encoding)
* associated with this Request. For example,
* <code>text/html; charset=ISO-8859-4</code>.
*
* @param type The new content type
*/
public void setContentType(String type);
/**
* Set the input stream associated with this Request. This stream
* will be wrapped by a Reader if <code>getReader()</code> is called.
*
* @param stream The new input stream
*/
public void setInputStream(InputStream stream);
/**
* Set the HTTP request method used for this Request.
*
* @param method The request method
*/
public void setMethod(String method);
/**
* Set the protocol name and version associated with this Request.
*
* @param protocol Protocol name and version
*/
public void setProtocol(String protocol);
/**
* Set the remote IP address associated with this Request. NOTE: This
* value will be used to resolve the value for <code>getRemoteHost()</code>
* if that method is called.
*
* @param remote The remote IP address
*/
public void setRemoteAddr(String remote);
/**
* Set the unparsed request URI for this Request. This value cannot be
* parsed until <code>setContext()</code> has been called. <b>FIXME</b>:
* how and when is parsing initiated?
*
* @param uri The request URI
*/
public void setRequestURI(String uri);
/**
* Set the name of the scheme associated with this request. Typical values
* are <code>http</code>, <code>https</code>, and <code>ftp</code>.
*
* @param scheme The scheme
*/
public void setScheme(String scheme);
/**
* Set the name of the server (virtual host) to process this request.
*
* @param name The server name
*/
public void setServerName(String name);
/**
* Set the port number of the server to process this request.
*
* @param port The server port
*/
public void setServerPort(int port);
/**
* Set the value to be returned by <code>isSecure()</code>
* for this Request.
*
* @param secure The new isSecure value
*/
public void setSecure(boolean secure);
/**
* Set the Principal who has been authenticated for this Request. This
* value is also used to calculate the value to be returned by the
* <code>getRemoteUser()</code> method.
*
* @param principal The user Principal
*/
public void setUserPrincipal(Principal principal);
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Resources.java
Index: Resources.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Resources.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
/**
* A <b>Resources</b> is a generic interface for the resource acquisition
* and lookup methods of the ServletContext interface.
* <p>
* A Resources object is generally attached to a Context, or higher level,
* Container. However, a Connector may also provide a Resources object
* associated with a particular Request, which should be treated by any
* Container processing this request as overriding any Resources object
* normally configured for this Container.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Resources {
// ------------------------------------------------------------- Properties
/**
* Return the Container with which this Resources has been associated.
*/
public Container getContainer();
/**
* Set the Container with which this Resources has been associated.
*
* @param container The associated Container
*/
public void setContainer(Container container);
/**
* Return descriptive information about this Resources implementation and
* the corresponding version number, in the format
* <code><description>/<version></code>.
*/
public String getInfo();
// --------------------------------------------------------- Public Methods
/**
* Return the MIME type of the specified file, or <code>null</code> if
* the MIME type is not known. The MIME type is determined by the
* configuration of the servlet container, and may be specified in a
* web application descriptor. Common MIME types are
* <code>"text/html"</code> and <code>"image/gif"</code>.
*
* @param file Name of the file whose MIME type is to be determined
*/
public String getMimeType(String file);
/**
* Return the real path for a given virtual path. For example, the
* virtual path <code>"/index.html"</code> has a real path of whatever
* file on the server's filesystem would be served by a request for
* <code>"/index.html"</code>.
* <p>
* The real path returned will be in a form appropriate to the computer
* and operating system on which the servlet container is running,
* including the proper path separators. This method returns
* <code>null</code> if the servlet container cannot translate the
* virtual path to a real path for any reason (such as when the content
* is being made available from a <code>.war</code> archive).
*
* @param path The virtual path to be translated
*/
public String getRealPath(String path);
/**
* Return a URL to the resource that is mapped to the specified path.
* The path must begin with a "/" and is interpreted as relative to
* the current context root.
* <p>
* This method allows the Container to make a resource available to
* servlets from any source. Resources can be located on a local or
* remote file system, in a database, or in a <code>.war</code> file.
* <p>
* The servlet container must implement the URL handlers and
* <code>URLConnection</code> objects that are necessary to access
* the resource.
* <p>
* This method returns <code>null</code> if no resource is mapped to
* the pathname.
* <p>
* Some Containers may allow writing to the URL returned by this method,
* using the methods of the URL class.
* <p>
* The resource content is returned directly, so be aware that
* requesting a <code>.jsp</code> page returns the JSP source code.
* Use a <code>RequestDispatcher</code> instead to include results
* of an execution.
* <p>
* This method has a different purpose than
* <code>java.lang.Class.getResource()</code>, which looks up resources
* based on a class loader. This method does not use class loaders.
*
* @param path The path to the desired resource
*
* @exception MalformedURLException if the pathname is not given
* in the correct form
*/
public URL getResource(String path) throws MalformedURLException;
/**
* Return the resource located at the named path as an
* <code>InputStream</code> object.
* <p>
* The data in the <code>InputStream</code> can be of any type or length.
* The path must be specified according to the rules given in
* <code>getResource()</code>. This method returns <code>null</code>
* if no resource exists at the specified path.
* <p>
* Meta-information such as content length and content type that is
* available via the <code>getResource()</code> method is lost when
* using this method.
* <p>
* The servlet container must implement the URL handlers and
* <code>URLConnection</code> objects that are necessary to access
* the resource.
* <p>
* This method is different from
* <code>java.lang.Class.getResourceAsStream()</code>, which uses a
* class loader. This method allows servlet containers to make a
* resource available to a servlet from any location, without using
* a class loader.
*
* @param path The path to the desired resource
*/
public InputStream getResourceAsStream(String path);
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Response.java
Index: Response.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Response.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
/**
* A <b>Response</b> is the Tomcat-internal facade for an
* <code>HttpServletResponse</code> that is to be produced, based on the
* processing of a corresponding Request.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Response {
// ------------------------------------------------------------- Properties
/**
* Return the Context with which this Response is associated.
*/
public Context getContext();
/**
* Set the Context with which this Response is associated. This should
* be called as soon as the appropriate Context is identified.
*
* @param context The associated Context
*/
public void setContext(Context context);
/**
* Return descriptive information about this Response implementation and
* the corresponding version number, in the format
* <code><description>/<version></code>.
*/
public String getInfo();
/**
* Return the Request with which this Response is associated.
*/
public Request getRequest();
/**
* Set the Request with which this Response is associated.
*
* @param request The new associated request
*/
public void setRequest(Request request);
/**
* Return the <code>HttpServletResponse</code> for which this object
* is the facade.
*/
public HttpServletResponse getResponse();
// --------------------------------------------------------- Public Methods
/**
* Ensure that the HTTP headers (and any buffered output) have been
* flushed to the output stream, even if it was never acquired by
* a servlet.
*
* @exception IOException if an input/output error occurs
*/
public void flush() throws IOException;
/**
* Return the content length that was set or calculated for this Response.
*/
public int getContentLength();
/**
* Return the content type that was set or calculated for this response,
* or <code>null</code> if no content type was set.
*/
public String getContentType();
/**
* Return the value for the specified header, or <code>null</code> if this
* header has not been set. If more than one value was added for this
* name, only the first is returned; use getHeaderValues() to retrieve all
* of them.
*
* @param name Header name to look up
*/
public String getHeader(String name);
/**
* Return an enumeration all the header names set for this response, or
* an empty Enumeration if no headers have been set.
*/
public Enumeration getHeaderNames();
/**
* Return an enumeration of all the header values associated with the
* specified header name, or an empty enumeration if there are no such
* header values.
*
* @param name Header name to look up
*/
public Enumeration getHeaderValues(String name);
/**
* Return the HTTP status code associated with this Response.
*/
public int getStatus();
/**
* Release all object references, and initialize instance variables, in
* preparation for reuse of this object.
*/
public void recycle();
/**
* Set the output stream associated with this Response. This stream will
* be wrapped by a PrintWriter if <code>getWriter()</code> is called.
*
* @param stream The new output stream
*/
public void setOutputStream(OutputStream stream);
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Session.java
Index: Session.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Session.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
/**
* A <b>Session</b> is the Tomcat-internal facade for an
* <code>HttpSession</code> that is used to maintain state information
* between requests for a particular user of a web application.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Session {
// ------------------------------------------------------------- Properties
/**
* Return the creation time for this session.
*/
public long getCreationTime();
/**
* Set the creation time for this session. This method is called by the
* Manager when an existing Session instance is reused.
*
* @param time The new creation time
*/
public void setCreationTime(long time);
/**
* Return the session identifier for this session.
*/
public String getId();
/**
* Set the session identifier for this session.
*
* @param id The new session identifier
*/
public void setId(String id);
/**
* Return descriptive information about this Session implementation and
* the corresponding version number, in the format
* <code><description>/<version></code>.
*/
public String getInfo();
/**
* Return the last time the client sent a request associated with this
* session, as the number of milliseconds since midnight, January 1, 1970
* GMT. Actions that your application takes, such as getting or setting
* a value associated with the session, do not affect the access time.
*/
public long getLastAccessedTime();
/**
* Return the Manager within which this Session is valid.
*/
public Manager getManager();
/**
* Set the Manager within which this Session is valid.
*
* @param manager The new Manager
*/
public void setManager(Manager manager);
/**
* Return the maximum time interval, in seconds, between client requests
* before the servlet container will invalidate the session. A negative
* time indicates that the session should never time out.
*/
public int getMaxInactiveInterval();
/**
* Set the maximum time interval, in seconds, between client requests
* before the servlet container will invalidate the session. A negative
* time indicates that the session should never time out.
*
* @param interval The new maximum interval
*/
public void setMaxInactiveInterval(int interval);
/**
* Return the <code>HttpSession</code> for which this object
* is the facade.
*/
public HttpSession getSession();
// --------------------------------------------------------- Public Methods
/**
* Update the accessed time information for this session. This method
* should be called by the context when a request comes in for a particular
* session, even if the application does not reference it.
*/
public void access();
/**
* Perform the internal processing required to invalidate this session,
* without triggering an exception if the session has already expired.
*/
public void expire();
/**
* Release all object references, and initialize instance variables, in
* preparation for reuse of this object.
*/
public void recycle();
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Store.java
Index: Store.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Store.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.io.IOException;
/**
* A <b>Store</b> is the abstraction of a Tomcat component that provides
* persistent storage and loading of Sessions and their associated user data.
* Implementations are free to save and load the Sessions to any media they
* wish, but it is assumed that saved Sessions are persistent across
* server or context restarts.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Store {
// ------------------------------------------------------------- Properties
/**
* Return the number of Sessions present in this Store.
*
* @exception IOException if an input/output error occurs
*/
public int getSize() throws IOException;
/**
* Return descriptive information about this Store implementation and
* the corresponding version number, in the format
* <code><description>/<version></code>.
*/
public String getInfo();
// --------------------------------------------------------- Public Methods
/**
* Return an array containing the session identifiers of all Sessions
* currently saved in this Store. If there are no such Sessions, a
* zero-length array is returned.
*
* @exception IOException if an input/output error occurred
*/
public String[] keys() throws IOException;
/**
* Load and return the Session associated with the specified session
* identifier from this Store, without removing it. If there is no
* such stored Session, return <code>null</code>.
*
* @param id Session identifier of the session to load
*
* @exception ClassNotFoundException if a deserialization error occurs
* @exception IOException if an input/output error occurs
*/
public Session load(String id)
throws ClassNotFoundException, IOException;
/**
* Remove the Session with the specified session identifier from
* this Store, if present. If no such Session is present, this method
* takes no action.
*
* @param id Session identifier of the Session to be removed
*
* @exception IOException if an input/output error occurs
*/
public void remove(String id) throws IOException;
/**
* Save the specified Session into this Store. Any previously saved
* information for the associated session identifier is replaced.
*
* @param session Session to be saved
*
* @exception IOException if an input/output error occurs
*/
public void save(Session session) throws IOException;
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Valve.java
Index: Valve.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Valve.java,v 1.1 2000/01/20 06:33:38 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:38 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import java.io.IOException;
import javax.servlet.ServletException;
/**
* A <b>Valve</b> intercepts request processing prior to, and after, the
* call to a Container's <code>invoke()</code> method. Conceptually, a
* chain of Valves can be associated (in a pipeline) with a particular
* Container.
* <p>
* An individual Valve can either process the request itself, or hand off
* processing to a subsequent Valve in the pipeline, possibly after having
* modified some properties of the Request. Within a Valve implementation,
* you place your functional logic in the <code>invoke()</code> method, which
* is called by the previous Valve in the pipeline (or by the enclosing
* Container in the standard implementation). See the method description
* below for the detailed contracts your <code>invoke()</code> method
* must conform to.
* <p>
* <b>NOTE</b>: The Valve concept was first introduced in the development
* branch of Apache JServ (http://java.apache.org), to provide the ability
* to interject processing logic at any desired Container level. With
* respect to the Catalina proposal, this should be considered an alternative
* design to the originally proposed <code>Interceptor</code> interface.
* With respect to Interceptor, a Valve exhibits the following differences:
* <ul>
* <li>Calls to subsequent Valves in the pipeline are nested on the stack.
* Therefore, local variables (within the <code>invoke()</code> method
* can be used to maintain state information for a particular request
* being handled by a particular thread. With the Interceptor design,
* you must store request-local state in between calls to the
* <code>preService()</code> and <code>postService()</code> methods --
* probably as custom request attributes.
* <li>Due to the nested nature of calls in the pipeline, more stack space
* is consumed for the Valve design than the Interceptor design. In
* practice, this is unlikely to be a significant issue.
* <li>Valves can intercept exceptions thrown by subsequent Valves, or the
* processing logic of subordinate Containers. This allows a Valve to
* allocate resources, call the subordinate logic, and reliably release
* those resources, even in the face of exceptions. This is not
* possible with the currently specified Interceptor design.
* <li>Advanced Valve implementations may elect to replace one or both of the
* arguments to <code>invoke()</code> (the Request being processed and the
* Response being produced). This would allow a Valve to implement post
* processing filters, if desired, before producing the final response
* returned to the caller of this Valve.
* </ul>
* <p>
* <b>HISTORICAL NOTE</b>: The "Valve" name was assigned to this concept
* because a valve is what you use in a real world pipeline to control and/or
* modify flows through it.
*
* @author Craig R. McClanahan
* @author Gunnar Rjnning
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:38 $
*/
public interface Valve {
//-------------------------------------------------------------- Properties
/**
* Return the Container to which this Valve was added, if any.
*/
public Container getContainer();
/**
* Set the Container to which this Valve is being added. This method
* must be called from within the <code>addValve()</code> method of
* the specified Container. This Valve may refuse to become attached
* to the specified Container by throwing an exception.
*
* @param container Container to which this Valve is being added
*
* @exception IllegalArgumentException if this Valve refused to be
* attached to the specified Container
* @exception IllegalStateException if this Valve is already
* attached to a different Container.
*/
public void setContainer(Container container);
/**
* Return descriptive information about this Valve implementation.
*/
public String getInfo();
//---------------------------------------------------------- Public Methods
/**
* The method that is called when it is this Valve's turn to process a
* particular request/response combination. A Valve <b>MAY</b> do any
* of the following things, in this order:
* <ul>
* <li>Examine the properties of the incoming Request (and the underlying
* HttpServletRequest that it represents).
* <li>Modify the properties of the incoming Request.
* <li>Create a completed Response, in the same manner that a servlet
* would do so.
* <li>If a completed Response was not created, pass this Request and
* Response on to the next Valve in this pipeline, in an
* implementation-dependent manner. If your Valve extends the
* standard base class
* (<code>org.apache.tomcat.core.ValveBase</code>),
* this is done by calling <code>invokeNext()</code>.
* <li>Examine, but not modify, the properties of the outgoing Response,
* as well as the final Request, which might have been modified by a
* subsequent Valve, or by execution of a call to
* <code>RequestDispatcher.forward()</code> within the servlet
* that processed this Request.
* </ul>
* <p>
* A Valve <b>MUST NOT</b> do any of the following things:
* <ul>
* <li>Change request properties that have already been used to direct
* the flow of processing control for this request (for instance,
* trying to change the virtual host to which a Request should be
* sent from a pipeline attached to a Host or Context in the
* standard implementation).
* <li>Create a completed Response <strong>AND</strong> pass this
* Request and Response on to the next Valve in the pipeline.
* <li>Consume bytes from the input stream associated with the Request.
* <li>Append bytes to the output stream associated with
* the Response.
* <li>Modify the HTTP headers included with the Response.
* </ul>
* <p>
*
* @param request The servlet request to be processed
* @param response The servlet response to be created
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void invoke(Request request, Response response)
throws IOException, ServletException;
}
1.1 jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Wrapper.java
Index: Wrapper.java
===================================================================
/*
* $Header: /home/cvs/jakarta-tomcat/proposals/catalina/src/share/org/apache/tomcat/Wrapper.java,v 1.1 2000/01/20 06:33:39 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2000/01/20 06:33:39 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/
package org.apache.tomcat;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
/**
* A <b>Wrapper</b> is a Container that represents an individual servlet
* definition from the deployment descriptor of the web application. It
* provides a convenient mechanism to use Interceptors that see every single
* request to the servlet represented by this definition.
* <p>
* Implementations of Wrapper are responsible for managing the servlet life
* cycle for their underlying servlet class, including calling init() and
* destroy() at appropriate times, as well as respecting the existence of
* the SingleThreadModel declaration on the servlet class itself.
* <p>
* The parent Container attached to a Wrapper will generally be an
* implementation of Context, representing the servlet context (and
* therefore the web application) within which this servlet executes.
* <p>
* Child Containers are not allowed on Wrapper implementations, so the
* <code>addChild()</code> method should throw an
* <code>IllegalArgumentException</code>.
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2000/01/20 06:33:39 $
*/
public interface Wrapper extends Container {
// ------------------------------------------------------------- Properties
/**
* Return the servlet configuration definitions for this servlet.
*/
public WrapperConfig getConfiguration();
/**
* Set the servlet configuration definitions for this servlet.
*
* @param config The new servlet configuration definitions
*/
public void setConfiguration(WrapperConfig config);
// --------------------------------------------------------- Public Methods
/**
* Add a new security role reference record to the set of records for
* this servlet.
*
* @param name Role name used within this servlet
* @param link Role name used within the web application
* @param description Description of this security role reference
*/
public void addSecurityRole(String name, String link,
String description);
/**
* Allocate an initialized instance of this Servlet that is ready to have
* its <code>service()</code> method called. If the servlet class does
* not implement <code>SingleThreadModel</code>, the (only) initialized
* instance may be returned immediately. If the servlet class implements
* <code>SingleThreadModel</code>, the Wrapper implementation must ensure
* that this instance is not allocated again until it is deallocated by a
* call to <code>deallocate()</code>.
* <p>
* <b>FIXME: Provide a way to avoid waiting forever.</b>
*/
public Servlet allocate();
/**
* Return this previously allocated servlet to the pool of available
* instances. If this servlet class does not implement SingleThreadModel,
* no action is actually required.
*
* @param servlet The servlet to be returned
*/
public void deallocate(Servlet servlet);
/**
* Return the security role reference description associated with the
* specified role name, if any; otherwise return <code>null</code>.
*
* @param name Security role used within this servlet
*/
public String findSecurityDescription(String name);
/**
* Return the security role link associated with the specified role name,
* if any. If no mapping has been defined, the role name itself is
* returned.
*
* @param name Security role used within this servlet
*/
public String findSecurityLink(String name);
/**
* Return the set of security role reference names associated with
* this servlet, if any; otherwise return a zero-length array.
*/
public String[] findSecurityNames();
/**
* Load and initialize an instance of this servlet, if there is not already
* at least one initialized instance. This can be used, for example, to
* load servlets that are marked in the deployment descriptor to be loaded
* at server startup time.
*
* @exception ServletException if thrown by the init() method of the
* loaded servlet
*/
public void load() throws ServletException;
/**
* Remove any security role reference for the specified role name.
*
* @param name Security role used within this servlet to be removed
*/
public void removeSecurityRole(String name);
/**
* Unload all initialized instances of this servlet, after calling the
* <code>destroy()</code> method for each instance. This can be used,
* for example, prior to shutting down the entire servlet engine, or
* prior to reloading all of the classes from the Loader associated with
* our Loader's repository.
*/
public void unload();
}