Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
f17c782
Updated pom.xml to use jakarta instead of javax, upgraded few other j…
bhagyashriSawkar Oct 24, 2024
8db4e87
Added java 17 to build platforms
bhagyashriSawkar Oct 24, 2024
9724eca
Updated package namespace from javax.* to jakarta.* whereever used. A…
bhagyashriSawkar Oct 24, 2024
576c7a6
Merge branch 'master' of https://github.com/bhagyashriSawkar/jruby-ra…
bhagyashriSawkar Feb 19, 2025
3182a7f
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Jul 22, 2025
9c03176
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 9, 2025
1c3aed3
Copy old HttpUtils.parseQueryString from Servlet API
chadlwilson Aug 9, 2025
4773440
[build] Target Java 17 only
chadlwilson Aug 9, 2025
9a77f0d
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 9, 2025
95243be
[chore] Minor code inspection & style fixes for modern Java 17
chadlwilson Aug 9, 2025
cfdfc25
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 12, 2025
6c76aee
[build] Re-introduce Java 8 compatibility
chadlwilson Aug 12, 2025
bdfafa3
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 12, 2025
a897448
[chore] Update history
chadlwilson Aug 12, 2025
e44c80e
Correct references to jakarta types, making them consistent
chadlwilson Aug 12, 2025
e55f7e7
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 12, 2025
4228a3e
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 12, 2025
4f75182
Fix typo
chadlwilson Aug 12, 2025
b3ca5e6
Remove old <= Servlet API 2.5 support
chadlwilson Aug 13, 2025
10a3ddc
Remove unnecessary serialization code
chadlwilson Aug 13, 2025
52435a4
Bump version
chadlwilson Aug 13, 2025
381f33e
Add comments into Spring classes copied into jruby-rack
chadlwilson Aug 13, 2025
ecb029b
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 13, 2025
4a4de19
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 13, 2025
be1d4a0
[chore] Align import ordering/format
chadlwilson Aug 13, 2025
c667d36
[chore] Undo unnecessary syntax change
chadlwilson Aug 13, 2025
35dd544
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 14, 2025
d8897a5
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 15, 2025
f002336
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 21, 2025
8d3f077
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 21, 2025
50bc6c2
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 21, 2025
4013b4f
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 24, 2025
175aebe
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 24, 2025
b2eaac2
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 24, 2025
5649c60
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 24, 2025
09e609e
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 30, 2025
dc9fd1e
Merge branch 'master' into jakarta-update
chadlwilson Sep 19, 2025
66f90fd
Merge branch 'master' into jakarta-update
chadlwilson Oct 7, 2025
f9978fe
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Oct 11, 2025
c717dcb
Merge branch 'master' into jakarta-update
chadlwilson Oct 16, 2025
b3f2bf4
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Nov 7, 2025
94b64ae
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Nov 16, 2025
a38e096
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Feb 6, 2026
105b21f
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Mar 3, 2026
5d6cd35
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Apr 17, 2026
2607540
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 5, 2026
63238a4
Merge remote-tracking branch 'upstream/master' into jakarta-update
chadlwilson Aug 17, 2026
d50fe29
Merge remote-tracking branch 'refs/remotes/upstream/master' into jaka…
chadlwilson Aug 25, 2026
c8d27aa
Merge remote-tracking branch 'refs/remotes/upstream/master' into jaka…
chadlwilson Aug 25, 2026
244b6c5
test: migrate to Spring 6.2 since we no longer need to target Java 8/…
chadlwilson Aug 25, 2026
358d294
chore: indent fix
chadlwilson Aug 25, 2026
c8b6fa2
chore: clarify servlet API compat ranges
chadlwilson Aug 25, 2026
3c4bfd5
chore: update readme
chadlwilson Aug 25, 2026
3cadabc
test: bump test el-api to latest compatible
chadlwilson Aug 25, 2026
3a58ab2
Merge branch 'master' into jakarta-update
chadlwilson Aug 30, 2026
655308d
Merge branch 'master' into jakarta-update
chadlwilson Aug 30, 2026
66b794a
Merge branch 'master' into jakarta-update
chadlwilson Aug 31, 2026
afa3b5e
Merge branch 'refs/heads/master' into jakarta-update
chadlwilson Aug 31, 2026
46132db
chore: make master the `2.x`/current working release
chadlwilson Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,56 @@ updates:
update-types: [ "version-update:semver-major" ]

# Maintained stable branches
- package-ecosystem: github-actions
target-branch: "1.3-stable"
commit-message:
prefix: "1.3.x: "
directory: "/"
schedule:
interval: weekly
groups:
actions-deps:
patterns: [ "*" ]

- package-ecosystem: maven
target-branch: "1.3-stable"
commit-message:
prefix: "1.3.x: "
directory: "/"
schedule:
interval: weekly
groups:
maven-deps:
dependency-type: "production"
maven-dev-deps:
dependency-type: "development"
ignore:
- dependency-name: "org.jruby*"
update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
- dependency-name: "jakarta*"
update-types: [ "version-update:semver-major" ]
- dependency-name: "javax*"
update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
- dependency-name: "org.springframework*"
update-types: [ "version-update:semver-major" ]

