diff --git a/server/embedded/src/org/labkey/embedded/LabKeyErrorReportValve.java b/server/embedded/src/org/labkey/embedded/LabKeyErrorReportValve.java new file mode 100644 index 0000000000..f54f501629 --- /dev/null +++ b/server/embedded/src/org/labkey/embedded/LabKeyErrorReportValve.java @@ -0,0 +1,13 @@ +package org.labkey.embedded; + +import org.apache.catalina.valves.ErrorReportValve; + +/** Issue 52415: Allow for Configuration of Default Error Page */ +public class LabKeyErrorReportValve extends ErrorReportValve +{ + public LabKeyErrorReportValve() + { + // Don't show Tomcat version info on its 404 and other error pages + setShowServerInfo(false); + } +} diff --git a/server/embedded/src/org/labkey/embedded/LabKeyServer.java b/server/embedded/src/org/labkey/embedded/LabKeyServer.java index db6f1c07e2..2b7aa79384 100644 --- a/server/embedded/src/org/labkey/embedded/LabKeyServer.java +++ b/server/embedded/src/org/labkey/embedded/LabKeyServer.java @@ -75,7 +75,11 @@ public static void main(String[] args) "server.tomcat.accesslog.enabled", "true", "server.tomcat.accesslog.pattern", "%h %l %u %t \"%r\" %s %b %D %S %I \"%{Referer}i\" \"%{User-Agent}i\" %{LABKEY.username}s %{X-Forwarded-For}i", - "jsonaccesslog.pattern", "%h %t %m %U %s %b %D %S \"%{Referer}i\" \"%{User-Agent}i\" %{LABKEY.username}s %{X-Forwarded-For}i" + "jsonaccesslog.pattern", "%h %t %m %U %s %b %D %S \"%{Referer}i\" \"%{User-Agent}i\" %{LABKEY.username}s %{X-Forwarded-For}i", + + // Issue 52415: Omit stack traces from Tomcat error pages by default, but propagate error messages + "server.error.include-stacktrace", "never", + "server.error.include-message", "always" )); application.setBannerMode(Banner.Mode.OFF); application.run(args); diff --git a/server/embedded/src/org/labkey/embedded/LabKeyTomcatServletWebServerFactory.java b/server/embedded/src/org/labkey/embedded/LabKeyTomcatServletWebServerFactory.java index e7be05d29d..d70bb4b16f 100644 --- a/server/embedded/src/org/labkey/embedded/LabKeyTomcatServletWebServerFactory.java +++ b/server/embedded/src/org/labkey/embedded/LabKeyTomcatServletWebServerFactory.java @@ -1,7 +1,9 @@ package org.labkey.embedded; +import org.apache.catalina.Container; import org.apache.catalina.Host; import org.apache.catalina.core.StandardContext; +import org.apache.catalina.core.StandardHost; import org.apache.catalina.loader.WebappLoader; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.valves.JsonAccessLogValve; @@ -54,6 +56,14 @@ public LabKeyTomcatServletWebServerFactory(LabKeyServer server) } } }); + + addContextCustomizers(context -> { + final Container parent = context.getParent(); + if (parent instanceof StandardHost sh) + { + sh.setErrorReportValveClass(LabKeyErrorReportValve.class.getName()); + } + }); } @Override