Package org.glassfish.jersey.servlet
Class ServletContainer
java.lang.Object
jakarta.servlet.GenericServlet
jakarta.servlet.http.HttpServlet
org.glassfish.jersey.servlet.ServletContainer
- All Implemented Interfaces:
jakarta.servlet.Filter
,jakarta.servlet.Servlet
,jakarta.servlet.ServletConfig
,Serializable
,Container
public class ServletContainer
extends jakarta.servlet.http.HttpServlet
implements jakarta.servlet.Filter, Container
A
Servlet
or Filter
for deploying root resource classes.
The following sections make reference to initialization parameters. Unless
otherwise specified the initialization parameters apply to both server
and filter initialization parameters.
The servlet or filter may be configured to have an initialization
parameter "jakarta.ws.rs.Application"
(see ServletProperties.JAXRS_APPLICATION_CLASS
) and whose value is a
fully qualified name of a class that implements Application
.
The class is instantiated as a singleton component
managed by the runtime, and injection may be performed (the artifacts that
may be injected are limited to injectable providers registered when
the servlet or filter is configured).
If the initialization parameter "jakarta.ws.rs.Application"
is not present and a initialization parameter "jersey.config.server.provider.packages"
is present (see ServerProperties.PROVIDER_PACKAGES
) a new instance of
ResourceConfig
with this configuration is created. The initialization parameter
"jersey.config.server.provider.packages" MUST be set to provide one or
more package names. Each package name MUST be separated by ';'.
If none of the above resource configuration related initialization parameters
are present a new instance of ResourceConfig
with WebAppResourcesScanner
is created. The initialization parameter "jersey.config.server.provider.classpath"
is present (see ServerProperties.PROVIDER_CLASSPATH
) MAY be
set to provide one or more resource paths. Each path MUST be separated by ';'.
If the initialization parameter is not present then the following resource
paths are utilized: "/WEB-INF/lib"
and "/WEB-INF/classes"
.
All initialization parameters are added as properties of the created
ResourceConfig
.
A new ApplicationHandler
instance will be created and configured such
that the following classes may be injected onto a root resource, provider
and Application
classes using @Context
annotation:
HttpServletRequest
, HttpServletResponse
,
ServletContext
, ServletConfig
and WebConfig
.
If this class is used as a Servlet then the ServletConfig
class may
be injected. If this class is used as a servlet filter then the FilterConfig
class may be injected. WebConfig
may be injected to abstract
servlet or filter deployment.
Persistence units that may be injected must be configured in web.xml
in the normal way plus an additional servlet parameter to enable the
Jersey servlet to locate them in JNDI. E.g. with the following
persistence unit configuration:
<persistence-unit-ref>
<persistence-unit-ref-name>persistence/widget</persistence-unit-ref-name>
<persistence-unit-name>WidgetPU</persistence-unit-name>
</persistence-unit-ref>
the Jersey servlet requires an additional servlet parameter as
follows:
<init-param>
<param-name>unit:WidgetPU</param-name>
<param-value>persistence/widget</param-value>
</init-param>
Given the above, Jersey will inject the EntityManagerFactory
found
at java:comp/env/persistence/widget
in JNDI when encountering a
field or parameter annotated with @PersistenceUnit(unitName="WidgetPU")
.- Author:
- Paul Sandoz, Pavel Bucek, Michal Gajdos, Libor Kramolis
- See Also:
-
Field Summary
Fields inherited from class jakarta.servlet.http.HttpServlet
LEGACY_DO_HEAD
Fields inherited from interface org.glassfish.jersey.server.spi.Container
DEFAULT_HTTP_PORT, DEFAULT_HTTPS_PORT
-
Constructor Summary
ConstructorDescriptionCreate Jersey Servlet container.ServletContainer
(ResourceConfig resourceConfig) Create Jersey Servlet container. -
Method Summary
Modifier and TypeMethodDescriptionvoid
destroy()
void
doFilter
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain chain) Dispatches client requests to theservice(URI, URI, HttpServletRequest, HttpServletResponse)
method.void
doFilter
(jakarta.servlet.ServletRequest servletRequest, jakarta.servlet.ServletResponse servletResponse, jakarta.servlet.FilterChain filterChain) Get the Jersey server-side application handler associated with the container.Return an immutable representation of the currentconfiguration
.jakarta.servlet.ServletContext
Get the servlet context for the servlet or filter, depending on how this class is registered.protected Pattern
Get the static content path pattern.GetWebComponent
used by this servlet container.void
init()
void
init
(jakarta.servlet.FilterConfig filterConfig) protected void
Initiate the Web component.void
reload()
Reload the hosted Jersey application using the currentconfiguration
.void
reload
(ResourceConfig configuration) Reload the hosted Jersey application using a newconfiguration
.protected void
service
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Receives standard HTTP requests from the publicservice
method and dispatches them to thedo
XXX methods defined in this class.void
service
(jakarta.servlet.ServletRequest req, jakarta.servlet.ServletResponse res) Dispatches client requests to the protectedservice
method.org.glassfish.jersey.internal.util.collection.Value<Integer>
service
(URI baseUri, URI requestUri, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Dispatch client requests to a resource class.Methods inherited from class jakarta.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, init
Methods inherited from class jakarta.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletInfo, getServletName, log, log
-
Constructor Details
-
ServletContainer
public ServletContainer()Create Jersey Servlet container. -
ServletContainer
Create Jersey Servlet container.- Parameters:
resourceConfig
- container configuration.
-
-
Method Details
-
init
Initiate the Web component.- Parameters:
webConfig
- the Web configuration.- Throws:
jakarta.servlet.ServletException
- in case of an initialization failure
-
service
public void service(jakarta.servlet.ServletRequest req, jakarta.servlet.ServletResponse res) throws jakarta.servlet.ServletException, IOException Dispatches client requests to the protectedservice
method. There's no need to override this method.- Specified by:
service
in interfacejakarta.servlet.Servlet
- Overrides:
service
in classjakarta.servlet.http.HttpServlet
- Parameters:
req
- theHttpServletRequest
object that contains the request the client made of the servletres
- theHttpServletResponse
object that contains the response the servlet returns to the client- Throws:
IOException
- if an input or output error occurs while the servlet is handling the HTTP requestjakarta.servlet.ServletException
- if the HTTP request cannot be handled- See Also:
-
Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)
-
service
protected void service(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOException Receives standard HTTP requests from the publicservice
method and dispatches them to thedo
XXX methods defined in this class. This method is an HTTP-specific version of theServlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)
method. There's no need to override this method.- Overrides:
service
in classjakarta.servlet.http.HttpServlet
- Parameters:
request
- theHttpServletRequest
object that contains the request the client made of the servletresponse
- theHttpServletResponse
object that contains the response the servlet returns to the client- Throws:
IOException
- if an input or output error occurs while the servlet is handling the HTTP requestjakarta.servlet.ServletException
- if the HTTP request cannot be handled- See Also:
-
Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)
-
destroy
public void destroy()- Specified by:
destroy
in interfacejakarta.servlet.Filter
- Specified by:
destroy
in interfacejakarta.servlet.Servlet
- Overrides:
destroy
in classjakarta.servlet.GenericServlet
-
init
public void init() throws jakarta.servlet.ServletException- Overrides:
init
in classjakarta.servlet.GenericServlet
- Throws:
jakarta.servlet.ServletException
-
service
public org.glassfish.jersey.internal.util.collection.Value<Integer> service(URI baseUri, URI requestUri, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOException Dispatch client requests to a resource class.- Parameters:
baseUri
- the base URI of the request.requestUri
- the URI of the request.request
- theHttpServletRequest
object that contains the request the client made to the Web component.response
- theHttpServletResponse
object that contains the response the Web component returns to the client.- Returns:
- lazily initialized response status code
value provider
. If not resolved in the moment of call toValue.get()
,-1
is returned. - Throws:
IOException
- if an input or output error occurs while the Web component is handling the HTTP request.jakarta.servlet.ServletException
- if the HTTP request cannot be handled.
-
init
public void init(jakarta.servlet.FilterConfig filterConfig) throws jakarta.servlet.ServletException - Specified by:
init
in interfacejakarta.servlet.Filter
- Throws:
jakarta.servlet.ServletException
-
doFilter
public void doFilter(jakarta.servlet.ServletRequest servletRequest, jakarta.servlet.ServletResponse servletResponse, jakarta.servlet.FilterChain filterChain) throws IOException, jakarta.servlet.ServletException - Specified by:
doFilter
in interfacejakarta.servlet.Filter
- Throws:
IOException
jakarta.servlet.ServletException
-
getServletContext
public jakarta.servlet.ServletContext getServletContext()Get the servlet context for the servlet or filter, depending on how this class is registered.- Specified by:
getServletContext
in interfacejakarta.servlet.ServletConfig
- Overrides:
getServletContext
in classjakarta.servlet.GenericServlet
- Returns:
- the servlet context for the servlet or filter.
-
doFilter
public void doFilter(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain chain) throws IOException, jakarta.servlet.ServletException Dispatches client requests to theservice(URI, URI, HttpServletRequest, HttpServletResponse)
method. If the servlet path matches the regular expression declared by the propertyServletProperties.FILTER_STATIC_CONTENT_REGEX
then the request is forwarded to the next filter in the filter chain so that the underlying servlet engine can process the request otherwise Jersey will process the request.- Parameters:
request
- theHttpServletRequest
object that contains the request the client made to the servlet.response
- theHttpServletResponse
object that contains the response the servlet returns to the client.chain
- the chain of filters from which the next filter can be invoked.- Throws:
IOException
- in case of an I/O error.jakarta.servlet.ServletException
- in case of an error while executing the filter chain.
-
getStaticContentPattern
Get the static content path pattern.- Returns:
- the
Pattern
compiled from a regular expression that is the property value ofServletProperties.FILTER_STATIC_CONTENT_REGEX
. Anull
value will be returned if the property is not set or is an empty String.
-
getConfiguration
Description copied from interface:Container
Return an immutable representation of the currentconfiguration
.- Specified by:
getConfiguration
in interfaceContainer
- Returns:
- current configuration of the hosted Jersey application.
-
reload
public void reload()Description copied from interface:Container
Reload the hosted Jersey application using the currentconfiguration
. -
reload
Description copied from interface:Container
Reload the hosted Jersey application using a newconfiguration
. -
getApplicationHandler
Description copied from interface:Container
Get the Jersey server-side application handler associated with the container.- Specified by:
getApplicationHandler
in interfaceContainer
- Returns:
- Jersey server-side application handler associated with the container.
-
getWebComponent
GetWebComponent
used by this servlet container.- Returns:
- The web component.
-