CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-io-quarkus--quarkus-undertow

Quarkus extension providing servlet support through Undertow web server for cloud-native Java applications

Pending
Overview
Eval results
Files

runtime-api.mddocs/

Runtime API

The runtime module provides the core servlet container integration, CDI support, and session management capabilities for Quarkus applications.

Core Imports

import io.quarkus.undertow.runtime.ServletRuntimeConfig;
import io.quarkus.undertow.runtime.UndertowDeploymentRecorder;
import io.quarkus.undertow.runtime.ServletProducer;
import io.quarkus.undertow.runtime.HttpSessionContext;

Configuration

ServletRuntimeConfig

Runtime configuration interface for servlet settings.

@ConfigMapping(prefix = "quarkus.servlet")
public interface ServletRuntimeConfig {
    /**
     * Buffer size for servlet operations
     */
    Optional<MemorySize> bufferSize();
    
    /**
     * Use direct buffers setting
     */
    Optional<Boolean> directBuffers();
    
    /**
     * Maximum HTTP request parameters (default: 1000)
     */
    @WithDefault("1000")
    int maxParameters();
}

Core Runtime Classes

UndertowDeploymentRecorder

Main recorder class responsible for servlet deployment and configuration during application startup.

public class UndertowDeploymentRecorder {
    public static final HttpHandler ROOT_HANDLER;
    public static final int DEFAULT_BUFFER_SIZE;
    public static final boolean DEFAULT_DIRECT_BUFFERS;
    
    /**
     * Create servlet deployment
     */
    public void createDeployment(DeploymentInfo deploymentInfo, 
                               Map<String, Object> servletConfig);
    
    /**
     * Register servlet instance
     */
    public void registerServlet(String name, String servletClass, 
                              List<String> mappings, Map<String, String> initParams,
                              boolean asyncSupported, int loadOnStartup);
    
    /**
     * Register filter instance
     */
    public void registerFilter(String name, String filterClass,
                             List<FilterMappingInfo> mappings,
                             Map<String, String> initParams,
                             boolean asyncSupported);
    
    /**
     * Register listener
     */
    public void registerListener(String listenerClass);
    
    /**
     * Start Undertow server
     */
    public void startUndertow(Supplier<Undertow> undertowSupplier);
    
    /**
     * Boot servlet container
     */
    public void bootServletContainer(DeploymentManager manager);
    
    /**
     * Configure security
     */
    public void setupSecurity(SecurityDomain securityDomain);
    
    /**
     * Get servlet context supplier
     */
    public Supplier<ServletContext> servletContextSupplier();
}

ServletProducer

CDI producers for servlet objects, enabling dependency injection of servlet components.

@Singleton
public class ServletProducer {
    /**
     * Produce servlet request for injection
     */
    @Produces
    @RequestScoped
    public HttpServletRequest request();
    
    /**
     * Produce servlet response for injection
     */
    @Produces
    @RequestScoped
    public HttpServletResponse response();
    
    /**
     * Produce HTTP session for injection
     */
    @Produces
    @RequestScoped
    public HttpSession session();
}

Usage Example

@ApplicationScoped
public class MyService {
    
    @Inject
    HttpServletRequest request;
    
    @Inject
    HttpServletResponse response;
    
    public void processRequest() {
        String method = request.getMethod();
        String userAgent = request.getHeader("User-Agent");
        
        response.setHeader("X-Processed-By", "Quarkus");
        response.setContentType("application/json");
    }
}

HttpSessionContext

CDI context implementation for HTTP session scope management.

public class HttpSessionContext implements InjectableContext, HttpSessionListener {
    /**
     * Get the scope annotation class
     */
    public Class<? extends Annotation> getScope();
    
    /**
     * Get contextual instance with creation context
     */
    public <T> T get(Contextual<T> contextual, CreationalContext<T> creationalContext);
    
    /**
     * Get existing contextual instance
     */
    public <T> T get(Contextual<T> contextual);
    
    /**
     * Check if context is active
     */
    public boolean isActive();
    
    /**
     * Destroy contextual instance
     */
    public void destroy(Contextual<?> contextual);
    
    /**
     * Handle session creation event
     */
    public void sessionCreated(HttpSessionEvent event);
    
    /**
     * Handle session destruction event
     */
    public void sessionDestroyed(HttpSessionEvent event);
}

Error Handling

QuarkusErrorServlet

Error handling servlet for processing application errors.

public class QuarkusErrorServlet extends HttpServlet {
    public static final String SHOW_STACK = "show-stack";
    public static final String SHOW_DECORATION = "show-decoration";  
    public static final String SRC_MAIN_JAVA = "src-main-java";
    public static final String KNOWN_CLASSES = "known-classes";
    
    /**
     * Handle error requests
     */
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException;
}

Resource Management

KnownPathResourceManager

Resource manager for handling static resources with known paths.

public class KnownPathResourceManager implements ResourceManager {
    /**
     * Constructor with known paths and delegate manager
     */
    public KnownPathResourceManager(Set<String> files, Set<String> directories, 
                                  ResourceManager delegate);
    
    /**
     * Get resource by path
     */
    public Resource getResource(String path) throws IOException;
    
    /**
     * Close resource manager
     */
    public void close() throws IOException;
}

Security Integration

QuarkusUndertowAccount

Account implementation for Undertow security integration.

public class QuarkusUndertowAccount implements Account {
    public Principal getPrincipal();
    public Set<String> getRoles();
}

ServletHttpSecurityPolicy

HTTP security policy implementation for servlet security.

public class ServletHttpSecurityPolicy implements HttpSecurityPolicy {
    public AuthenticationMechanismOutcome authenticate(HttpServerExchange exchange,
                                                     SecurityContext securityContext);
}

Types

// Common types used throughout the runtime API
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;

import io.undertow.server.HttpHandler;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import io.undertow.Undertow;

import jakarta.enterprise.context.RequestScoped;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Singleton;

import java.util.Optional;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;

Install with Tessl CLI

npx tessl i tessl/maven-io-quarkus--quarkus-undertow

docs

build-time-api.md

configuration.md

index.md

runtime-api.md

tile.json