org.apache.catalina.Wrapper Maven / Gradle / Ivy
Show all versions of payara-micro Show documentation
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.catalina;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
/**
* A Wrapper 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.
*
* 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.
*
* 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.
*
* Child Containers are not allowed on Wrapper implementations, so the
* addChild()
method should throw an
* IllegalArgumentException
.
*
* @author Craig R. McClanahan
* @version $Revision: 1.3.6.1 $ $Date: 2008/04/17 18:37:01 $
*/
public interface Wrapper extends Container {
// ------------------------------------------------------------- Properties
/**
* Return the available date/time for this servlet, in milliseconds since
* the epoch. If this date/time is in the future, any request for this
* servlet will return an SC_SERVICE_UNAVAILABLE error. If it is zero,
* the servlet is currently available. A value equal to Long.MAX_VALUE
* is considered to mean that unavailability is permanent.
*/
public long getAvailable();
/**
* Set the available date/time for this servlet, in milliseconds since the
* epoch. If this date/time is in the future, any request for this servlet
* will return an SC_SERVICE_UNAVAILABLE error. A value equal to
* Long.MAX_VALUE is considered to mean that unavailability is permanent.
*
* @param available The new available date/time
*/
public void setAvailable(long available);
/**
* Return the context-relative URI of the JSP file for this servlet.
*/
public String getJspFile();
/**
* Set the context-relative URI of the JSP file for this servlet.
*
* @param jspFile JSP file URI
*/
public void setJspFile(String jspFile);
/**
* Return the load-on-startup order value (negative value means
* load on first call).
*/
public int getLoadOnStartup();
/**
* Set the load-on-startup order value (negative value means
* load on first call).
*
* @param value New load-on-startup value
*/
public void setLoadOnStartup(int value);
/**
* Return the run-as identity for this servlet.
*/
public String getRunAs();
/**
* Set the run-as identity for this servlet.
*
* @param runAs New run-as identity value
*/
public void setRunAs(String runAs);
/**
* Return the fully qualified servlet class name for this servlet.
*/
public String getServletClassName();
/**
* Gets the name of the wrapped servler.
*/
public String getServletName();
/**
* Set the fully qualified servlet class name for this servlet.
*
* @param className Servlet class name
*/
public void setServletClassName(String className);
/**
* Sets the class object from which this servlet will be instantiated.
*
* @param servletClass the class object from which the servlet will be
* instantiated
*/
public void setServletClass(Class servletClass);
/**
* Gets the names of the methods supported by the underlying servlet.
*
* This is the same set of methods included in the Allow response header
* in response to an OPTIONS request method processed by the underlying
* servlet.
*
* @return Array of names of the methods supported by the underlying
* servlet
*/
public String[] getServletMethods() throws ServletException;
/**
* Is this servlet currently unavailable?
*/
public boolean isUnavailable();
/**
* Sets the description of this servlet.
*/
public void setDescription(String description);
/**
* Gets the description of this servlet.
*/
public String getDescription();
/**
* Sets the multipart location
*/
public void setMultipartLocation(String location);
/**
* Gets the multipart location
*/
public String getMultipartLocation();
/**
* Sets the multipart max-file-size
*/
public void setMultipartMaxFileSize(long maxFileSize);
/**
* Gets the multipart max-file-size
*/
public long getMultipartMaxFileSize();
/**
* Sets the multipart max-request-size
*/
public void setMultipartMaxRequestSize(long maxRequestSize);
/**
* Gets the multipart max-request-Size
*/
public long getMultipartMaxRequestSize();
/**
* Sets the multipart file-size-threshold
*/
public void setMultipartFileSizeThreshold(int fileSizeThreshold);
/**
* Gets the multipart file-size-threshol
*/
public int getMultipartFileSizeThreshold();
// --------------------------------------------------------- Public Methods
/**
* Add a new servlet initialization parameter for this servlet.
*
* @param name Name of this initialization parameter to add
* @param value Value of this initialization parameter to add
*/
public void addInitParameter(String name, String value);
/**
* Add a new listener interested in InstanceEvents.
*
* @param listener The new listener
*/
public void addInstanceListener(InstanceListener listener);
/**
* Add a mapping associated with the Wrapper.
*
* @param mapping The new wrapper mapping
*/
public void addMapping(String mapping);
/**
* 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
*/
public void addSecurityReference(String name, String link);
/**
* Allocate an initialized instance of this Servlet that is ready to have
* its service()
method called. If the servlet class does
* not implement SingleThreadModel
, the (only) initialized
* instance may be returned immediately. If the servlet class implements
* SingleThreadModel
, the Wrapper implementation must ensure
* that this instance is not allocated again until it is deallocated by a
* call to deallocate()
.
*
* @exception ServletException if the servlet init() method threw
* an exception
* @exception ServletException if a loading error occurs
*/
public Servlet allocate() throws ServletException;
/**
* 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
*
* @exception ServletException if a deallocation error occurs
*/
public void deallocate(Servlet servlet) throws ServletException;
/**
* Return the value for the specified initialization parameter name,
* if any; otherwise return null
.
*
* @param name Name of the requested initialization parameter
*/
public String findInitParameter(String name);
/**
* Return the names of all defined initialization parameters for this
* servlet.
*/
public String[] findInitParameters();
/**
* Return the mappings associated with this wrapper.
*/
public String[] findMappings();
/**
* Return the security role link for the specified security role
* reference name, if any; otherwise return null
.
*
* @param name Security role reference used within this servlet
*/
public String findSecurityReference(String name);
/**
* Return the set of security role reference names associated with
* this servlet, if any; otherwise return a zero-length array.
*/
public String[] findSecurityReferences();
/**
* 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 the servlet init() method threw
* an exception
* @exception ServletException if some other loading problem occurs
*/
public void load() throws ServletException;
/**
* Remove the specified initialization parameter from this servlet.
*
* @param name Name of the initialization parameter to remove
*/
public void removeInitParameter(String name);
/**
* Remove a listener no longer interested in InstanceEvents.
*
* @param listener The listener to remove
*/
public void removeInstanceListener(InstanceListener listener);
/**
* Remove a mapping associated with the wrapper.
*
* @param mapping The pattern to remove
*/
public void removeMapping(String mapping);
/**
* Remove any security role reference for the specified role name.
*
* @param name Security role used within this servlet to be removed
*/
public void removeSecurityReference(String name);
/**
* Process an UnavailableException, marking this servlet as unavailable
* for the specified amount of time.
*
* @param unavailable The exception that occurred, or null
* to mark this servlet as permanently unavailable
*/
public void unavailable(UnavailableException unavailable);
/**
* Unload all initialized instances of this servlet, after calling the
* destroy()
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.
*
* @exception ServletException if an unload error occurs
*/
public void unload() throws ServletException;
/**
* Configures the wrapped servlet as either supporting or not supporting
* asynchronous operations.
*
* @param isAsyncSupported true if the wrapped servlet supports
* asynchronous operations, false otherwise
*/
public void setIsAsyncSupported(boolean isAsyncSupported);
/**
* Checks if the wrapped servlet has been annotated or flagged in the
* deployment descriptor as being able to support asynchronous operations.
*
* @return true if the wrapped servlet supports async operations, and
* false otherwise
*/
public boolean isAsyncSupported();
}