# Servlet and Spring MVC adapters

Select the correct adapter and preserve native servlet execution semantics.

## Choose the adapter

Use finans-sdk-servlet for javax.servlet 3.1/4 and finans-sdk-jakarta-servlet for jakarta.servlet 5/6. Do not install both in one application. Spring Boot 3 / Spring 6 still require Java 17; the SDK’s Java 8 bytecode target does not change framework requirements.

## Register with Spring

Start the SDK as a singleton bean. Register SigillumServletFilter or SigillumJakartaServletFilter through FilterRegistrationBean. Enable async support and REQUEST, ASYNC and ERROR dispatch types. Preserve existing authentication and executor configuration.

## Standard WAR deployment

In web.xml, configure the supplied filter class, an absolute configPath init parameter and a /* mapping. No separate business-service wrapper is required. The filter closes only an SDK instance that it created itself.

## Content and asynchronous boundaries

Reader / PrintWriter content may represent observed UTF-16 code units rather than original network bytes. Multipart parsing, buffer clearing, resets and unobserved consumption can produce partial-content reports. Use sdk.wrap(...) where context crosses an external executor or DeferredResult boundary.

## Complete package references

See the source-matched [javax reference](https://www.sigillum.cloud/developers/sdk/servlet-reference/) and [Jakarta reference](https://www.sigillum.cloud/developers/sdk/jakarta-reference/) for registration examples and boundary details.