Package org.apache.sling.api.servlets

# Interface ServletResolver

@ProviderType public interface ServletResolver
The `ServletResolver` defines the API for a service capable of resolving `jakarta.servlet.Servlet` instances to handle the processing of a request or resource.

Applications of the Sling Framework generally do not need the servlet resolver as resolution of the servlets to process requests and sub-requests through a `RequestDispatcher` is handled by the Sling Framework.

## Method Summary

Modifier and Type
Method
Description
`@Nullable jakarta.servlet.Servlet`
`resolve(@NotNull Resource resource, @NotNull String scriptName)`
Resolves a `jakarta.servlet.Servlet` whose `service` method may be used to handle a request.
`@Nullable jakarta.servlet.Servlet`
`resolve(@NotNull ResourceResolver resolver, @NotNull String scriptName)`
Resolves a `jakarta.servlet.Servlet` whose `service` method may be used to handle a request.
`@Nullable jakarta.servlet.Servlet`
`resolve(@NotNull SlingJakartaHttpServletRequest request)`
Resolves a `jakarta.servlet.Servlet` whose `service` method may be used to handle the given `request`.
`javax.servlet.Servlet`
`resolveServlet(@NotNull Resource resource, @NotNull String scriptName)`
Deprecated.
Use `resolve(Resource, String)` instead.
`javax.servlet.Servlet`
`resolveServlet(@NotNull ResourceResolver resolver, @NotNull String scriptName)`
Deprecated.
Use `resolve(ResourceResolver, String)` instead.
`javax.servlet.Servlet`
`resolveServlet(SlingHttpServletRequest request)`
Deprecated.
Use `resolve(SlingJakartaHttpServletRequest)` instead.

## Method Details

### resolve

@Nullable @Nullable jakarta.servlet.Servlet resolve(@NotNull @NotNull SlingJakartaHttpServletRequest request)
Resolves a `jakarta.servlet.Servlet` whose `service` method may be used to handle the given `request`.

The returned servlet must be assumed to be initialized and ready to run. That is, the `init` nor the `destroy` methods must NOT be called on the returned servlet.

This method must not return a `Servlet` instance implementing the `JakartaOptingServlet` interface and returning `false` when the `JakartaOptingServlet.accepts(SlingJakartaHttpServletRequest)` method is called.

Parameters:
  `request` - The `SlingJakartaHttpServletRequest` object used to drive selection of the servlet.
Returns:
  The servlet whose `service` method may be called to handle the request. Might be `null`.
Throws:
  `SlingException` - Is thrown if an error occurs while trying to find an appropriate servlet to handle the request.
  `NullPointerException` - If `request` is null.
Since:
  2.5.0

### resolve

@Nullable @Nullable jakarta.servlet.Servlet resolve(@NotNull @NotNull Resource resource, @NotNull @NotNull String scriptName)
Resolves a `jakarta.servlet.Servlet` whose `service` method may be used to handle a request.

The returned servlet must be assumed to be initialized and ready to run. That is, the `init` nor the `destroy` methods must NOT be called on the returned servlet.

This method skips all `OptingServlet`s as there is no request object available. Basically this method searches a script with the `scriptName` for the resource type defined by the `resource`.

Parameters:
  `resource` - The `Resource` object used to drive selection of the servlet.
  `scriptName` - The name of the script - the script might have an extension. In this case only a script with the matching extension is used.
Returns:
  The servlet whose `service` method may be called to handle the request. Might be `null`.
Throws:
  `SlingException` - Is thrown if an error occurs while trying to find an appropriate servlet to handle the request or if no servlet could be resolved to handle the request.
  `IllegalArgumentException` - If `resource` is null.
Since:
  2.1 (Sling API Bundle 2.1.0), 2.5.0

### resolve

@Nullable @Nullable jakarta.servlet.Servlet resolve(@NotNull @NotNull ResourceResolver resolver, @NotNull @NotNull String scriptName)
Resolves a `jakarta.servlet.Servlet` whose `service` method may be used to handle a request.

