or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

async-processing.mdconfiguration-properties.mdindex.mdmonitoring.mdrequest-processing.mdresource-configuration.mdresource-model.mdspi.mdwadl.md
tile.json

tessl/maven-org-glassfish-jersey-core--jersey-server

Jersey core server implementation for building RESTful Web Services with JAX-RS.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.glassfish.jersey.core/jersey-server@3.1.x

To install, run

npx @tessl/cli install tessl/maven-org-glassfish-jersey-core--jersey-server@3.1.0

index.mddocs/

Jersey Server

Jersey Server is the core server implementation component of Eclipse Jersey, a comprehensive JAX-RS (Jakarta RESTful Web Services 3.1) reference implementation framework. This library provides essential server-side functionality for building RESTful web services in Java, including resource configuration, request/response processing, content negotiation, dependency injection through HK2, validation support, and extensible provider mechanisms.

Package Information

  • Package Name: jersey-server
  • Package Coordinates: org.glassfish.jersey.core:jersey-server
  • Package Type: Maven
  • Language: Java
  • Installation: Add to Maven pom.xml:
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>3.1.10</version>
</dependency>

Core Imports

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.ApplicationHandler;
import org.glassfish.jersey.server.ContainerRequest;
import org.glassfish.jersey.server.ContainerResponse;

Basic Usage

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.ApplicationHandler;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

// Define a simple resource
@Path("/hello")
public class HelloWorldResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "Hello, World!";
    }
}

// Configure and initialize Jersey server
ResourceConfig config = new ResourceConfig();
config.register(HelloWorldResource.class);

// Create application handler for request processing  
ApplicationHandler app = new ApplicationHandler(config);

// Enable package scanning for resources
ResourceConfig scanConfig = new ResourceConfig();
scanConfig.packages("com.example.resources");

// Register multiple resources at once
ResourceConfig multiConfig = new ResourceConfig();
multiConfig.registerClasses(HelloWorldResource.class, OtherResource.class);

Architecture

Jersey Server is built around several key architectural components:

  • ResourceConfig: Central configuration class that manages resource registration, provider configuration, and feature enablement
  • ApplicationHandler: Core request processing engine that handles the complete request lifecycle from routing to response generation
  • Container Integration: Pluggable container model supporting various deployment environments (Servlet, Grizzly, Netty, etc.)
  • Resource Model: Runtime representation of JAX-RS resources with complete metadata for method routing and parameter injection
  • Service Provider Interface (SPI): Extensive extension points for customizing container behavior, validation, monitoring, and lifecycle management
  • Monitoring System: Comprehensive application and request-level monitoring with JMX integration and event-driven statistics collection

Capabilities

Resource Configuration

Primary configuration class for Jersey server applications, providing resource registration, property management, package scanning, and feature configuration. Essential for setting up any Jersey server application.

public class ResourceConfig extends Application 
    implements Configurable<ResourceConfig>, ServerConfig, ApplicationSupplier {
    
    // Constructors
    public ResourceConfig();
    public ResourceConfig(Set<Class<?>> classes);
    public ResourceConfig(Class<?>... classes);
    public ResourceConfig(ResourceConfig original);
    
    // Resource registration
    public ResourceConfig register(Class<?> componentClass);
    public ResourceConfig register(Object component);
    public ResourceConfig registerClasses(Set<Class<?>> classes);
    public ResourceConfig registerClasses(Class<?>... classes);
    
    // Package scanning
    public ResourceConfig packages(String... packages);
    public ResourceConfig packages(boolean recursive, String... packages);
    
    // Property management
    public ResourceConfig property(String name, Object value);
    public ResourceConfig setProperties(Map<String, ?> properties);
}

Resource Configuration

Request Processing

Core request processing functionality including the main application handler, container request/response objects, and lifecycle management. Handles the complete request flow from HTTP input to JAX-RS resource method execution.

public final class ApplicationHandler {
    public ApplicationHandler(Application application);
    public ApplicationHandler(Class<? extends Application> applicationClass);
    
    public Future<ContainerResponse> apply(ContainerRequest requestContext);
    public Future<ContainerResponse> apply(ContainerRequest requestContext, 
                                         OutputStream entityStream);
}

public class ContainerRequest extends InboundMessageContext 
    implements ContainerRequestContext {
    public ContainerRequest(URI baseUri, URI requestUri, String httpMethod,
                          SecurityContext securityContext, PropertiesDelegate propertiesDelegate);
}

public class ContainerResponse implements ContainerResponseContext {
    public ContainerResponse(ContainerRequest requestContext, Response response);
}

Request Processing

Resource Model

Runtime representation and processing of JAX-RS resources, including model validation, method invocation, and parameter handling. Provides complete metadata about resources and their methods for routing and execution.

