Closed
Description
Jean Detoeuf opened SPR-13420 and commented
It seems that getHeader(String) is also being called inside checkNotModified. This method is not in HttpServletResponse in Servlet 2.5. Here is the stacktrace I'm facing. Issue was introduced in 4.2.0 as we were previously in 4.1.7.
Using the following:
Java 7.0_11
Jonas 5.2.4 - Servlet 2.5
Spring 4.2.1.RELEASE
[ERROR] 2015-09-02 11:04:12,663 [TP-Processor15] org.apache.juli.logging.DirectJDKLog:167 - Servlet.service() for servlet appServlet threw exception
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getHeader(Ljava/lang/String;)Ljava/lang/String;
at org.springframework.web.context.request.ServletWebRequest.checkNotModified(ServletWebRequest.java:187) ~[spring-web-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:240) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) ~[javaee-api-5.2.4.jar:5.2.4]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.2.1.RELEASE.jar:4.2.1.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) ~[javaee-api-5.2.4.jar:5.2.4]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) ~[jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ~[jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) ~[jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.ow2.jonas.web.tomcat6.CheckOpenResourcesValve.invoke(CheckOpenResourcesValve.java:73) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.ow2.jonas.web.tomcat6.tx.TransactionValve.invoke(TransactionValve.java:90) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.ow2.jonas.web.tomcat6.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:95) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) [jonas-web-container-tomcat-6.0-5.2.4-ipojo.jar:5.2.4]
at java.lang.Thread.run(Thread.java:722) [na:1.7.0_11]
As of today, we're not able to switch to a servlet 3.0 compatible application server.
Affects: 4.2 GA, 4.2.1
Reference URL: #17976
Issue Links:
- ServletWebRequest.checkNotModified attempts to call HttpServletResponse.getStatus() on Servlet 2.5 [SPR-13396] #17976 ServletWebRequest.checkNotModified attempts to call HttpServletResponse.getStatus() on Servlet 2.5