_jspService превышает предел 65535 байт
Итак, я имею дело с устаревшим кодом сервлета, который работает на Websphere 7 (JDK 6). Настройка среды разработки использует Tomcat 6 (JDK 6).
- Почему это работает на Websphere 7 и
не в Tomcat 6?
- Связано ли это с
сервер приложений?
Если ваш ответ "да" для "нет". 2, есть ли у вас обходной путь для этого на Tomcat 6 (JDK 6), кроме того, что он разбивает код или использует динамический интерфейс?
Расписание не согласуется с тем, что изменение static включает в динамику, в первую очередь потому, что большинство страниц связаны с кодом бизнес-модели, включая основной шаблон приложения.
Ответы
Ответ 1
Похоже, вы нажимаете ограничение на 64k метода, вероятно, из-за того, как Tomcat создает класс из вашего JSP. Эта страница предполагает, что изменение статики включает в себя следующее:
<%@ include file="test.jsp" %>
Для динамического включения такого типа, чтобы избежать проблемы:
<jsp:include page="test.jsp" />
Ответ 2
У меня закончились статические блоки html/jss/css, которые я мог бы экрнализировать в jsp:include
(в основном нестатический html остался)...
Вы можете поместить в свой файл web.xml
, mappedfile значение false так, чтобы избавиться от многих статических строк, которые не обязательно являются хорошими блоками для включения в include, но они складываются для экономии места:
<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>
Решение Peter Hart <c:catch>
также похоже на хороший вариант.
Ответ 3
Иногда взломать JSP на включение не имеет смысла или не работает. Другой способ заставить JSP быть разбитым на отдельные методы при компиляции - отделить ваш JSP от сегментов с помощью <c:catch>
.
Ответ 4
Лучше указать, куда его менять, как указано в следующей ссылке:
https://www.assetbank.co.uk/support/documentation/knowledge-base/byte-limit-exceeded-error/
Найдите файл [Tomcat_Home]/conf/web.xml и выполните поиск файла для "JspServlet". Это должно возвращать xml node из <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)
Ответ 5
Почему он работает на Websphere 7, а не в Tomcat 6
Потому что у них есть разные компиляторы JSP, которые переводят JSP на другой Java-код. Компилятор Tomcat JSP (Jasper), по-видимому, не способен обрабатывать большие JSP.
Возможно, следующий вопрос: возможно ли изменить ограничение размера метода для JVM?
Нет. Эти ограничения жестко привязаны к формату/структуре файлов классов.
Подробности находятся в спецификации JVM... но это довольно сложно, и из вашего вопроса не совсем ясно, что ограничивает вас ударил. (Но это несущественно... они не могут быть изменены.)
Ответ 6
Для JBoss eap 6 в standalone.xml добавьте ниже код под веб-подтипом.
<configuration>
<jsp-configuration development="true" mapped-file="false"/>
</configuration>
Он разрешил мою проблему.
Ответ 7
Я наткнулся на эту проблему сегодня
Моя проблема была решена, поскольку я взял Tomcat 8.0.30 вместо Tomcat 8.0.39
Ответ 8
Установив для меня параметр инициализации "mappedFile" на "false".
Но с помощью плагина eclipse некоторое время он удаляется и ему нужно снова установить его в дом tomcat.
Ответ 9
Для сервера wildfly, в standalone.xml → подсистему поднебесной: замените jsp-config на
<jsp-config development="true" mapped-file="false"/>
Ответ 10
Eidt: данное решение не было решением, но missinterpreation (проблема не может быть воспроизведена во всех версиях tomcat) извините.