From ea93cdf8a3f1a1a09a0a93844ad2f0a88dd53ff8 Mon Sep 17 00:00:00 2001 From: Boubaker Khanfir Date: Sun, 7 Jun 2026 18:41:41 +0100 Subject: [PATCH] fix: Clean Input Stream When using getRequestDispatcher Prior to this change, when using the 'getRequestDispatcher' in Wrapped ServletContext, the used InputStream isn't closed. This change ensure to close the InputStream once the check is made. --- .../java/org/exoplatform/container/PortalContainer.java | 4 ++++ .../org/exoplatform/container/PortalContainerContext.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java b/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java index e743a036d..5a990edf1 100644 --- a/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java +++ b/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainer.java @@ -166,6 +166,10 @@ Set getWebAppInitContexts() return webAppContexts; } + public Set getServletContexts() { + return Collections.unmodifiableSet(webAppContexts); + } + /** * This gives the merged {@link ClassLoader} between the {@link PortalContainerClassLoader} and the * {@link ClassLoader} of the web application. diff --git a/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainerContext.java b/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainerContext.java index 5e498b955..33dbb8789 100644 --- a/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainerContext.java +++ b/exo.kernel.container/src/main/java/org/exoplatform/container/PortalContainerContext.java @@ -20,6 +20,7 @@ import org.exoplatform.container.util.Utils; +import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -245,6 +246,11 @@ public RequestDispatcher getRequestDispatcher(String path) final InputStream is = context.getResourceAsStream(Utils.getPathOnly(path)); if (is != null) { + try { + is.close(); + } catch (IOException e) { + log("Error closing Input String of file '%s'".formatted(path)); + } // The resource exists within this servlet context return context.getRequestDispatcher(path); }