Я получаю exception-org.apache.catalina.core.ApplicationDispatcher.invoke сгенерировал исключение java.lang.IllegalStateException

В моем журнале сервера появляется следующая ошибка:

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)

Я не знаю, какой метод вызывает эту ошибку и в чем причина этой ошибки. На самом деле это исключение произошло в то время, когда я развернул свое приложение в tomcat и пытался получить индексную страницу (иногда первый раз, иногда второй, где-то третий, дело в том, что оно приходит независимо от того, когда оно приходит.), На самом деле в соответствии с моей конфигурацией, когда ssl включен, и когда я развертываю свое приложение и пытаюсь получить страницу приветствия с истекшим сроком действия, вызывается страница, и с этого момента, когда я пытался получить некоторые другие страницы, она выдает вышеуказанное исключение. Я использую Spring 4, Spring Security, Maven, Hibernate 4. Кто-нибудь может мне помочь? Любая помощь будет принята.

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>

Ответ на вашу проблему может лежать здесь 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 Кажется, что кто-то уже использовал выходной поток ответа один раз, а затем кто-то другой пытается сделать то же самое (отсюда IllegalArgumentException). Я бы посоветовал просмотреть ваш код и проверить наличие вхождений в этом шаблоне.

akortex91 08.05.2018 09:34

@Aris Я искал getOutputStream () во всей рабочей области и получил только одно его появление, а затем я прокомментировал этот код, но исключение все еще возникает.

Created Bylucky 08.05.2018 09:44

тоже пытаюсь найти getWriter

akortex91 08.05.2018 09:45

@Aris, getWriter - 0 случаев

Created Bylucky 08.05.2018 09:46

Похоже на stackoverflow.com/questions/3540464/… Это должно помочь вам понять исключение.

Christophe Douy 05.06.2018 11:42

есть ли несколько синхронизированных веб-приложений в контейнере tomcat для этого проекта? когда-то этот вопрос также называется каталиной

this_is_om_vm 05.06.2018 13:04

@this_is_om_vm нет

Created Bylucky 06.06.2018 11:04

адаптировать и новую версию Tomcat.

this_is_om_vm 06.06.2018 12:34

@this_is_om_vm у меня уже 8.5.

Created Bylucky 06.06.2018 13:14

один раз вы можете попробовать с любой другой версией tomcat.Поскольку я пытаюсь воспроизвести указанную выше проблему, она отлично работает на tomcat 8.0

this_is_om_vm 06.06.2018 13:30

@this_is_om_vm Не повезло, та же проблема

Created Bylucky 06.06.2018 14:04

А можно ли поместить код туда, где вы комментируете выходной поток?

Gatusko 06.06.2018 23:50

Вы используете jstl?

Gatusko 06.06.2018 23:55

@Gatusko, да, я использую jstl

Created Bylucky 07.06.2018 10:49

Хорошо, пожалуйста, добавьте этот index.jsp и JSTL, потому что, возможно, вы используете и отключились, когда закрыли поток.

Gatusko 07.06.2018 15:32

Ссылка @Gatusko для индекса: github.com/ManojLucky/ExamAppLocal.git

Created Bylucky 08.06.2018 14:45

У меня была аналогичная проблема, вызванная двунаправленным отношением ManyToMany с использованием Джексона для сериализации JSON. Мне пришлось поместить аннотацию JsonIgnore в одну сторону.

Norberto Ritzmann 11.06.2018 14:09

в трассировке стека есть строка. org.apache.jsp.WEB_002dINF.views.uncaughtException_html._jsp‌ Сервис. Возможно, что какой-то jsp завершился неудачно, и исходное исключение каким-то образом скрыто этим исключением, которое возникло при обработке первого исключения.

gagan singh 12.06.2018 00:59

@NorbertoRitzmann У меня нет отношений ManyToMany

Created Bylucky 12.06.2018 09:33

@gagansingh На самом деле у меня SimpleMappingExceptionResolver настроен с defaultErrorView «uncaughtException», поэтому любые предложения.

Created Bylucky 12.06.2018 09:36

Хорошо, но могут быть любые циклические отношения, например, Заказ -> Продукт -> Заказ ... Не совсем ManyToMany.

Norberto Ritzmann 12.06.2018 13:29

Если у вас есть и SimpleMappingExceptionResolver, у вас могут быть конфликты в ControllerAdvice с аннотацией ExceptionHandler

Norberto Ritzmann 12.06.2018 13:47

@NorbertoRitzmann да, у меня конфликт в ControllerAdvice. Проблема решена.

Created Bylucky 13.06.2018 11:24

@NorbertoRitzmann Я думаю, вы можете ответить на вопрос, и я могу принять его как правильный ответ. -

Created Bylucky 13.06.2018 11:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
13
24
1 926
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас есть SimpleMappingExceptionResolver, попробуйте проверить, есть ли у вас конфликты с аннотированным классом ControllerAdvice. Исключения нужно обрабатывать только в одном месте.

Как я уже сказал, он может быть сгенерирован циклическими отношениями и Джеэсоном в качестве сериализатора. Здесь у вас есть несколько вариантов, например использование DTO, которое упрощает ответ, или пользователя @JsonIgnore.

Другие вопросы по теме