_jspService превышает ограничение 65535 байт - PullRequest
21 голосов
/ 30 марта 2011

Итак, я имею дело с устаревшим кодом сервлета, который работает на Websphere 7 (JDK 6). Настройка среды разработки использует Tomcat 6 (JDK 6).

  1. Почему это работает на Websphere 7 и не в Tomcat 6?
  2. Это что-то связанное с сервер приложений?

Если ваш ответ - да, то нет. 2, есть ли обходной путь для этого на Tomcat 6 (JDK 6), кроме разбивки кода или использования динамических включений?

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

Ответы [ 10 ]

21 голосов
/ 30 марта 2011

Похоже, что вы достигли ограничения 64k метода , вероятно, из-за того, как Tomcat создает класс из вашего JSP. Эта страница предлагает изменить ваши статические включения следующим образом:

<%@ include file="test.jsp" %>

Чтобы динамически включать, как это, чтобы избежать проблемы:

<jsp:include page="test.jsp" /> 
12 голосов
/ 29 июня 2011

У меня закончились статические блоки html / jss / css, которые я мог бы преобразовать в jsp:include (в основном остался нестатический html) ...

Вы можете вставить свой набор web.xml, mappedfileв false, чтобы избавиться от многих статических линий, которые не обязательно являются хорошими блоками для включения, но они складываются для экономии места:

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    ...
    <init-param>
        <param-name>mappedfile</param-name>
        <param-value>false</param-value>
    </init-param>
    ...
</servlet>

Решение <c:catch> Питера Харта звучит как приятновариант, а также.

9 голосов
/ 30 ноября 2015

Лучше указать прямо, где его изменить, как указано в следующей ссылке: https://www.assetbank.co.uk/support/documentation/knowledge-base/byte-limit-exceeded-error/

Найдите файл [Tomcat_Home] /conf/web.xml и найдите файл «JspServlet». Это должно вернуть xml-узел <servlet>, содержащий некоторые <init-param> значения. Вам нужно будет добавить еще <init-param>, как показано ниже.

<init-param>
    <param-name>mappedfile</param-name>
    <param-value>false</param-value>
</init-param> 

Это более понятно и понятно для пользователя tomcat

Другие справочные решения, которые, конечно, в основном упоминаются в предыдущем комментарии, но все в одном месте, чтобы прочитать, здесь: http://answered.site/development-environment-setup-uses-tomcat-6-jdk-6-why-does-it-work/603017/

Проблема также обнаружена в Tomcat-8 с JDK1.8 (Java8)

4 голосов
/ 26 мая 2015

Для JBoss eap 6 в standalone.xml добавьте приведенный ниже код под веб-подсистемой.

<configuration>
    <jsp-configuration development="true" mapped-file="false"/>
</configuration>

Это решило мою проблему.

4 голосов
/ 27 апреля 2011

Иногда разбиение вашего JSP на включения не имеет смысла или не работает. Другой способ заставить ваш JSP разбиваться на отдельные методы при компиляции - это разделить ваш JSP на сегменты, используя <c:catch>.

2 голосов
/ 30 марта 2011

Почему это работает в Websphere 7, а не в Tomcat 6

Поскольку у них разные компиляторы JSP, которые переводят JSP в другой код Java.JSP-компилятор Tomcat (Jasper), по-видимому, не может работать с большими JSP.

Возможно, следующий вопрос: возможно ли изменить ограничение размера метода JVM?

Нет.Эти ограничения встроены в формат / структуру файлов классов.

Подробности в спецификации JVM ... но это довольно сложно, и из вашего вопроса не совсем ясно, какой предел вы достигли.(Но это несущественно ... их нельзя изменить.)

1 голос
/ 12 января 2017

Я наткнулся на этот вопрос сегодня
Моя проблема была решена, так как я взял Tomcat 8.0.30 вместо Tomcat 8.0.39

1 голос
/ 28 мая 2014

Установив параметр инициализации "mappedFile" в "false", у меня сработало.

Но, используя плагин eclipse, он удаляется и его нужно снова установить в tomcat home.

0 голосов
/ 26 октября 2016

Эйдт: Данное решение не было решением, но неправильно истолковано (проблема не может быть воспроизведена на всех версиях Tomcat). Извините.

0 голосов
/ 18 августа 2016

Для сервера wildfly, в standalone.xml -> внутри подсистемы undertow: замените jsp-config на

<jsp-config development="true" mapped-file="false"/>
...