or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

error-handling.mdfilter-handling.mdindex.mdlisteners.mdmonitoring.mdservlet-context.mdservlet-handling.mdtesting.md
tile.json

tessl/maven-org-eclipse-jetty--jetty-servlet

Eclipse Jetty servlet container providing comprehensive servlet, filter, and listener integration with lifecycle management and dynamic registration support.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.eclipse.jetty/jetty-servlet@11.0.x

To install, run

npx @tessl/cli install tessl/maven-org-eclipse-jetty--jetty-servlet@11.0.0

index.mddocs/

Eclipse Jetty Servlet

Eclipse Jetty servlet container provides comprehensive servlet, filter, and listener integration with lifecycle management and dynamic registration support. It offers a complete implementation of the Jakarta Servlet specification with embedded server capabilities, programmatic configuration, and extensive testing utilities.

Package Information

  • Package Name: org.eclipse.jetty:jetty-servlet
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-servlet</artifactId>
      <version>11.0.25</version>
    </dependency>

Core Imports

// Core servlet handling
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlet.ServletHolder;

// Filter management
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.FilterMapping;

// Context and lifecycle
import org.eclipse.jetty.servlet.Source;
import org.eclipse.jetty.server.Handler;

// Jakarta Servlet API
import jakarta.servlet.Servlet;
import jakarta.servlet.Filter;
import jakarta.servlet.DispatcherType;

Basic Usage

import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.server.Server;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

// Create a simple servlet
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws IOException {
        resp.getWriter().println("Hello, World!");
    }
}

// Configure servlet context with embedded server
Server server = new Server(8080);

ServletContextHandler context = new ServletContextHandler("/myapp");
context.addServlet(HelloServlet.class, "/hello");

server.setHandler(context);
server.start();

Architecture

The Jetty servlet module follows a hierarchical handler structure:

  • ServletContextHandler: Top-level context managing servlets, filters, and listeners
  • ServletHandler: Core handler for servlet mapping and lifecycle
  • Holders: Wrapper classes (ServletHolder, FilterHolder, ListenerHolder) managing component instances
  • Mappings: URL pattern to component associations (ServletMapping, FilterMapping)
  • Source: Origin tracking for components (embedded, descriptor, annotation)

Capabilities

Servlet Context Management

Create and configure servlet contexts with comprehensive session, security, and error handling support.

public class ServletContextHandler extends ContextHandler {
    public static final int SESSIONS = 1;
    public static final int SECURITY = 2;
    public static final int NO_SESSIONS = 0;
    public static final int NO_SECURITY = 0;
    
    public ServletContextHandler();
    public ServletContextHandler(int options);
    public ServletContextHandler(HandlerContainer parent, String contextPath);
    public ServletContextHandler(HandlerContainer parent, String contextPath, int options);
    
    public ServletHolder addServlet(String className, String pathSpec);
    public ServletHolder addServlet(Class<? extends Servlet> servlet, String pathSpec);
    public void addServlet(ServletHolder servlet, String pathSpec);
    
    public FilterHolder addFilter(Class<? extends Filter> filterClass, String pathSpec, 
                                  EnumSet<DispatcherType> dispatches);
    public ServletHandler getServletHandler();
    public SessionHandler getSessionHandler();
    public SecurityHandler getSecurityHandler();
}

Servlet Context Management

Servlet Handling

Manage servlet lifecycle, registration, and URL pattern mapping with comprehensive configuration options.

public class ServletHandler extends ScopedHandler {
    public ServletHolder[] getServlets();
    public ServletMapping[] getServletMappings();
    public ServletHolder newServletHolder(Source source);
    public ServletHolder getServlet(String name);
    public ServletHolder addServletWithMapping(String className, String pathSpec);
    public ServletHolder addServletWithMapping(Class<? extends Servlet> servlet, String pathSpec);
    public void addServlet(ServletHolder servletHolder);
    public void addServletMapping(ServletMapping servletMapping);
}

public class ServletHolder extends Holder<Servlet> {
    public ServletHolder();
    public ServletHolder(String name, Class<? extends Servlet> servlet);
    public ServletHolder(String name, Servlet servlet);
    
    public void setServlet(Servlet servlet);
    public Servlet getServlet();
    public int getInitOrder();
    public void setInitOrder(int order);
    public boolean isEnabled();
    public void setEnabled(boolean enabled);
}

Servlet Handling

Filter Handling

Configure request/response filtering with dispatcher type control and URL pattern matching.

public class FilterHolder extends Holder<Filter> {
    public FilterHolder();
    public FilterHolder(Class<? extends Filter> filter);
    public FilterHolder(Filter filter);
    
