Jasper в jetty выдает исключение IllegalStateException в getOutputStream, но не в Tomcat

StackOverflow https://stackoverflow.com/questions/608352

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть веб-приложение, которое в данный момент работает под управлением Tomcat 5.5.25.Я пытаюсь перенести его на Jetty 6, чтобы воспользоваться преимуществами быстрого обновления, особенно для изменений jsp и пользовательского интерфейса.

Поскольку мои файлы JSP совместимы с JSP 2.0, я запускаю jetty под maven, используя конфигурацию, предложенную на веб-сайте плагина maven jetty.Эта конфигурация загружает JSP-компилятор apache jasper версии 5.5.15.(Также доступен в репозитории maven 5.5.23, но он имеет тот же результат.)

В jetty моя домашняя страница, которая настроена с использованием плиток, запускается с помощью исключения IllegalStateException в ServletResponseWrapperInclude.getOutputStream().Очевидно, что в Tomcat он этого не делает.

Я изо всех сил пытаюсь понять, что такого есть в наших плитках и комплектующих, что могло бы заставить джаспера жаловаться в jetty, а не в Tomcat.

Это было полезно?

Решение

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

Просматривая наши JSP для основных плиток и удаляя ссылки на пустые плитки, мы устраняем эту проблему.

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

Ничего себе - отличная находка!Другое решение, на которое я только что наткнулся, - определить tile include как пустую строку, а не как пустое / нулевое определение.

Другими словами, если я определил плитку следующим образом, я попал в описанное вами исключение IllegalStateException:

<definition name="login" extends="main.layout">
    <put name="title" value="Login" type="definition" />
    <put name="headinclude" value="" type="definition" />
    <put name="body" value="/WEB-INF/tiles/login.jsp" type="page" />
</definition>

Если я, с другой стороны, определю плитку следующим образом, исключение исчезнет:

<definition name="login" extends="main.layout">
    <put name="title" value="Login" type="definition" />
    <put name="headinclude" value="" type="string" />
    <put name="body" value="/WEB-INF/tiles/login.jsp" type="page" />
</definition>

Странная ошибка, странное решение, но у меня оно работает!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top