diff --git a/core/src/main/java/hudson/WebAppMain.java b/core/src/main/java/hudson/WebAppMain.java index 6ee9d35936..362f4a0305 100644 --- a/core/src/main/java/hudson/WebAppMain.java +++ b/core/src/main/java/hudson/WebAppMain.java @@ -7,6 +7,7 @@ import hudson.model.User; import hudson.triggers.Trigger; import hudson.util.IncompatibleVMDetected; import hudson.util.RingBufferLogHandler; +import hudson.util.IncompatibleServletVersionDetected; import javax.naming.Context; import javax.naming.InitialContext; @@ -14,6 +15,7 @@ import javax.naming.NamingException; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +import javax.servlet.ServletResponse; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import java.io.File; @@ -50,6 +52,14 @@ public class WebAppMain implements ServletContextListener { return; } + // make sure this is servlet 2.4 container or above + try { + ServletResponse.class.getMethod("setCharacterEncoding",String.class); + } catch (NoSuchMethodException e) { + context.setAttribute("app,",new IncompatibleServletVersionDetected()); + return; + } + // Tomcat breaks XSLT with JDK 5.0 and onward. Check if that's the case, and if so, // try to correct it try { diff --git a/core/src/main/java/hudson/util/IncompatibleServletVersionDetected.java b/core/src/main/java/hudson/util/IncompatibleServletVersionDetected.java new file mode 100644 index 0000000000..bfe9adf38c --- /dev/null +++ b/core/src/main/java/hudson/util/IncompatibleServletVersionDetected.java @@ -0,0 +1,13 @@ +package hudson.util; + +/** + * Model object used to display the error top page if + * we find out that the container doesn't support servlet 2.4. + * + *
+ * index.jelly would display a nice friendly error page.
+ *
+ * @author Kohsuke Kawaguchi
+ */
+public class IncompatibleServletVersionDetected {
+}
diff --git a/core/src/main/resources/hudson/util/IncompatibleServletVersionDetected/index.jelly b/core/src/main/resources/hudson/util/IncompatibleServletVersionDetected/index.jelly
new file mode 100644
index 0000000000..dd706c6e2d
--- /dev/null
+++ b/core/src/main/resources/hudson/util/IncompatibleServletVersionDetected/index.jelly
@@ -0,0 +1,13 @@
+
+ We detected that your servlet container does not support Servlet 2.4.
+
+ ![[!]](${rootURL}/images/48x48/error.gif)