    public void setFilter(Filter filter);
    public Filter getFilter();
    public FilterRegistration.Dynamic getRegistration();
}

public class FilterMapping implements Dumpable {
    public static final int REQUEST = 1;
    public static final int FORWARD = 2;
    public static final int INCLUDE = 4;
    public static final int ERROR = 8;
    public static final int ASYNC = 16;
    public static final int ALL = 31;
    
    public String getFilterName();
    public void setFilterName(String filterName);
    public String[] getPathSpecs();
    public void setPathSpecs(String[] pathSpecs);
    public EnumSet<DispatcherType> getDispatcherTypes();
    public void setDispatcherTypes(EnumSet<DispatcherType> dispatcherTypes);
}

Filter Handling

Listener Management

Handle servlet context events and lifecycle callbacks with decoration capabilities.

public class ListenerHolder extends BaseHolder<EventListener> {
    public ListenerHolder();
    public ListenerHolder(Source source);
    public ListenerHolder(Class<? extends EventListener> listener);
    
    public void setListener(EventListener listener);
    public EventListener getListener();
}

public class DecoratingListener implements ServletContextAttributeListener {
    public DecoratingListener(ServletContextHandler context, String attributeName);
    
    public void attributeAdded(ServletContextAttributeEvent event);
    public void attributeRemoved(ServletContextAttributeEvent event);
    public void attributeReplaced(ServletContextAttributeEvent event);
}

Listener Management

Error Handling

Map HTTP errors and exceptions to custom error pages with comprehensive error response management.

public class ErrorPageErrorHandler extends ErrorHandler 
        implements ErrorHandler.ErrorPageMapper {
    public ErrorPageErrorHandler();
    
    public String getErrorPage(HttpServletRequest request);
    public void addErrorPage(String pathSpec, String error);
    public void addErrorPage(int code, String error);
    public void addErrorPage(Class<? extends Throwable> exception, String error);
    public Map<String, String> getErrorPages();
    public void setErrorPages(Map<String, String> errorPages);
}

Error Handling

Testing Utilities

Comprehensive testing framework for servlets without requiring a full server deployment.

public class ServletTester extends ContainerLifeCycle {
    public ServletTester();
    public ServletTester(String contextPath);
    
    public ServletContextHandler getContext();
    public void setContextPath(String contextPath);
    public String getContextPath();
    public void addServlet(Class<? extends Servlet> servlet, String pathSpec);
    public ServletHolder addServlet(String className, String pathSpec);
    public void addFilter(Class<? extends Filter> filter, String pathSpec, 
                          EnumSet<DispatcherType> dispatches);
    public String getResponses(String request);
    public String getResponses(String request, long idleFor, TimeUnit units);
}

Testing Utilities

Monitoring and Statistics

Server monitoring capabilities with JMX support and comprehensive statistics reporting.

public class StatisticsServlet extends HttpServlet {
    public StatisticsServlet();
    
    public void init(ServletConfig config);
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
}

Monitoring and Statistics

Core Types

public abstract class BaseHolder<T> extends AbstractLifeCycle implements Dumpable {
    public enum Source {
        EMBEDDED, JAKARTA_API, DESCRIPTOR, ANNOTATION
    }
    
    public Source getSource();
    public void initialize();
    public String getClassName();
    public Class<? extends T> getHeldClass();
    public ServletHandler getServletHandler();
    public void setServletHandler(ServletHandler servletHandler);
    public void setClassName(String className);
    public void setHeldClass(Class<? extends T> held);
}

public abstract class Holder<T> extends BaseHolder<T> {
    public String getDisplayName();
    public String getInitParameter(String param);
    public Enumeration<String> getInitParameterNames();
    public Map<String, String> getInitParameters();
    public String getName();
    public void setDisplayName(String name);
    public void setInitParameter(String param, String value);
    public void setInitParameters(Map<String, String> map);
    public void setName(String name);
    public void setAsyncSupported(boolean suspendable);
    public boolean isAsyncSupported();
}

public class ServletMapping {
    public ServletMapping();
    public ServletMapping(Source source);
    
    public String[] getPathSpecs();
    public void setPathSpecs(String[] pathSpecs);
    public void setPathSpec(String pathSpec);
    public String getServletName();
    public void setServletName(String servletName);
    public Source getSource();
}

public class Source {
    public static final Source EMBEDDED = new Source(Origin.EMBEDDED, null);
    public static final Source JAVAX_API = new Source(Origin.JAKARTA_API, null);
    
    public enum Origin { EMBEDDED, JAKARTA_API, DESCRIPTOR, ANNOTATION }
    
    public Source(Origin o, String resource);
    public Origin getOrigin();
    public String getResource();
}