Wrapper (Apache Tomcat 10.1.57 API Documentation)
Description: declaration: package: org.apache.catalina, interface: Wrapper

# Interface Wrapper

All Superinterfaces:
  `Container, Lifecycle`

All Known Implementing Classes:
  `StandardWrapper, Tomcat.ExistingStandardWrapper`

public interface Wrapper extends Container
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.

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`.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Lifecycle

  `Lifecycle.SingleUse`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `ADD_MAPPING_EVENT`
  Container event for adding a wrapper.
  `static final String`
  `REMOVE_MAPPING_EVENT`
  Container event for removing a wrapper.

  ### Fields inherited from interface Container

  `ADD_CHILD_EVENT, ADD_VALVE_EVENT, REMOVE_CHILD_EVENT, REMOVE_VALVE_EVENT`

  ### Fields inherited from interface Lifecycle

  `AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addInitParameter(String name, String value)`
  Add a new servlet initialization parameter for this servlet.
  `void`
  `addMapping(String mapping)`
  Add a mapping associated with the Wrapper.
  `void`
  `addSecurityReference(String name, String link)`
  Add a new security role reference record to the set of records for this servlet.
  `Servlet`
  `allocate()`
  Allocate an initialized instance of this Servlet that is ready to have its `service()` method called.
  `void`
  `deallocate(Servlet servlet)`
  Decrement the allocation count for the servlet instance.
  `String`
  `findInitParameter(String name)`
  Returns the value for the specified initialization parameter name, if any; otherwise return `null`.
  `String[]`
  `findInitParameters()`
  Returns the names of all defined initialization parameters for this servlet.
  `String[]`
  `findMappings()`
  Returns the mappings associated with this wrapper.
  `String`
  `findSecurityReference(String name)`
  Returns the security role link for the specified security role reference name, if any; otherwise return `null`.
  `String[]`
  `findSecurityReferences()`
  Finds all security role references associated with this servlet.
  `long`
  `getAvailable()`
  Returns the available date/time for this servlet, in milliseconds since the epoch.
  `int`
  `getLoadOnStartup()`
  Returns the load-on-startup order value (negative value means load on first call).
  `MultipartConfigElement`
  `getMultipartConfigElement()`
  Returns the multipart configuration for the associated Servlet.
  `String`
  `getRunAs()`
  Returns the run-as identity for this servlet.
  `Servlet`
  `getServlet()`
  Returns the associated Servlet instance.
  `String`
  `getServletClass()`
  Returns the fully qualified servlet class name for this servlet.
  `String[]`
  `getServletMethods()`
  Gets the names of the methods supported by the underlying servlet.
  `void`
  `incrementErrorCount()`
  Increment the error count value used when monitoring.
  `boolean`
  `isAsyncSupported()`
  Does the associated Servlet support async processing?
  `boolean`
  `isEnabled()`
  Is the associated Servlet enabled?
  `boolean`
  `isOverridable()`
  Is the Servlet overridable by a ServletContainerInitializer?
  `boolean`
  `isUnavailable()`
  Returns whether this Servlet is currently unavailable.
  `void`
  `load()`
  Load and initialize an instance of this Servlet, if there is not already at least one initialized instance.
  `void`
  `removeInitParameter(String name)`
  Remove the specified initialization parameter from this Servlet.
  `void`
  `removeMapping(String mapping)`
  Remove a mapping associated with the wrapper.
  `void`
  `removeSecurityReference(String name)`
  Remove any security role reference for the specified role name.
  `void`
  `setAsyncSupported(boolean asyncSupport)`
  Set the async support for the associated Servlet.
  `void`
  `setAvailable(long available)`
  Set the available date/time for this servlet, in milliseconds since the epoch.
  `void`
  `setEnabled(boolean enabled)`
  Sets the enabled attribute for the associated servlet.
  `void`
  `setLoadOnStartup(int value)`
  Set the load-on-startup order value (negative value means load on first call).
  `void`
  `setMultipartConfigElement(MultipartConfigElement multipartConfig)`
  Set the multipart configuration for the associated Servlet.
  `void`
  `setOverridable(boolean overridable)`
  Sets the overridable attribute for this Servlet.
  `void`
  `setRunAs(String runAs)`
  Set the run-as identity for this servlet.
  `void`
  `setServlet(Servlet servlet)`
  Set the associated Servlet instance
  `void`
  `setServletClass(String servletClass)`
  Set the fully qualified servlet class name for this servlet.
  `void`
  `unavailable(UnavailableException unavailable)`
  Process an UnavailableException, marking this Servlet as unavailable for the specified amount of time.
  `void`
  `unload()`
  Unload all initialized instances of this servlet, after calling the `destroy()` method for each instance.

  ### Methods inherited from interface Container

  `addChild, addContainerListener, addPropertyChangeListener, backgroundProcess, findChild, findChildren, findContainerListeners, fireContainerEvent, getAccessLog, getBackgroundProcessorDelay, getCatalinaBase, getCatalinaHome, getCluster, getDomain, getLogger, getLogName, getMBeanKeyProperties, getName, getObjectName, getParent, getParentClassLoader, getPipeline, getRealm, getStartStopThreads, logAccess, removeChild, removeContainerListener, removePropertyChangeListener, setBackgroundProcessorDelay, setCluster, setName, setParent, setParentClassLoader, setRealm, setStartStopThreads`

  ### Methods inherited from interface Lifecycle

  `addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

