CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-springframework-boot--spring-boot-starter-jetty

Starter for using Jetty as the embedded servlet container in Spring Boot applications

Pending
Overview
Eval results
Files

servlet-web-server.mddocs/

Servlet Web Server

Core servlet container functionality using Jetty as the embedded server. Provides complete servlet container capabilities with Spring Boot integration, supporting traditional servlet-based web applications with blocking I/O.

Capabilities

JettyServletWebServerFactory

Creates and configures Jetty servlet web server instances with comprehensive customization options.

/**
 * Factory for creating JettyWebServer instances configured for servlet applications
 */
public class JettyServletWebServerFactory 
    extends AbstractServletWebServerFactory 
    implements ConfigurableJettyWebServerFactory, ResourceLoaderAware {
    
    /** Create factory with default configuration */
    public JettyServletWebServerFactory();
    
    /** Create factory with specified port */
    public JettyServletWebServerFactory(int port);
    
    /** Create factory with context path and port */
    public JettyServletWebServerFactory(String contextPath, int port);
    
    /** Create web server with servlet context initializers */
    public WebServer getWebServer(ServletContextInitializer... initializers);
    
    /** Add server customizers for additional configuration */
    public void addServerCustomizers(JettyServerCustomizer... customizers);
    
    /** Get collection of configured server customizers */
    public Collection<JettyServerCustomizer> getServerCustomizers();
    
    /** Set number of acceptor threads */
    public void setAcceptors(int acceptors);
    
    /** Set number of selector threads */
    public void setSelectors(int selectors);
    
    /** Configure forward headers handling */
    public void setUseForwardHeaders(boolean useForwardHeaders);
    
    /** Set thread pool configuration */
    public void setThreadPool(ThreadPool threadPool);
    
    /** Get the configured thread pool */
    public ThreadPool getThreadPool();
    
    /** Set maximum number of connections */
    public void setMaxConnections(int maxConnections);
    
    /** Set resource loader for loading resources */
    public void setResourceLoader(ResourceLoader resourceLoader);
    
    /** Set collection of server customizers */
    public void setServerCustomizers(Collection<? extends JettyServerCustomizer> customizers);
    
    /** Add Jetty configurations */
    public void addConfigurations(Configuration... configurations);
    
    /** Set Jetty configurations */
    public void setConfigurations(Collection<? extends Configuration> configurations);
    
    /** Get configured Jetty configurations */
    public Collection<Configuration> getConfigurations();
}

Usage Examples:

@Configuration
public class JettyServletConfig {
    
    @Bean
    public JettyServletWebServerFactory jettyServletWebServerFactory() {
        JettyServletWebServerFactory factory = new JettyServletWebServerFactory(8080);
        
        // Configure acceptor and selector threads
        factory.setAcceptors(2);
        factory.setSelectors(4);
        
        // Enable forward headers
        factory.setUseForwardHeaders(true);
        
        // Add custom server configuration
        factory.addServerCustomizers(server -> {
            // Configure server connectors
            ServerConnector connector = new ServerConnector(server);
            connector.setPort(8080);
            connector.setIdleTimeout(30000);
            server.addConnector(connector);
        });
        
        return factory;
    }
}

JettyWebServer

The actual web server implementation that manages the Jetty server lifecycle.

/**
 * Jetty-based implementation of WebServer interface
 */
public class JettyWebServer implements WebServer {
    
    /** Create Jetty web server with given server instance */
    public JettyWebServer(Server server);
    
    /** Create Jetty web server with server and auto-start option */
    public JettyWebServer(Server server, boolean autoStart);
    
    /** Start the Jetty server */
    public void start() throws WebServerException;
    
    /** Stop the Jetty server gracefully */
    public void stop() throws WebServerException;
    
    /** Get the port the server is running on */
    public int getPort();
    
    /** Get the underlying Jetty Server instance */
    public Server getServer();
    
    /** Shutdown the server gracefully with timeout */
    public void shutDownGracefully(GracefulShutdownCallback callback);
    
    /** Destroy the server */
    public void destroy();
}

Servlet Context Configuration

Configuration classes for servlet-specific Jetty setup.

/**
 * Jetty-specific embedded web application context
 */
public class JettyEmbeddedWebAppContext extends WebAppContext {
    
    /** Create context with default configuration */
    public JettyEmbeddedWebAppContext();
    
    /** Create context with web app and context path */
    public JettyEmbeddedWebAppContext(String webApp, String contextPath);
    
    /** Set temporary directory for web app */
    public void setTempDirectory(File tempDirectory);
    
    /** Configure class loading behavior */
    public void setParentLoaderPriority(boolean parentLoaderPriority);
    
    /** Set session timeout in minutes */
    public void setSessionTimeout(int sessionTimeout);
}

/**
 * Configuration for servlet context initializers
 */
public class ServletContextInitializerConfiguration {
    
    /** Apply initializers to servlet context */
    public static void apply(ServletContextInitializer[] initializers, 
                           ServletContext servletContext);
}

Error Handling

Jetty-specific error handling configuration.

/**
 * Custom error handler for Jetty embedded applications
 */
public class JettyEmbeddedErrorHandler extends ErrorHandler {
    
    /** Create error handler with default configuration */
    public JettyEmbeddedErrorHandler();
    
    /** Handle errors and generate appropriate responses */
    public void handle(String target, Request baseRequest, 
                      HttpServletRequest request, HttpServletResponse response);
    
    /** Set whether to show server information in error pages */
    public void setShowServlet(boolean showServlet);
    
    /** Set whether to show stack traces in error pages */
    public void setShowStacks(boolean showStacks);
}

Configuration Examples:

@Configuration
public class JettyErrorConfig {
    
    @Bean
    public JettyServletWebServerFactory jettyFactory() {
        JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
        
        factory.addServerCustomizers(server -> {
            // Configure custom error handler
            JettyEmbeddedErrorHandler errorHandler = new JettyEmbeddedErrorHandler();
            errorHandler.setShowStacks(false);
            errorHandler.setShowServlet(false);
            
            // Apply to all contexts
            Handler.Collection handlers = new Handler.Collection();
            handlers.setHandlers(new Handler[]{
                new DefaultHandler(),
                errorHandler
            });
            server.setHandler(handlers);
        });
        
        return factory;
    }
}

Graceful Shutdown

Support for graceful server shutdown with connection draining.

/**
 * Handles graceful shutdown of Jetty server
 */
public class GracefulShutdown implements TomcatConnectorCustomizer {
    
    /** Create graceful shutdown handler */
    public GracefulShutdown();
    
    /** Initiate graceful shutdown with callback */
    public void shutDownGracefully(GracefulShutdownCallback callback);
    
    /** Set shutdown timeout period */
    public void setTimeout(Duration timeout);
}

Install with Tessl CLI

npx tessl i tessl/maven-org-springframework-boot--spring-boot-starter-jetty

docs

http-client.md

index.md

reactive-web-server.md

server-configuration.md

servlet-web-server.md

websocket-support.md

tile.json