or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

build-time-api.mdconfiguration.mdindex.mdruntime-api.md
tile.json

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

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

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/io.quarkus/quarkus-undertow@3.23.x

To install, run

npx @tessl/cli install tessl/maven-io-quarkus--quarkus-undertow@3.23.0

index.mddocs/

Quarkus Undertow Extension

A Quarkus extension providing servlet support through the Undertow web server. This extension enables traditional Java web applications using servlet APIs (Jakarta Servlet) while maintaining Quarkus' cloud-native features including fast startup times, low memory usage, and native compilation support.

Package Information

  • Package Name: quarkus-undertow
  • Package Type: maven
  • Language: Java
  • Installation: Add dependency to your Quarkus project:
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-undertow</artifactId>
</dependency>

Core Imports

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

For CDI integration:

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import jakarta.inject.Inject;

For build-time configuration:

import io.quarkus.undertow.spi.ServletBuildItem;
import io.quarkus.undertow.spi.FilterBuildItem;
import io.quarkus.undertow.spi.ListenerBuildItem;

Basic Usage

Adding Servlets

@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        resp.setContentType("text/plain");
        resp.getWriter().write("Hello from Quarkus Undertow!");
    }
}

CDI Integration

@ApplicationScoped
public class ServletService {
    
    @Inject
    HttpServletRequest request;
    
    @Inject
    HttpServletResponse response;
    
    public void handleRequest() {
        // Use injected servlet objects
        String method = request.getMethod();
        response.setHeader("X-Processed-By", "Quarkus");
    }
}

Build-time Configuration

@BuildStep
ServletBuildItem createServlet() {
    return ServletBuildItem.builder("my-servlet", MyServlet.class.getName())
            .addMapping("/api/custom")
            .setAsyncSupported(true)
            .build();
}

Architecture

The Quarkus Undertow extension is structured as a multi-module Maven project with three main components:

  • Runtime Module: Provides servlet container integration, CDI producers, and runtime configuration
  • SPI Module: Defines build items for extension developers to register servlets, filters, and listeners
  • Deployment Module: Handles build-time processing and Undertow server configuration

Capabilities

Runtime API

Core runtime functionality including servlet container management, CDI integration, and session handling.

// Runtime configuration interface
@ConfigMapping(prefix = "quarkus.servlet")
public interface ServletRuntimeConfig {
    Optional<MemorySize> bufferSize();
    Optional<Boolean> directBuffers();
    int maxParameters();
}

// CDI producers for servlet objects  
@Singleton
public class ServletProducer {
    @Produces @RequestScoped
    public HttpServletRequest request();
    
    @Produces @RequestScoped
    public HttpServletResponse response();
    
    @Produces @RequestScoped
    public HttpSession session();
}

Runtime API

Build-time API

Extension points for registering servlets, filters, and listeners during application build.

// Register servlets at build time
public class ServletBuildItem extends MultiBuildItem {
    public static Builder builder(String name, String servletClass);
    public String getName();
    public String getServletClass();
    public List<String> getMappings();
}

// Register filters at build time
public class FilterBuildItem extends MultiBuildItem {
    public static Builder builder(String name, String filterClass);
    public String getName();
    public String getFilterClass();
    public List<FilterMappingInfo> getMappings();
}

Build-time API

Configuration

Runtime and build-time configuration options for servlet behavior, security, and performance tuning.

// Runtime configuration properties (quarkus.servlet.*)
public interface ServletRuntimeConfig {
    @WithDefault("1000")
    int maxParameters();
    
    Optional<MemorySize> bufferSize();
    Optional<Boolean> directBuffers();
}

Configuration