public final class ResourceModel implements ResourceModelComponent {
    public static Builder builder();
    public Set<Resource> getResources();
    public Set<ResourceModel> getSubResourceModels();
}

public interface ModelProcessor {
    ResourceModel processResourceModel(ResourceModel resourceModel, Configuration configuration);
    ResourceModel processSubResource(ResourceModel subResourceModel, Configuration configuration);
}

public class Parameter extends org.glassfish.jersey.model.Parameter implements AnnotatedElement {
    public Source getSource();
    public String getSourceName();
    public boolean hasDefaultValue();
    public String getDefaultValue();
}

Resource Model

Asynchronous Processing

Server-side asynchronous request processing including async contexts, chunked output, broadcasting, and managed async execution. Enables scalable handling of long-running operations and streaming responses.

public interface AsyncContext extends AsyncResponse {
    ContainerRequest getContainerRequest();
    ContainerResponse getContainerResponse();
}

public class ChunkedOutput<T> extends GenericType<T> implements Closeable {
    public ChunkedOutput(Type chunkType);
    public boolean isClosed();
    public void write(T chunk) throws IOException;
    public void close() throws IOException;
}

public final class Broadcaster<T> implements BroadcasterListener<T> {
    public static <T> Broadcaster<T> createOnly(Class<T> chunkType);
    public void add(ChunkedOutput<T> chunkedOutput);
    public boolean remove(ChunkedOutput<T> chunkedOutput);
    public void broadcast(T chunk);
}

Asynchronous Processing

Service Provider Interface (SPI)

Extension points for container integration, component management, request scoping, validation, and lifecycle management. Enables deep customization of Jersey server behavior and integration with external frameworks.

public interface Container {
    void reload();
    void reload(ResourceConfig configuration);
    ApplicationHandler getApplicationHandler();
    ResourceConfig getConfiguration();
}

public interface ContainerProvider {
    <T> T createContainer(Class<T> type, Application application);
}

public interface ComponentProvider extends org.glassfish.jersey.spi.ComponentProvider {
    void initialize(InjectionManager injectionManager);
}

public interface ExternalRequestScope<T> extends AutoCloseable {
    ExternalRequestContext<T> open();
}

Service Provider Interface

Monitoring and Statistics

Comprehensive monitoring system with application-level and request-level event handling, statistics collection, JMX integration, and performance metrics. Provides detailed insights into application performance and behavior.

public interface ApplicationEventListener {
    void onEvent(ApplicationEvent event);
    RequestEventListener onRequest(RequestEvent requestEvent);
}

public interface MonitoringStatistics {
    ExecutionStatistics getRequestStatistics();
    ResponseStatistics getResponseStatistics();
    Map<String, ResourceStatistics> getUriStatistics();
    Map<Class<?>, ExceptionMapperStatistics> getExceptionMapperStatistics();
}

public interface ExecutionStatistics {
    long getTimeWindowSize();
    TimeUnit getTimeWindowSizeUnit();
    TimeWindowStatistics getTimeWindowStatistics();
}

Monitoring and Statistics

WADL Support

Web Application Description Language (WADL) generation and configuration for automatic API documentation. Provides machine-readable descriptions of RESTful web services.

public interface WadlApplicationContext {
    Application getApplication();
    Grammars getGrammars();
    void setWadlGenerationEnabled(boolean wadlGenerationEnabled);
}

public interface WadlGenerator {
    Application createApplication();
    Resources createResources();
    Resource createResource(org.glassfish.jersey.server.model.Resource resource, String path);
}

public class WadlFeature implements Feature {
    public boolean configure(FeatureContext context);
}

WADL Support

Configuration Properties

Server configuration constants for customizing Jersey server behavior including provider scanning, feature control, validation settings, and performance tuning options.

public final class ServerProperties {
    // Provider scanning
    public static final String PROVIDER_PACKAGES = "jersey.config.server.provider.packages";
    public static final String PROVIDER_SCANNING_RECURSIVE = "jersey.config.server.provider.scanning.recursive";
    public static final String PROVIDER_CLASSPATH = "jersey.config.server.provider.classpath";
    
    // Feature control
    public static final String FEATURE_AUTO_DISCOVERY_DISABLE = "jersey.config.server.disableAutoDiscovery";
    public static final String WADL_FEATURE_DISABLE = "jersey.config.server.wadl.disableWadl";
    public static final String BV_FEATURE_DISABLE = "jersey.config.beanValidation.disable.server";
    
    // Advanced configuration
    public static final String OUTBOUND_CONTENT_LENGTH_BUFFER = "jersey.config.server.contentLength.buffer";
    public static final String REDUCE_CONTEXT_PATH_SLASHES_ENABLED = "jersey.config.server.reduceContextPathSlashesEnabled";
}

Configuration Properties