CtrlK
BlogDocsLog inGet started
Tessl Logo

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.

Pending
Overview
Eval results
Files

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();
}

Install with Tessl CLI

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