Apache Sling Default GET Servlets
July 16, 2026 ยท View on GitHub
Apache Sling Default GET Servlets
This module is part of the Apache Sling project.
This bundle provides Sling's default GET and HEAD servlet implementations for:
- HTML rendering
- Plain-text rendering
- JSON rendering
- XML rendering
- Binary stream delivery
- Redirect handling (
jcr:contentresources) - Sling runtime info and JCR version info endpoints
Requirements
- Java 17
- Maven 3.9+
Build and test
# Build shaded bundle and sources
mvn clean package
# Run unit/integration tests
mvn test
# Run a single test class
mvn test -Dtest=JsonRendererServletTest
# Run a single test method
mvn test -Dtest=JsonRendererServletTest#testMethod
# Check or apply formatting (Spotless via sling-bundle-parent)
mvn spotless:check
mvn spotless:apply
# Verify license headers
mvn apache-rat:check
# Install locally without tests
mvn install -DskipTests
To deploy to a running Sling instance (there is no local dev server in this module):
mvn sling:install
Build artifacts
- The package phase produces the deployable shaded bundle:
target/org.apache.sling.servlets.get-<version>.jar
- Original (pre-shade) artifacts are also generated:
target/original-org.apache.sling.servlets.get-<version>.jar
- Source JARs are generated for both shaded and original variants.
- OSGi baseline comparison reports are generated under
target/baseline/.
Implementation notes
- Uses OSGi R7 Declarative Services annotations (
org.osgi.service.component.annotations). - Uses OSGi Metatype annotations (
org.osgi.service.metatype.annotations) for servlet configuration. - Uses Jakarta Servlet (
jakarta.servlet) and Jakarta JSON (jakarta.json) APIs at runtime, while keepingjavax.servlet-apias a provided compatibility dependency. - Targets Sling API
3.x(SlingJakartaHttpServletRequest/SlingJakartaHttpServletResponse). - Produces a shaded JAR at package time.
- Relocates
org.apache.jackrabbit.utiltoorg.apache.sling.servlets.get.impl.jackrabbitand inlinesISO8601. - Keeps
javax.jcrimports optional inbnd.bndfor environments without JCR packages. - Uses OWASP Java Encoder (
org.owasp.encoder) in rendering paths. - Uses SLF4J (
org.slf4j) for logging. - This module does not export a public API package; implementation lives under
org.apache.sling.servlets.get.impl.
Project layout
pom.xml Maven build descriptor
bnd.bnd OSGi import and inlined resource instructions
src/
main/java/org/apache/sling/servlets/get/impl/
DefaultGetServlet.java Dispatcher for GET/HEAD by selector/extension
RedirectServlet.java Redirect handling
SlingInfoServlet.java Sling runtime info endpoint
VersionInfoServlet.java JCR version info endpoint
helpers/
Renderer.java
HtmlRenderer.java
JsonRenderer.java
PlainTextRenderer.java
XMLRenderer.java
StreamRenderer.java
HeadServletResponse.java
util/
JsonObjectCreator.java
JsonToText.java
ResourceTraversor.java
test/java/... JUnit 4 + Mockito + Sling Mock tests
test/resources/ JSON fixtures (for example `data.json`, `samplefile.json`)
target/baseline/ OSGi baseline comparison output (build-time)