- ## Field Details

  - ### ADD_MAPPING_EVENT

    static final String ADD_MAPPING_EVENT
    Container event for adding a wrapper.
    See Also:
      - Constant Field Values

  - ### REMOVE_MAPPING_EVENT

    static final String REMOVE_MAPPING_EVENT
    Container event for removing a wrapper.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### getAvailable

    long getAvailable()
    Returns 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.
    Returns:
      the available date/time in milliseconds since the epoch

  - ### setAvailable

    void setAvailable(long available)
    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.
    Parameters:
      `available` - The new available date/time

  - ### getLoadOnStartup

    int getLoadOnStartup()
    Returns the load-on-startup order value (negative value means load on first call).
    Returns:
      the load-on-startup order value

  - ### setLoadOnStartup

    void setLoadOnStartup(int value)
    Set the load-on-startup order value (negative value means load on first call).
    Parameters:
      `value` - New load-on-startup value

  - ### getRunAs

    String getRunAs()
    Returns the run-as identity for this servlet.
    Returns:
      the run-as identity

  - ### setRunAs

    void setRunAs(String runAs)
    Set the run-as identity for this servlet.
    Parameters:
      `runAs` - New run-as identity value

  - ### getServletClass

    String getServletClass()
    Returns the fully qualified servlet class name for this servlet.
    Returns:
      the servlet class name

  - ### setServletClass

    void setServletClass(String servletClass)
    Set the fully qualified servlet class name for this servlet.
    Parameters:
      `servletClass` - Servlet class name

  - ### getServletMethods

    String[] getServletMethods() throws ServletException
    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.
    Returns:
      Array of names of the methods supported by the underlying servlet
    Throws:
      `ServletException` - If the target servlet cannot be loaded

  - ### isUnavailable

    boolean isUnavailable()
    Returns whether this Servlet is currently unavailable.
    Returns:
      `true` if this Servlet is currently unavailable

  - ### getServlet

    Servlet getServlet()
    Returns the associated Servlet instance.
    Returns:
      the associated Servlet instance

  - ### setServlet

    void setServlet(Servlet servlet)
    Set the associated Servlet instance
    Parameters:
      `servlet` - The associated Servlet

  - ### addInitParameter

    void addInitParameter(String name, String value)
    Add a new servlet initialization parameter for this servlet.
    Parameters:
      `name` - Name of this initialization parameter to add
      `value` - Value of this initialization parameter to add

  - ### addMapping

    void addMapping(String mapping)
    Add a mapping associated with the Wrapper.
    Parameters:
      `mapping` - The new wrapper mapping

  - ### addSecurityReference

    void addSecurityReference(String name, String link)
    Add a new security role reference record to the set of records for this servlet.
    Parameters:
      `name` - Role name used within this servlet
      `link` - Role name used within the web application

  - ### allocate

    Servlet allocate() throws ServletException
    Allocate an initialized instance of this Servlet that is ready to have its `service()` method called. The previously initialized instance may be returned immediately.
    Returns:
      a new Servlet instance
    Throws:
      `ServletException` - if the Servlet init() method threw an exception
      `ServletException` - if a loading error occurs

  - ### deallocate

    void deallocate(Servlet servlet) throws ServletException
    Decrement the allocation count for the servlet instance.
    Parameters:
      `servlet` - The servlet to be returned
    Throws:
      `ServletException` - if a deallocation error occurs

  - ### findInitParameter

    String findInitParameter(String name)
    Returns the value for the specified initialization parameter name, if any; otherwise return `null`.
    Parameters:
      `name` - Name of the requested initialization parameter
    Returns:
      the initialization parameter value

  - ### findInitParameters

    String[] findInitParameters()
    Returns the names of all defined initialization parameters for this servlet.
    Returns:
      the initialization parameter names

  - ### findMappings

    String[] findMappings()
    Returns the mappings associated with this wrapper.
    Returns:
      the URL mappings

  - ### findSecurityReference

    String findSecurityReference(String name)
    Returns the security role link for the specified security role reference name, if any; otherwise return `null`.
    Parameters:
      `name` - Security role reference used within this servlet
    Returns:
      the security role link

  - ### findSecurityReferences

    String[] findSecurityReferences()
    Finds all security role references associated with this servlet.
    Returns:
      the array of security role reference names associated with this servlet, if any; otherwise return a zero-length array

  - ### incrementErrorCount

    void incrementErrorCount()
    Increment the error count value used when monitoring.

  - ### load

    void load() throws ServletException
    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.
    Throws:
      `ServletException` - if the Servlet init() method threw an exception or if some other loading problem occurs

  - ### removeInitParameter

    void removeInitParameter(String name)
    Remove the specified initialization parameter from this Servlet.
    Parameters:
      `name` - Name of the initialization parameter to remove

  - ### removeMapping

    void removeMapping(String mapping)
    Remove a mapping associated with the wrapper.
    Parameters:
      `mapping` - The pattern to remove

  - ### removeSecurityReference

    void removeSecurityReference(String name)
    Remove any security role reference for the specified role name.
    Parameters:
      `name` - Security role used within this servlet to be removed

  - ### unavailable

    void unavailable(UnavailableException unavailable)
    Process an UnavailableException, marking this Servlet as unavailable for the specified amount of time.
    Parameters:
      `unavailable` - The exception that occurred, or `null` to mark this Servlet as permanently unavailable

  - ### unload

    void unload() throws ServletException
    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.
    Throws:
      `ServletException` - if an unload error occurs

  - ### getMultipartConfigElement

    MultipartConfigElement getMultipartConfigElement()
    Returns the multipart configuration for the associated Servlet.
    Returns:
      the multipart configuration for the associated Servlet. If no multipart configuration has been defined, then `null` will be returned

  - ### setMultipartConfigElement

    void setMultipartConfigElement(MultipartConfigElement multipartConfig)
    Set the multipart configuration for the associated Servlet. To clear the multipart configuration specify `null` as the new value.
    Parameters:
      `multipartConfig` - The configuration associated with the Servlet

  - ### isAsyncSupported

    boolean isAsyncSupported()
    Does the associated Servlet support async processing? Defaults to `false`.
    Returns:
      `true` if the Servlet supports async

  - ### setAsyncSupported

    void setAsyncSupported(boolean asyncSupport)
    Set the async support for the associated Servlet.
    Parameters:
      `asyncSupport` - the new value

  - ### isEnabled

    boolean isEnabled()
    Is the associated Servlet enabled? Defaults to `true`.
    Returns:
      `true` if the Servlet is enabled

  - ### setEnabled

    void setEnabled(boolean enabled)
    Sets the enabled attribute for the associated servlet.
    Parameters:
      `enabled` - the new value

  - ### isOverridable

    boolean isOverridable()
    Is the Servlet overridable by a ServletContainerInitializer?
    Returns:
      `true` if the Servlet can be overridden in a ServletContainerInitializer

  - ### setOverridable

    void setOverridable(boolean overridable)
    Sets the overridable attribute for this Servlet.
    Parameters:
      `overridable` - the new value