jakarta.servlet.ServletContext Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 jakarta.servlet;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.EventListener;
import java.util.Map;
import java.util.Set;
import jakarta.servlet.descriptor.JspConfigDescriptor;
/**
* Defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME
* type of a file, dispatch requests, or write to a log file.
*
* There is one context per "web application" per Java Virtual Machine. (A "web application" is a collection of servlets
* and content installed under a specific subset of the server's URL namespace such as /catalog
and
* possibly installed via a .war
file.)
*
* In the case of a web application marked "distributed" in its deployment descriptor, there will be one context
* instance for each virtual machine. In this situation, the context cannot be used as a location to share global
* information (because the information won't be truly global). Use an external resource like a database instead.
*
* The ServletContext
object is contained within the {@link ServletConfig} object, which the Web server
* provides the servlet when the servlet is initialized.
*
* @see Servlet#getServletConfig
* @see ServletConfig#getServletContext
*/
public interface ServletContext {
/**
* The name of the ServletContext attribute that holds the temporary file location for the web application.
*/
String TEMPDIR = "jakarta.servlet.context.tempdir";
/**
* The name of the ServletContext attribute that holds the ordered list of web fragments for this web application.
*
* @since Servlet 3.0
*/
String ORDERED_LIBS = "jakarta.servlet.context.orderedLibs";
/**
* Return the main path associated with this context.
*
* @return The main context path
*
* @since Servlet 2.5
*/
String getContextPath();
/**
* Returns a ServletContext
object that corresponds to a specified URL on the server.
*
* This method allows servlets to gain access to the context for various parts of the server, and as needed obtain
* {@link RequestDispatcher} objects from the context. The given path must be begin with "/", is interpreted
* relative to the server's document root and is matched against the context roots of other web applications hosted
* on this container.
*
* In a security conscious environment, the servlet container may return null
for a given URL.
*
* @param uripath a String
specifying the context path of another web application in the container.
*
* @return the ServletContext
object that corresponds to the named URL, or null if either none exists
* or the container wishes to restrict this access.
*
* @see RequestDispatcher
*/
ServletContext getContext(String uripath);
/**
* Returns the major version of the Java Servlet API that this servlet container supports. All implementations that
* comply with Version 6.0 must have this method return the integer 6.
*
* @return 6
*/
int getMajorVersion();
/**
* Returns the minor version of the Servlet API that this servlet container supports. All implementations that
* comply with Version 6.0 must have this method return the integer 0.
*
* @return 0
*/
int getMinorVersion();
/**
* Obtain the major version of the servlet specification for which this web application is implemented.
*
* @return The major version declared in web.xml
*
* @since Servlet 3.0
*/
int getEffectiveMajorVersion();
/**
* Obtain the minor version of the servlet specification for which this web application is implemented.
*
* @return The minor version declared in web.xml
*
* @since Servlet 3.0
*/
int getEffectiveMinorVersion();
/**
* Returns the MIME type of the specified file, or null
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 deployment
* descriptor. Common MIME types are "text/html"
and "image/gif"
.
*
* @param file a String
specifying the name of a file
*
* @return a String
specifying the file's MIME type
*/
String getMimeType(String file);
/**
* Returns a directory-like listing of all the paths to resources within the web application whose longest sub-path
* matches the supplied path argument. Paths indicating subdirectory paths end with a '/'. The returned paths are
* all relative to the root of the web application and have a leading '/'. For example, for a web application
* containing
*
* /welcome.html
* /catalog/index.html
* /catalog/products.html
* /catalog/offers/books.html
* /catalog/offers/music.html
* /customer/login.jsp
* /WEB-INF/web.xml
* /WEB-INF/classes/com.acme.OrderServlet.class,
*
* getResourcePaths("/") returns {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}
* getResourcePaths("/catalog/") returns {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/"}.
*
* @param path the partial path used to match the resources, which must start with a /
*
* @return a Set containing the directory listing, or null if there are no resources in the web application whose
* path begins with the supplied path.
*
* @since Servlet 2.3
*/
Set getResourcePaths(String path);
/**
* Returns a URL to the resource that is mapped to a specified path. The path must begin with a "/" and is
* interpreted as relative to the current context root.
*
* This method allows the servlet 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 .war
file.
*
* The servlet container must implement the URL handlers and URLConnection
objects that are necessary
* to access the resource.
*
* This method returns null
if no resource is mapped to the pathname.
*
* Some containers may allow writing to the URL returned by this method using the methods of the URL class.
*
* The resource content is returned directly, so be aware that requesting a .jsp
page returns the JSP
* source code. Use a RequestDispatcher
instead to include results of an execution.
*
* This method has a different purpose than java.lang.Class.getResource
, which looks up resources based
* on a class loader. This method does not use class loaders.
*
* @param path a String
specifying the path to the resource
*
* @return the resource located at the named path, or null
if there is no resource at that path
*
* @exception MalformedURLException if the pathname is not given in the correct form
*/
URL getResource(String path) throws MalformedURLException;
/**
* Returns the resource located at the named path as an InputStream
object.
*
* The data in the InputStream
can be of any type or length. The path must be specified according to
* the rules given in getResource
. This method returns null
if no resource exists at the
* specified path.
*
* Meta-information such as content length and content type that is available via getResource
method is
* lost when using this method.
*
* The servlet container must implement the URL handlers and URLConnection
objects necessary to access
* the resource.
*
* This method is different from java.lang.Class.getResourceAsStream
, 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 a String
specifying the path to the resource
*
* @return the InputStream
returned to the servlet, or null
if no resource exists at the
* specified path
*/
InputStream getResourceAsStream(String path);
/**
* Returns a {@link RequestDispatcher} object that acts as a wrapper for the resource located at the given path. A
* RequestDispatcher
object can be used to forward a request to the resource or to include the resource
* in a response. The resource can be dynamic or static.
*
* The pathname must begin with a "/" and is interpreted as relative to the current context root. Use
* getContext
to obtain a RequestDispatcher
for resources in foreign contexts. This method
* returns null
if the ServletContext
cannot return a RequestDispatcher
.
*
* @param path a String
specifying the pathname to the resource
*
* @return a RequestDispatcher
object that acts as a wrapper for the resource at the specified path, or
* null
if the ServletContext
cannot return a RequestDispatcher
*
* @see RequestDispatcher
* @see ServletContext#getContext
*/
RequestDispatcher getRequestDispatcher(String path);
/**
* Returns a {@link RequestDispatcher} object that acts as a wrapper for the named servlet.
*
* Servlets (and JSP pages also) may be given names via server administration or via a web application deployment
* descriptor. A servlet instance can determine its name using {@link ServletConfig#getServletName}.
*
* This method returns null
if the ServletContext
cannot return a
* RequestDispatcher
for any reason.
*
* @param name a String
specifying the name of a servlet to wrap
*
* @return a RequestDispatcher
object that acts as a wrapper for the named servlet, or
* null
if the ServletContext
cannot return a RequestDispatcher
*
* @see RequestDispatcher
* @see ServletContext#getContext
* @see ServletConfig#getServletName
*/
RequestDispatcher getNamedDispatcher(String name);
/**
* Writes the specified message to a servlet log file, usually an event log. The name and type of the servlet log
* file is specific to the servlet container.
*
* @param msg a String
specifying the message to be written to the log file
*/
void log(String msg);
/**
* Writes an explanatory message and a stack trace for a given Throwable
exception to the servlet log
* file. The name and type of the servlet log file is specific to the servlet container, usually an event log.
*
* @param message a String
that describes the error or exception
* @param throwable the Throwable
error or exception
*/
void log(String message, Throwable throwable);
/**
* Returns a String
containing the real path for a given virtual path. For example, the path
* "/index.html" returns the absolute file path on the server's filesystem would be served by a request for
* "http://host/contextPath/index.html", where contextPath is the context path of this ServletContext..
*
* 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 null
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 .war
archive).
*
* @param path a String
specifying a virtual path
*
* @return a String
specifying the real path, or null if the translation cannot be performed
*/
String getRealPath(String path);
/**
* Returns the name and version of the servlet container on which the servlet is running.
*
* The form of the returned string is servername/versionnumber. For example, the JavaServer Web
* Development Kit may return the string JavaServer Web Dev Kit/1.0
.
*
* The servlet container may return other optional information after the primary string in parentheses, for example,
* JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)
.
*
* @return a String
containing at least the servlet container name and version number
*/
String getServerInfo();
/**
* Returns a String
containing the value of the named context-wide initialization parameter, or
* null
if the parameter does not exist.
*
* This method can make available configuration information useful to an entire "web application". For example, it
* can provide a web site administrator's email address or the name of a system that holds critical data.
*
* @param name a String
containing the name of the parameter whose value is requested
*
* @return a String
containing the value of the initialization parameter
*
* @throws NullPointerException If the provided parameter name is null
*
* @see ServletConfig#getInitParameter
*/
String getInitParameter(String name);
/**
* Returns the names of the context's initialization parameters as an Enumeration
of
* String
objects, or an empty Enumeration
if the context has no initialization
* parameters.
*
* @return an Enumeration
of String
objects containing the names of the context's
* initialization parameters
*
* @see ServletConfig#getInitParameter
*/
Enumeration getInitParameterNames();
/**
* Set the given initialisation parameter to the given value.
*
* @param name Name of initialisation parameter
* @param value Value for initialisation parameter
*
* @return true
if the call succeeds or false
if the call fails because an initialisation
* parameter with the same name has already been set
*
* @throws IllegalStateException If initialisation of this ServletContext has already completed
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws NullPointerException If the provided parameter name is null
*
* @since Servlet 3.0
*/
boolean setInitParameter(String name, String value);
/**
* Returns the servlet container attribute with the given name, or null
if there is no attribute by
* that name. An attribute allows a servlet container to give the servlet additional information not already
* provided by this interface. See your server documentation for information about its attributes. A list of
* supported attributes can be retrieved using getAttributeNames
.
*
* The attribute is returned as a java.lang.Object
or some subclass. Attribute names should follow the
* same convention as package names. The Jakarta EE platform reserves names matching jakarta.*
.
*
* @param name a String
specifying the name of the attribute
*
* @return an Object
containing the value of the attribute, or null
if no attribute exists
* matching the given name
*
* @throws NullPointerException If the provided attribute name is null
*
* @see ServletContext#getAttributeNames
*/
Object getAttribute(String name);
/**
* Returns an Enumeration
containing the attribute names available within this servlet context. Use the
* {@link #getAttribute} method with an attribute name to get the value of an attribute.
*
* @return an Enumeration
of attribute names
*
* @see #getAttribute
*/
Enumeration getAttributeNames();
/**
* Binds an object to a given attribute name in this servlet context. If the name specified is already used for an
* attribute, this method will replace the attribute with the new to the new attribute.
*
* If listeners are configured on the ServletContext
the container notifies them accordingly.
*
* If a null value is passed, the effect is the same as calling removeAttribute()
.
*
* Attribute names should follow the same convention as package names. The Jakarta EE platform reserves names
* matching jakarta.*
.
*
* @param name a String
specifying the name of the attribute
* @param object an Object
representing the attribute to be bound
*
* @throws NullPointerException If the provided attribute name is null
*/
void setAttribute(String name, Object object);
/**
* Removes the attribute with the given name from the servlet context. After removal, subsequent calls to
* {@link #getAttribute} to retrieve the attribute's value will return null
.
*
* If listeners are configured on the ServletContext
the container notifies them accordingly.
*
* @param name a String
specifying the name of the attribute to be removed
*/
void removeAttribute(String name);
/**
* Returns the name of this web application corresponding to this ServletContext as specified in the deployment
* descriptor for this web application by the display-name element.
*
* @return The name of the web application or null if no name has been declared in the deployment descriptor.
*
* @since Servlet 2.3
*/
String getServletContextName();
/**
* Register a servlet implementation for use in this ServletContext.
*
* @param servletName The name of the servlet to register
* @param className The implementation class for the servlet
*
* @return The registration object that enables further configuration
*
* @throws IllegalStateException If the context has already been initialised
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
ServletRegistration.Dynamic addServlet(String servletName, String className);
/**
* Register a servlet instance for use in this ServletContext.
*
* @param servletName The name of the servlet to register
* @param servlet The Servlet instance to register
*
* @return The registration object that enables further configuration
*
* @throws IllegalStateException If the context has already been initialised
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet);
/**
* Add servlet to the context.
*
* @param servletName Name of servlet to add
* @param servletClass Class of servlet to add
*
* @return null
if the servlet has already been fully defined, else a
* {@link jakarta.servlet.ServletRegistration.Dynamic} object that can be used to further configure the
* servlet
*
* @throws IllegalStateException If the context has already been initialised
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
ServletRegistration.Dynamic addServlet(String servletName, Class extends Servlet> servletClass);
/**
* Add a JSP to the context.
*
* @param jspName The servlet name under which this JSP file should be registered
* @param jspFile The path, relative to the web application root, for the JSP file to be used for this servlet
*
* @return a {@link jakarta.servlet.ServletRegistration.Dynamic} object that can be used to further configure the
* servlet
*
* @since Servlet 4.0
*/
ServletRegistration.Dynamic addJspFile(String jspName, String jspFile);
/**
* Create an Servlet instance using the given class. The instance is just created. No initialisation occurs.
*
* @param The type for the given class
* @param c The the class for which an instance should be created
*
* @return The created Servlet instance.
*
* @throws ServletException If the servlet instance cannot be created.
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
T createServlet(Class c) throws ServletException;
/**
* Obtain the details of the named servlet.
*
* @param servletName The name of the Servlet of interest
*
* @return The registration details for the named Servlet or null
if no Servlet has been registered
* with the given name
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
ServletRegistration getServletRegistration(String servletName);
/**
* Obtain a Map of servlet names to servlet registrations for all servlets registered with this context.
*
* @return A Map of servlet names to servlet registrations for all servlets registered with this context
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
Map getServletRegistrations();
/**
* Add filter to context.
*
* @param filterName Name of filter to add
* @param className Name of filter class
*
* @return null
if the filter has already been fully defined, else a
* {@link jakarta.servlet.FilterRegistration.Dynamic} object that can be used to further configure the
* filter
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalStateException If the context has already been initialised
*
* @since Servlet 3.0
*/
FilterRegistration.Dynamic addFilter(String filterName, String className);
/**
* Add filter to context.
*
* @param filterName Name of filter to add
* @param filter Filter to add
*
* @return null
if the filter has already been fully defined, else a
* {@link jakarta.servlet.FilterRegistration.Dynamic} object that can be used to further configure the
* filter
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalStateException If the context has already been initialised
*
* @since Servlet 3.0
*/
FilterRegistration.Dynamic addFilter(String filterName, Filter filter);
/**
* Add filter to context.
*
* @param filterName Name of filter to add
* @param filterClass Class of filter to add
*
* @return null
if the filter has already been fully defined, else a
* {@link jakarta.servlet.FilterRegistration.Dynamic} object that can be used to further configure the
* filter
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalStateException If the context has already been initialised
*
* @since Servlet 3.0
*/
FilterRegistration.Dynamic addFilter(String filterName, Class extends Filter> filterClass);
/**
* Create a Filter instance using the given class. The instance is just created. No initialisation occurs.
*
* @param The type for the given class
* @param c The the class for which an instance should be created
*
* @return The created Filter instance.
*
* @throws ServletException If the Filter instance cannot be created
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
T createFilter(Class c) throws ServletException;
/**
* TODO SERVLET3 - Add comments
*
* @param filterName TODO
*
* @return TODO
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
FilterRegistration getFilterRegistration(String filterName);
/**
* @return TODO
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0 TODO SERVLET3 - Add comments
*/
Map getFilterRegistrations();
/**
* @return TODO
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0 TODO SERVLET3 - Add comments
*/
SessionCookieConfig getSessionCookieConfig();
/**
* Configures the available session tracking modes for this web application.
*
* @param sessionTrackingModes The session tracking modes to use for this web application
*
* @throws IllegalArgumentException If sessionTrackingModes specifies {@link SessionTrackingMode#SSL} in
* combination with any other {@link SessionTrackingMode}
* @throws IllegalStateException If the context has already been initialised
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
void setSessionTrackingModes(Set sessionTrackingModes);
/**
* Obtains the default session tracking modes for this web application. By default {@link SessionTrackingMode#URL}
* is always supported, {@link SessionTrackingMode#COOKIE} is supported unless the cookies
attribute
* has been set to false
for the context and {@link SessionTrackingMode#SSL} is supported if at least
* one of the connectors used by this context has the attribute secure
set to true
.
*
* @return The set of default session tracking modes for this web application
*
* @since Servlet 3.0
*/
Set getDefaultSessionTrackingModes();
/**
* Obtains the currently enabled session tracking modes for this web application.
*
* @return The value supplied via {@link #setSessionTrackingModes(Set)} if one was previously set, else return the
* defaults
*
* @since Servlet 3.0
*/
Set getEffectiveSessionTrackingModes();
/**
* TODO SERVLET3 - Add comments
*
* @param className TODO
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
void addListener(String className);
/**
* TODO SERVLET3 - Add comments
*
* @param TODO
* @param t TODO
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
void addListener(T t);
/**
* TODO SERVLET3 - Add comments
*
* @param listenerClass TODO
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
void addListener(Class extends EventListener> listenerClass);
/**
* TODO SERVLET3 - Add comments
*
* @param TODO
* @param c TODO
*
* @return TODO
*
* @throws ServletException TODO
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
*
* @since Servlet 3.0
*/
T createListener(Class c) throws ServletException;
/**
* @return TODO
*
* @since Servlet 3.0 TODO SERVLET3 - Add comments
*/
JspConfigDescriptor getJspConfigDescriptor();
/**
* Get the web application class loader associated with this ServletContext.
*
* @return The associated web application class loader
*
* @throws SecurityException if access to the class loader is prevented by a SecurityManager
*
* @since Servlet 3.0
*/
ClassLoader getClassLoader();
/**
* Add to the declared roles for this ServletContext.
*
* @param roleNames The roles to add
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalArgumentException If the list of roleNames is null or empty
* @throws IllegalStateException If the ServletContext has already been initialised
*
* @since Servlet 3.0
*/
void declareRoles(String... roleNames);
/**
* Get the primary name of the virtual host on which this context is deployed. The name may or may not be a valid
* host name.
*
* @return The primary name of the virtual host on which this context is deployed
*
* @since Servlet 3.1
*/
String getVirtualServerName();
/**
* Get the default session timeout.
*
* @return The current default session timeout in minutes
*
* @since Servlet 4.0
*/
int getSessionTimeout();
/**
* Set the default session timeout. This method may only be called before the ServletContext is initialised.
*
* @param sessionTimeout The new default session timeout in minutes.
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalStateException If the ServletContext has already been initialised
*
* @since Servlet 4.0
*/
void setSessionTimeout(int sessionTimeout);
/**
* Get the default character encoding for reading request bodies.
*
* @return The character encoding name or {@code null} if no default has been specified
*
* @since Servlet 4.0
*/
String getRequestCharacterEncoding();
/**
* Set the default character encoding to use for reading request bodies. Calling this method will over-ride any
* value set in the deployment descriptor.
*
* @param encoding The name of the character encoding to use
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalStateException If the ServletContext has already been initialised
*
* @since Servlet 4.0
*/
void setRequestCharacterEncoding(String encoding);
/**
* Get the default character encoding for writing response bodies.
*
* @return The character encoding name or {@code null} if no default has been specified
*
* @since Servlet 4.0
*/
String getResponseCharacterEncoding();
/**
* Set the default character encoding to use for writing response bodies. Calling this method will over-ride any
* value set in the deployment descriptor.
*
* @param encoding The name of the character encoding to use
*
* @throws UnsupportedOperationException If called from a
* {@link ServletContextListener#contextInitialized(ServletContextEvent)}
* method of a {@link ServletContextListener} that was not defined in a
* web.xml file, a web-fragment.xml file nor annotated with
* {@link jakarta.servlet.annotation.WebListener}. For example, a
* {@link ServletContextListener} defined in a TLD would not be able to
* use this method.
* @throws IllegalStateException If the ServletContext has already been initialised
*
* @since Servlet 4.0
*/
void setResponseCharacterEncoding(String encoding);
}