Je reçois l'erreur suivante dans le journal de mon serveur,
08-May-2018 12:00:07.460 SEVERE [https-jsse-nio-8443-exec-1] org.Apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet [jsp] threw exception Java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.Apache.catalina.connector.Response.getWriter(Response.Java:624)
at org.Apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.Java:211)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.Java:109)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.Java:109)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.Java:109)
at org.springframework.security.web.util.OnCommittedResponseWrapper.getWriter(OnCommittedResponseWrapper.Java:149)
at org.Apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.Java:118)
at org.Apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.Java:111)
at org.Apache.jasper.runtime.PageContextImpl.release(PageContextImpl.Java:176)
at org.Apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.Java:120)
at org.Apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.Java:75)
at org.Apache.jsp.WEB_002dINF.views.uncaughtException_html._jspService(uncaughtException_html.Java:209)
08-May-2018 12:00:07.468 SEVERE [https-jsse-nio-8443-exec-1] org.Apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [xyz] in context with path [] threw exception Java.lang.IllegalStateException: getOutputStream() has already been called for this response] with root cause Java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.Apache.catalina.connector.Response.getWriter(Response.Java:624)
at org.Apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.Java:211)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.Java:109)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.Java:109)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.Java:109)
at org.springframework.security.web.util.OnCommittedResponseWrapper.getWriter(OnCommittedResponseWrapper.Java:149)
at org.Apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.Java:118)
at org.Apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.Java:111)
at org.Apache.jasper.runtime.PageContextImpl.release(PageContextImpl.Java:176)
at org.Apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.Java:120)
at org.Apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.Java:75)
at org.Apache.jsp.WEB_002dINF.views.uncaughtException_html._jspService(uncaughtException_html.Java:209)
at org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:742)
at org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:443)
at org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:386)
at org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:330)
at javax.servlet.http.HttpServlet.service(HttpServlet.Java:742)
at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:231)
Je ne sais pas quelle méthode jette cette erreur et quelle est la cause de cette erreur. En fait, cette exception s’est produite au moment où j’ai déployé mon application dans Tomcat et que j’essayais d’obtenir une page d’index (Parfois, la première fois, parfois la deuxième, parfois même la troisième, c’est que ça vient, peu importe le moment.), En fait selon ma configuration lorsque SSL est activé et lorsque je déploie mon application et que j'essaie d'obtenir une session de page de bienvenue, la page expirée est appelée. À partir de maintenant, une fois que j'ai essayé d'obtenir d'autres pages, l'exception ci-dessus est levée. J'utilise Spring 4, Spring Security, Maven, Hibernate 4. Quelqu'un peut-il m'aider? Toute aide sera appréciée.
web.xml
<web-app>
<display-name>Smart app Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-security.xml, /WEB-INF/app-servlet.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/views/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>50</session-timeout>
</session-config>
</web-app>
Si vous avez un SimpleMappingExceptionResolver, essayez de vérifier si vous avez des conflits avec votre classe annotée ControllerAdvice. Les exceptions ne doivent être traitées qu’à un seul endroit.
Comme je le disais, cela pourrait être généré par une relation cyclique et Jackason comme sérialiseur aussi. En cela, vous avez quelques options comme utiliser un DTO qui simplifie la réponse ou l'utilisateur @JsonIgnore.