Quarkus extension deployment module that provides Jackson JSON serialization support for RESTEasy Classic REST services
npx @tessl/cli install tessl/maven-io-quarkus--quarkus-resteasy-jackson-deployment@3.26.00
# Quarkus RESTEasy Classic Jackson Deployment
1
2
A Quarkus extension deployment module that enables Jackson JSON serialization support for RESTEasy Classic REST services. This module handles build-time configuration and setup for integrating Jackson JSON processing with RESTEasy Classic in Quarkus applications.
3
4
## Package Information
5
6
- **Package Name**: io.quarkus:quarkus-resteasy-jackson-deployment
7
- **Package Type**: maven
8
- **Language**: Java
9
- **Version**: 3.26.2
10
- **Installation**: This is a deployment module that works alongside the runtime module (`io.quarkus:quarkus-resteasy-jackson`)
11
12
## Core Imports
13
14
```java
15
import io.quarkus.resteasy.jackson.deployment.ResteasyJacksonProcessor;
16
import io.quarkus.deployment.annotations.BuildStep;
17
import io.quarkus.deployment.annotations.BuildProducer;
18
import io.quarkus.deployment.builditem.FeatureBuildItem;
19
import io.quarkus.deployment.Feature;
20
```
21
22
## Basic Usage
23
24
This deployment module is used internally by the Quarkus build system and typically not directly by application developers. When the RESTEasy Jackson extension is included in a Quarkus project, this deployment module automatically registers the necessary build-time configuration.
25
26
```xml
27
<!-- Add to pom.xml dependencies to enable Jackson support for RESTEasy Classic -->
28
<dependency>
29
<groupId>io.quarkus</groupId>
30
<artifactId>quarkus-resteasy-jackson</artifactId>
31
</dependency>
32
```
33
34
The deployment module then ensures proper integration:
35
36
```java
37
// Example REST endpoint that benefits from this deployment module
38
@Path("/api")
39
@Produces(MediaType.APPLICATION_JSON)
40
public class ExampleResource {
41
42
@GET
43
public ExampleDto getData() {
44
return new ExampleDto("example", 42);
45
}
46
47
@POST
48
@Consumes(MediaType.APPLICATION_JSON)
49
public Response createData(ExampleDto data) {
50
// Jackson serialization/deserialization handled automatically
51
return Response.ok().build();
52
}
53
}
54
```
55
56
## Architecture
57
58
This deployment module follows the standard Quarkus extension pattern:
59
60
- **Build-time Processing**: Registers features during the Quarkus build process
61
- **Feature Registration**: Registers the `RESTEASY_JACKSON` feature in the Quarkus build system
62
- **Extension Ecosystem**: Works in conjunction with RESTEasy deployment and Jackson deployment modules
63
64
## Capabilities
65
66
### Build-time Feature Registration
67
68
The core functionality provided by this deployment module is registering the RESTEasy Jackson feature during the Quarkus build process.
69
70
```java { .api }
71
package io.quarkus.resteasy.jackson.deployment;
72
73
public class ResteasyJacksonProcessor {
74
75
@BuildStep
76
void feature(BuildProducer<FeatureBuildItem> feature) {
77
feature.produce(new FeatureBuildItem(Feature.RESTEASY_JACKSON));
78
}
79
}
80
```
81
82
#### ResteasyJacksonProcessor
83
84
The main build processor class that handles feature registration.
85
86
```java { .api }
87
public class ResteasyJacksonProcessor {
88
89
@BuildStep
90
void feature(BuildProducer<FeatureBuildItem> feature) {
91
feature.produce(new FeatureBuildItem(Feature.RESTEASY_JACKSON));
92
}
93
}
94
```
95
96
### Build Step Method
97
98
The feature registration method that enables Jackson JSON serialization for RESTEasy Classic.
99
100
```java { .api }
101
@BuildStep
102
void feature(BuildProducer<FeatureBuildItem> feature) {
103
feature.produce(new FeatureBuildItem(Feature.RESTEASY_JACKSON));
104
}
105
```
106
107
## Types
108
109
### Quarkus Deployment Types
110
111
```java { .api }
112
@interface BuildStep {
113
// Quarkus build-time annotation
114
}
115
116
interface BuildProducer<T> {
117
void produce(T item);
118
}
119
120
class FeatureBuildItem {
121
FeatureBuildItem(Feature feature);
122
FeatureBuildItem(String name);
123
String getName();
124
}
125
126
enum Feature {
127
RESTEASY_JACKSON,
128
// ... other features
129
130
String getName();
131
}
132
```
133
134
## Extension Configuration
135
136
The extension is configured via `quarkus-extension.yaml`:
137
138
- **Name**: "RESTEasy Classic Jackson"
139
- **Status**: stable
140
- **Categories**: ["web", "serialization"]
141
- **Keywords**: ["resteasy-jackson", "jaxrs-json", "resteasy-json", "resteasy", "jaxrs", "json", "jackson", "rest", "jakarta-rest"]
142
- **Supported Languages**: Java, Kotlin, Scala
143
- **Configuration Prefixes**: ["quarkus.resteasy.", "quarkus.jackson."]
144
145
## Dependencies
146
147
This deployment module depends on:
148
149
- `io.quarkus:quarkus-resteasy-deployment` - RESTEasy deployment support
150
- `io.quarkus:quarkus-jackson-deployment` - Jackson deployment support
151
- `io.quarkus:quarkus-resteasy-jackson` - Runtime module for actual functionality
152
153
## Build-time Behavior
154
155
During the Quarkus build process, this module:
156
157
1. Registers the `Feature.RESTEASY_JACKSON` feature
158
2. Enables Jackson JSON serialization for RESTEasy Classic endpoints
159
3. Integrates with Quarkus build-time optimization
160
4. Ensures proper native compilation support
161
5. Provides logging information during application bootstrap
162
163
## Usage Context
164
165
This deployment module enables:
166
- Automatic JSON serialization/deserialization for JAX-RS REST endpoints
167
- Integration between Jackson library and RESTEasy Classic framework
168
- Build-time optimization for native compilation
169
- Proper feature registration in the Quarkus ecosystem
170
171
The module works transparently with JAX-RS annotations:
172
- `@Produces(MediaType.APPLICATION_JSON)` for JSON responses
173
- `@Consumes(MediaType.APPLICATION_JSON)` for JSON request bodies
174
- Jackson annotations like `@JsonProperty`, `@JsonIgnore`, etc.
175
- Support for complex Java types including collections, custom objects, and Java 8 time types