The returned servlet must be assumed to be initialized and ready to run. That is, the `init` nor the `destroy` methods must NOT be called on the returned servlet.

This method skips all `OptingServlet`s as there is no request object available. Basically this method searches a script with the `scriptName`

Parameters:
  `resolver` - The `ResourceResolver` object used to drive selection of the servlet.
  `scriptName` - The name of the script - the script might have an extension. In this case only a script with the matching extension is used.
Returns:
  The servlet whose `service` method may be called to handle the request. Might be `null`.
Throws:
  `SlingException` - Is thrown if an error occurs while trying to find an appropriate servlet to handle the request.
  `IllegalArgumentException` - If `resolver` is null.
Since:
  2.5.0

### resolveServlet

@Deprecated @Nullable javax.servlet.Servlet resolveServlet(@NotNull SlingHttpServletRequest request)
Deprecated.
Use `resolve(SlingJakartaHttpServletRequest)` instead.
Resolves a `javax.servlet.Servlet` whose `service` method may be used to handle the given `request`.

The returned servlet must be assumed to be initialized and ready to run. That is, the `init` nor the `destroy` methods must NOT be called on the returned servlet.

This method must not return a `Servlet` instance implementing the `OptingServlet` interface and returning `false` when the `OptingServlet.accepts(org.apache.sling.api.SlingHttpServletRequest)` method is called.

Parameters:
  `request` - The `SlingHttpServletRequest` object used to drive selection of the servlet.
Returns:
  The servlet whose `service` method may be called to handle the request. Might be `null`.
Throws:
  `SlingException` - Is thrown if an error occurs while trying to find an appropriate servlet to handle the request.
  `NullPointerException` - If `request` is null.

### resolveServlet

@Deprecated @Nullable javax.servlet.Servlet resolveServlet(@NotNull @NotNull Resource resource, @NotNull @NotNull String scriptName)
Deprecated.
Use `resolve(Resource, String)` instead.
Resolves a `javax.servlet.Servlet` whose `service` method may be used to handle a request.

The returned servlet must be assumed to be initialized and ready to run. That is, the `init` nor the `destroy` methods must NOT be called on the returned servlet.

This method skips all `OptingServlet`s as there is no request object available. Basically this method searches a script with the `scriptName` for the resource type defined by the `resource`.

Parameters:
  `resource` - The `Resource` object used to drive selection of the servlet.
  `scriptName` - The name of the script - the script might have an extension. In this case only a script with the matching extension is used.
Returns:
  The servlet whose `service` method may be called to handle the request. Might be `null`.
Throws:
  `SlingException` - Is thrown if an error occurs while trying to find an appropriate servlet to handle the request or if no servlet could be resolved to handle the request.
  `IllegalArgumentException` - If `resource` is null.
Since:
  2.1 (Sling API Bundle 2.1.0)

### resolveServlet

@Deprecated @Nullable javax.servlet.Servlet resolveServlet(@NotNull @NotNull ResourceResolver resolver, @NotNull @NotNull String scriptName)
Deprecated.
Use `resolve(ResourceResolver, String)` instead.
Resolves a `javax.servlet.Servlet` whose `service` method may be used to handle a request.

The returned servlet must be assumed to be initialized and ready to run. That is, the `init` nor the `destroy` methods must NOT be called on the returned servlet.

This method skips all `OptingServlet`s as there is no request object available. Basically this method searches a script with the `scriptName`

Parameters:
  `resolver` - The `ResourceResolver` object used to drive selection of the servlet.
  `scriptName` - The name of the script - the script might have an extension. In this case only a script with the matching extension is used.
Returns:
  The servlet whose `service` method may be called to handle the request. Might be `null`.
Throws:
  `SlingException` - Is thrown if an error occurs while trying to find an appropriate servlet to handle the request.
  `IllegalArgumentException` - If `resolver` is null.
Since:
  2.1 (Sling API Bundle 2.1.0)