- package-ecosystem: bundler
target-branch: "1.3-stable"
commit-message:
prefix: "1.3.x: "
directories:
- "/"
schedule:
interval: weekly
allow:
- dependency-type: all
groups:
ruby-deps:
patterns: [ "*" ]
ignore:
- dependency-name: "rack"
update-types: [ "version-update:semver-major" ]

- package-ecosystem: github-actions
target-branch: "1.2-stable"
commit-message:
Expand Down
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
## 1.3.0 (UNRELEASED)
## 2.0.0 (UNRELEASED)

- Support Jakarta Servlet API 5.0 → 6.1 (Jakarta EE 9 → 11)

## 1.3.0 (UNRELEASED)

- Officially support Javax Servlet API 4.0 (JEE 8)
- Refactor logging for more sane defaults
- Refactor logging for more sane defaults and improved performance
- Remove long-deprecated configuration and API functionality

For most users this should be a minor upgrade; as long as you do not depend on functionality deprecated within
Expand Down
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
[![Gem Version](https://img.shields.io/gem/v/jruby-rack)](https://rubygems.org/gems/jruby-rack)
[![Jar Version](https://img.shields.io/maven-central/v/org.jruby.rack/jruby-rack)](https://central.sonatype.com/artifact/org.jruby.rack/jruby-rack)
[![master Build Status](https://github.com/jruby/jruby-rack/actions/workflows/maven.yml/badge.svg)](https://github.com/jruby/jruby-rack/actions/workflows/maven.yml?query=branch%3Amaster) (master)
[![1.3.x Build Status](https://github.com/jruby/jruby-rack/actions/workflows/maven.yml/badge.svg?branch=1.3-stable)](https://github.com/jruby/jruby-rack/actions/workflows/maven.yml?query=branch%3A1.3-stable) (1.3.x)
[![1.2.x Build Status](https://github.com/jruby/jruby-rack/actions/workflows/maven.yml/badge.svg?branch=1.2-stable)](https://github.com/jruby/jruby-rack/actions/workflows/maven.yml?query=branch%3A1.2-stable) (1.2.x)

JRuby-Rack is a lightweight adapter for the Java Servlet environment that allows
Expand All @@ -13,13 +14,13 @@ For more information on Rack, visit http://rack.github.io/.

## Compatibility

| JRuby-Rack Series | Status | Rack | JRuby | Java | Rails | Target Servlet API | Notes |
|----------------------------------------------------------------|---------------|-----------|-------------|------|-----------|---------------------|----------------------------------------------------------------------|
| **2.0 (_planned_, _unreleased_)** | Dev | 2.2 | 10.0 → 10.1 | 21+ | 7.2 → 8.0 | 5.0+ (Jakarta EE 9) | ❌ Servlet < 5.0 containers will not work |
| **1.3 (master, _unreleased_)** | Dev | 2.2 | 10.0 → 10.1 | 21+ | 7.2 → 8.0 | 4.0 (Java EE 8) | ✅ _Unofficial_: Servlet 2.5 → 3.1 & Rails 6.1 → 7.1 also likely OK. |
| [**1.2**](https://github.com/jruby/jruby-rack/tree/1.2-stable) | Maintained | 2.2 | 9.3 → 10.1 | 8+ | 5.0 → 8.0 | 3.0 (Java EE 6) | ✅ _Unofficial_: Servlet 3.1 → 4.0 also OK with most containers |
| [**1.1**](https://github.com/jruby/jruby-rack/tree/1.1-stable) | EOL @ 2024-05 | 1.x → 2.2 | 1.6 → 9.4 | 6+ | 2.1 → 5.2 | 2.5 (Java EE 5) | ✅ _Unofficial_: Servlet 3.0 → 4.0 also OK with most containers |
| [**1.0**](https://github.com/jruby/jruby-rack/tree/1.0.10) | EOL @ 2011-11 | 0.9 → 1.x | 1.1 → 1.9 | 5+ | 2.1 → 3.x | 2.5 (Java EE 5) | |
| JRuby-Rack Series | Status | Rack | JRuby | Java | Rails | Servlet API (min → mostly supported) | Notes |
|------------------------------------------------------------------------------------------|---------------|-----------|-------------|------|-----------|--------------------------------------|-----------------------------------------------------------|
| **2.0 (_master_, _unreleased_)** | Dev | 2.2 | 10.0 → 10.1 | 21+ | 7.2 → 8.0 | 5.0 → 6.1 (Jakarta EE 9 → 11) | ❌ Servlet < 5.0 containers will not work |
| [**1.3**](https://github.com/jruby/jruby-rack/tree/1.3-stable) (_planned_, _unreleased_) | Dev | 2.2 | 10.0 → 10.1 | 21+ | 7.2 → 8.0 | 4.0 (Java EE 8) | ✅ _Unofficial_: Rails 6.1 → 7.1 untested, but likely OK. |
| [**1.2**](https://github.com/jruby/jruby-rack/tree/1.2-stable) | Maintained | 2.2 | 9.3 → 10.1 | 8+ | 5.0 → 8.0 | 3.0 → 4.0 (Java EE 6 → 7) | |
| [**1.1**](https://github.com/jruby/jruby-rack/tree/1.1-stable) | EOL @ 2024-05 | 1.x → 2.2 | 1.6 → 9.4 | 6+ | 2.1 → 5.2 | 2.5 → 4.0 (Java EE 5 → 7) | |
| [**1.0**](https://github.com/jruby/jruby-rack/tree/1.0.10) | EOL @ 2011-11 | 0.9 → 1.x | 1.1 → 1.9 | 5+ | 2.1 → 3.x | 2.5 (Java EE 5) | |

## Getting Started

Expand Down Expand Up @@ -275,7 +276,7 @@ or available on the application's gem path.
## Logging

JRuby-Rack sets up a delegate logger for Rails that sends logging output to
`javax.servlet.ServletContext#log` by default. If you wish to use a different
`jakarta.servlet.ServletContext#log` by default. If you wish to use a different
logging system, configure `jruby.rack.logging` as follows:

- `servlet_context` (default): Sends log messages to the servlet context.
Expand Down
50 changes: 41 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<groupId>org.jruby.rack</groupId>
<artifactId>jruby-rack</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>2.0.0-SNAPSHOT</version>
<name>JRuby-Rack</name>
<url>https://github.com/jruby/jruby-rack/</url>
<description>
Expand All @@ -19,19 +19,28 @@
</description>

<properties>
<!-- Build related settings -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jruby.maven.plugins.version>3.0.6</jruby.maven.plugins.version>
<gem.home>${project.build.directory}/rubygems</gem.home>

<!-- Version to target at compile time -->
<jruby.compat.version>10.0.6.0</jruby.compat.version>
<jruby.compat.artifact>jruby</jruby.compat.artifact>
<!-- Version to execute tests with -->
<jruby.test.version>${jruby.compat.version}</jruby.test.version>

<jruby.maven.plugins.version>3.0.6</jruby.maven.plugins.version>
<gem.home>${project.build.directory}/rubygems</gem.home>
<!-- Minimum servlet API compatibility to target (Jakarta EE 9) -->
<servlet-api.compat.version>5.0.0</servlet-api.compat.version>
<servlet-jsp-api.compat.version>3.0.0</servlet-jsp-api.compat.version>

<!-- Test Dependencies -->
<servlet-api.test.version>6.1.0</servlet-api.test.version>
<el-api.test.version>6.0.1</el-api.test.version>
<spring.version>6.2.19</spring.version>

<slf4j.version>2.0.18</slf4j.version>
<log4j.version>2.26.1</log4j.version>
<spring.version>5.3.39</spring.version>
</properties>

<issueManagement>
Expand Down Expand Up @@ -91,13 +100,13 @@
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>4.0.4</version>
<version>${servlet-api.compat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>2.3.6</version>
<version>${servlet-jsp-api.compat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -132,20 +141,20 @@
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>3.0.3</version>
<version>${el-api.test.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down Expand Up @@ -230,6 +239,26 @@
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeGroupIds>org.jruby,rubygems</excludeGroupIds>
<!-- compile floor stays off the test classpath; test version copied below -->
<excludeArtifactIds>jakarta.servlet-api</excludeArtifactIds>
</configuration>
</execution>
<execution>
<id>copy-test-servlet-api</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<!-- Use later version of API for testing than we compile against -->
<configuration>
<artifactItems>
<artifactItem>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${servlet-api.test.version}</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
Expand Down Expand Up @@ -273,6 +302,9 @@
<configuration>
<!--suppress UnresolvedMavenProperty -->
<args>-S rake speconly SKIP_SPECS=${skipTests}</args>
<!-- keep the maven-resolved (compile floor) servlet-api off the spec JVM classpath;
spec_helper.rb builds the classpath from target/lib (see copy-test-servlet-api) -->
<addProjectClasspath>false</addProjectClasspath>
</configuration>
</execution>
</executions>
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/org/jruby/rack/AbstractFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
package org.jruby.rack;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.jruby.rack.servlet.RequestCapture;
import org.jruby.rack.servlet.ResponseCapture;
import org.jruby.rack.servlet.ServletRackEnvironment;
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/org/jruby/rack/AbstractServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
package org.jruby.rack;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.jruby.rack.servlet.ServletRackEnvironment;
import org.jruby.rack.servlet.ServletRackResponseEnvironment;

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/jruby/rack/RackDispatcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
package org.jruby.rack;

import java.io.IOException;
import javax.servlet.ServletException;

import jakarta.servlet.ServletException;

/**
*
Expand Down
Loading
Loading