org.openrewrite.java.migrate.javax.HttpSessionInvalidate
Do not rely on HttpSession invalidate method for programmatic security logout. Add the HttpServletRequest logout method which was introduced in Java EE 6 as part of the Servlet 3.0 specification.
Recipe source
GitHub: HttpSessionInvalidate.java, Issue Tracker, Maven Central
This recipe is available under the Moderne Source Available License.
Used by
This recipe is used as part of the following composite recipes:
Example
- java
- Diff
Before
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
class Foo {
void logOut(HttpServletRequest req, HttpServletResponse res) {
HttpSession session = req.getSession(false);
session.invalidate();
res.sendRedirect("login.html");
}
}
After
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
class Foo {
void logOut(HttpServletRequest req, HttpServletResponse res) {
HttpSession session = req.getSession(false);
req.logout();
res.sendRedirect("login.html");
}
}
Usage
This recipe has no required configuration options. It can be activated by adding a dependency on `org.openrewrite.recipe:rewrite-migrate-java` in your build file or by running a shell command (in which case no build changes are needed):
- Gradle
- Gradle init script
- Maven POM
- Maven Command Line
- Moderne CLI
- Add the following to your
build.gradlefile:build.gradle
plugins {
id("org.openrewrite.rewrite") version("latest.release")
}
rewrite {
activeRecipe("org.openrewrite.java.migrate.javax.HttpSessionInvalidate")
setExportDatatables(true)
}
repositories {
mavenCentral()
}
dependencies {
rewrite("org.openrewrite.recipe:rewrite-migrate-java:3.31.3")
} - Run
gradle rewriteRunto run the recipe.
See how this recipe works across multiple open-source repositories

The community edition of the Moderne platform enables you to easily run recipes across thousands of open-source repositories.
Please contact Moderne for more information about safely running the recipes on your own codebase in a private SaaS.
Data Tables
- SourcesFileResults
- SearchResults
- SourcesFileErrors
- RecipeRunStats
Source files that had results
org.openrewrite.table.SourcesFileResults
Source files that were modified by the recipe run.
| Column Name | Description |
|---|---|
| Source path before the run | The source path of the file before the run. null when a source file was created during the run. |
| Source path after the run | A recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run. |
| Parent of the recipe that made changes | In a hierarchical recipe, the parent of the recipe that made a change. Empty if this is the root of a hierarchy or if the recipe is not hierarchical at all. |
| Recipe that made changes | The specific recipe that made a change. |
| Estimated time saving | An estimated effort that a developer to fix manually instead of using this recipe, in unit of seconds. |
| Cycle | The recipe cycle in which the change was made. |