Skip to content

ServletWebRequest.checkNotModified attempts to call HttpServletResponse.getHeader(String) on Servlet 2.5 [SPR-13420] #17999

Closed
@spring-projects-issues

Description

@spring-projects-issues

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:

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)type: bugA general bug

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions