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

configuration.mddocs/

Configuration

The Quarkus Undertow extension provides both runtime and build-time configuration options for controlling servlet behavior, performance settings, and server configuration.

Configuration Import

Configuration is handled through Quarkus configuration system:

import io.quarkus.undertow.runtime.ServletRuntimeConfig;
import io.quarkus.undertow.deployment.ServletConfig;
import io.smallrye.config.ConfigMapping;

Runtime Configuration

Runtime configuration properties affect the behavior during application execution and can be modified at runtime.

ServletRuntimeConfig

Runtime configuration interface for servlet settings.

@ConfigMapping(prefix = "quarkus.servlet")
public interface ServletRuntimeConfig {
    /**
     * Buffer size for servlet operations
     * Configuration property: quarkus.servlet.buffer-size
     */
    Optional<MemorySize> bufferSize();
    
    /**
     * Whether to use direct buffers
     * Configuration property: quarkus.servlet.direct-buffers
     */
    Optional<Boolean> directBuffers();
    
    /**
     * Maximum number of HTTP request parameters
     * Configuration property: quarkus.servlet.max-parameters
     * Default value: 1000
     */
    @WithDefault("1000")
    int maxParameters();
}

Runtime Configuration Properties

PropertyTypeDefaultDescription
quarkus.servlet.buffer-sizeMemorySize-Buffer size for servlet operations (e.g., "8K", "1M")
quarkus.servlet.direct-buffersboolean-Whether to use direct buffers for improved performance
quarkus.servlet.max-parametersint1000Maximum number of HTTP request parameters

Usage Example

# application.properties
quarkus.servlet.buffer-size=16K
quarkus.servlet.direct-buffers=true
quarkus.servlet.max-parameters=2000

Build-time Configuration

Build-time configuration properties are resolved during application build and cannot be changed at runtime.

ServletConfig

Build-time configuration interface for servlet settings.

@ConfigMapping(prefix = "quarkus.servlet")
public interface ServletConfig {
    /**
     * Context path for servlet content
     * Configuration property: quarkus.servlet.context-path
     */
    Optional<String> contextPath();
    
    /**
     * Default charset for requests and responses
     * Configuration property: quarkus.servlet.default-charset
     * Default value: UTF-8
     */
    @WithDefault("UTF-8")
    String defaultCharset();
}

ServletConfig.ContextPathConverter

Converter for processing context path values.

public static class ContextPathConverter implements Converter<String> {
    /**
     * Convert and validate context path value
     */
    public String convert(String value) throws IllegalArgumentException;
}

Build-time Configuration Properties

PropertyTypeDefaultDescription
quarkus.servlet.context-pathString-Context path for servlet content (e.g., "/api", "/webapp")
quarkus.servlet.default-charsetStringUTF-8Default charset for HTTP requests and responses

Usage Example

# application.properties
quarkus.servlet.context-path=/api
quarkus.servlet.default-charset=UTF-8

Advanced Configuration

Performance Tuning

For high-throughput applications, consider these configuration optimizations:

# Enable direct buffers for better performance
quarkus.servlet.direct-buffers=true

# Increase buffer size for large requests
quarkus.servlet.buffer-size=32K

# Adjust max parameters for complex forms
quarkus.servlet.max-parameters=5000

Development Configuration

For development environments, you might want different settings:

# Development profile (application-dev.properties)
quarkus.servlet.context-path=/dev
quarkus.servlet.max-parameters=500

Production Configuration

For production deployments:

# Production profile (application-prod.properties)
quarkus.servlet.context-path=/
quarkus.servlet.buffer-size=64K
quarkus.servlet.direct-buffers=true
quarkus.servlet.max-parameters=10000

Configuration Injection

You can inject configuration into your application components:

@ApplicationScoped
public class ServletConfigService {
    
    @Inject
    ServletRuntimeConfig runtimeConfig;
    
    public void logConfiguration() {
        System.out.println("Max parameters: " + runtimeConfig.maxParameters());
        runtimeConfig.bufferSize().ifPresent(size -> 
            System.out.println("Buffer size: " + size));
        runtimeConfig.directBuffers().ifPresent(direct -> 
            System.out.println("Direct buffers: " + direct));
    }
}

Environment-specific Configuration

Use Quarkus profiles to configure different environments:

# Base configuration
quarkus.servlet.default-charset=UTF-8

# Development profile
%dev.quarkus.servlet.context-path=/dev
%dev.quarkus.servlet.max-parameters=100

# Test profile  
%test.quarkus.servlet.context-path=/test
%test.quarkus.servlet.max-parameters=50

# Production profile
%prod.quarkus.servlet.context-path=/
%prod.quarkus.servlet.buffer-size=64K
%prod.quarkus.servlet.direct-buffers=true

Types

// Configuration annotations
import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithDefault;
import io.smallrye.config.Converter;

// Memory size type
import io.quarkus.runtime.configuration.MemorySize;

// Standard Java types
import java.util.Optional;

// CDI injection
import jakarta.inject.Inject;
import jakarta.enterprise.context.ApplicationScoped;

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