Class RestServlet
- All Implemented Interfaces:
jakarta.servlet.Servlet,jakarta.servlet.ServletConfig,Serializable
- Direct Known Subclasses:
AdminServlet,BasicRestServlet,FaviconServlet,LoadConfigResource,SpringRestServlet,StaticFilesServlet,VersionServlet,ViewServlet
The RestServlet class is the entry point for your REST resources.
It extends directly from
When the servlet RestContext object that holds all the configuration
information about your resource in a read-only object.
Notes:
-
Users will typically extend from
BasicRestServletorBasicRestServletGroupinstead of this class directly.
See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classRestServlet.Builder<R extends RestServlet,SELF extends RestServlet.Builder<R, SELF>> Fluent builder for programmatically configuring aRestServletsubclass.static final classRestServlet.DefaultBuilder<R extends RestServlet>Concrete default leaf builder returned bybuilder(Class)for the common (non-subclassed) case, so callers are not forced to spell theSELFtype parameter. -
Field Summary
Fields inherited from class jakarta.servlet.http.HttpServlet
LEGACY_DO_HEAD -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDefault constructor.protectedRestServlet(RestBuilder<?> builder) Builder-injection constructor. -
Method Summary
Modifier and TypeMethodDescriptionstatic <R extends RestServlet>
RestServlet.DefaultBuilder<R>Creates a new fluent builder for programmatically configuring an instance of the specified resource type.createAuthenticator(BeanStore beanStore) Returns the resource-level authenticator for this servlet, ornull to fall through to the@Rest(authenticator=...)annotation / registered bean /@Beanfactory method.voiddestroy()protected voidMain logger method.Returns the read-only context object that contains all the configuration information about this resource.getPath()Returns the path for this resource as defined by the @Rest(path) annotation or RestContext.Builder.path(String) method concatenated with those on all parent classes.getPaths()Returns the runtime-overridden top-level mount paths for this resource.Returns the current thread-local HTTP request.Returns the current thread-local HTTP response.RestBuilder<?>Returns the programmatic configuration builder stashed on this resource, ornull if none.voidinit(jakarta.servlet.ServletConfig servletConfig) voidLog a message.voidLog a message.voidservice(jakarta.servlet.http.HttpServletRequest r1, jakarta.servlet.http.HttpServletResponse r2) The main service method.protected voidsetContext(RestContext context) Sets the context object for this servlet.Methods inherited from class jakarta.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPatch, doPost, doPut, doTrace, getLastModified, isSensitiveHeader, serviceMethods inherited from class jakarta.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
-
Constructor Details
-
RestServlet
protected RestServlet()Default constructor. -
RestServlet
Builder-injection constructor.- Parameters:
builder- The programmatic configuration builder. May benull .
-
-
Method Details
-
getRestBuilder
Returns the programmatic configuration builder stashed on this resource, ornull if none.- Returns:
- The stashed builder, or
null if none was injected. - Since:
- 10.0.0
-
builder
Creates a new fluent builder for programmatically configuring an instance of the specified resource type.Builder-supplied values take precedence over the resource class's own
@Restannotation values.- Type Parameters:
R- The resource type.- Parameters:
type- The resource type to build. Must not benull .- Returns:
- A new builder.
- Since:
- 10.0.0
-
createAuthenticator
Returns the resource-level authenticator for this servlet, ornull to fall through to the@Rest(authenticator=...)annotation / registered bean /@Beanfactory method.This is the lowest-precedence rung in the
RestAuthenticatorresolution chain (see design spec §5.3). Subclasses can override it to supply an authenticator programmatically.- Parameters:
beanStore- The bean store for dependency resolution.- Returns:
- The authenticator, or
null (the default). - Since:
- 10.0.0
-
destroy
- Specified by:
destroyin interfacejakarta.servlet.Servlet- Overrides:
destroyin classjakarta.servlet.GenericServlet
-
getContext
Returns the read-only context object that contains all the configuration information about this resource.This object is
null during the call toinit(ServletConfig)but is populated by the timeGenericServlet.init()is called.Resource classes that don't extend from
RestServletcan add the following method to their class to get access to this context object:public void init(RestServletContextcontext )throws Exception;- Returns:
- The context information on this servlet.
-
getPath
Returns the path for this resource as defined by the @Rest(path) annotation or RestContext.Builder.path(String) method concatenated with those on all parent classes.- Returns:
- The path defined on this servlet, or an empty string if not specified.
-
getPaths
Returns the runtime-overridden top-level mount paths for this resource.Subclasses can override this method to substitute the
@Rest(paths)annotation defaults at construction time. This is the "getter" rung in the runtime-override resolution chain documented onRestContext.getPaths():- Programmatic (
RestContext.Builder.paths(String...)) — highest precedence. - This
getPaths()getter (when non-null). @Rest(paths={...})annotation default (SVL-resolved per element, comma-split) — lowest precedence.
Accepted return shapes:
null— no override; resolution falls through to the@Rest(paths=...)annotation default.String— a single path or a comma-delimited list, e.g."/healthz,/readyz".String[]— each element may itself be a comma-delimited list.Collection,List,Set,Iterable, orStreamof any of the above (nested mixes are recursively flattened).- Primitive arrays (boxed during flattening).
Non-
Stringleaves are coerced viaString.valueOf(Object). Each leaf string then runs through the same per-element pipeline used for@Rest(paths=...)annotation elements: SVL is applied via the bean-store-backedVarResolverSession(so$C{key}consults the liveConfig,$E{NAME,default}and$S{prop,default}resolve through the bootstrap variable catalog), and the post-SVL value is comma-split with each piece trimmed and empty pieces dropped.Notes:
-
Returning
null(the default) means "inherit annotation" — the next rung resolves. -
Returning
new String[0], an empty collection, an empty string, or a blank string means "explicitly clear" — no top-level mounts. -
The scalar accessor
getPath()remains orthogonal to this method — the singular@Rest(path=...)attribute has its own resolution chain and is unaffected.
- Returns:
- The runtime-overridden mount paths in any accepted shape, or
nullto inherit the annotation default. - Since:
- 10.0.0
- Programmatic (
-
getRequest
Returns the current thread-local HTTP request.- Returns:
- The current thread-local HTTP request, or
null if it wasn't created.
-
getResponse
Returns the current thread-local HTTP response.- Returns:
- The current thread-local HTTP response, or
null if it wasn't created.
-
init
public void init(jakarta.servlet.ServletConfig servletConfig) throws jakarta.servlet.ServletException - Specified by:
initin interfacejakarta.servlet.Servlet- Overrides:
initin classjakarta.servlet.http.HttpServlet- Throws:
jakarta.servlet.ServletException
-
log
Log a message.Subclasses can intercept the handling of these messages by overriding
doLog(Level, Throwable, Supplier).- Parameters:
level- The log level.msg- The message to log.args- OptionalString.format-style arguments.
-
log
Log a message.Subclasses can intercept the handling of these messages by overriding
doLog(Level, Throwable, Supplier).- Parameters:
level- The log level.cause- The cause.msg- The message to log.args- OptionalString.format-style arguments.
-
service
public void service(jakarta.servlet.http.HttpServletRequest r1, jakarta.servlet.http.HttpServletResponse r2) throws jakarta.servlet.ServletException, InternalServerError, IOException The main service method.Subclasses can optionally override this method if they want to tailor the behavior of requests.
- Overrides:
servicein classjakarta.servlet.http.HttpServlet- Throws:
jakarta.servlet.ServletExceptionInternalServerErrorIOException
-
doLog
Main logger method.The default behavior logs a message to the Java logger of the class name.
Subclasses can override this method to implement their own logger handling.
- Parameters:
level- The log level.cause- Optional throwable.msg- The message to log.
-
setContext
Sets the context object for this servlet.This method is effectively a no-op if
init(ServletConfig)has already been called.- Parameters:
context- Sets the context object on this servlet. Must not benull .- Throws:
jakarta.servlet.ServletException- If error occurred during initialization.
-