_jspService超出65535字节限制

时间:2011-03-30 09:04:45

标签: java jsp tomcat servlets websphere-7

所以我正在处理在Websphere 7(JDK 6)上运行的遗留servlet代码。开发环境设置使用Tomcat 6(JDK 6)。

  1. 为什么它适用于Websphere 7和 不是在Tomcat 6?
  2. 这是与此相关的事吗 应用服务器?
  3. 如果答案是肯定的,那么肯定。 2,除了分解代码或使用动态包含之外,您是否在Tomcat 6(JDK 6)上有解决方法?

    时间表不同意将静态包含更改为动态包含主要是因为大多数页面都与业务模型代码(包括应用程序的主模板)相结合。

11 个答案:

答案 0 :(得分:21)

听起来你正在点击64k method limit,这可能是由于Tomcat如何从JSP构建一个类。 This page建议更改您的静态包含:

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

动态包括这样以避免问题:

<jsp:include page="test.jsp" /> 

答案 1 :(得分:12)

我用完了静态的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>解决方案听起来也不错。

答案 2 :(得分:9)

最好直接指出在哪里进行更改,如以下链接所述: https://www.assetbank.co.uk/support/documentation/knowledge-base/byte-limit-exceeded-error/

找到文件[Tomcat_Home] /conf/web.xml并在文件中搜索“JspServlet”。这应该返回<servlet>的xml节点,其中包含一些<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/

使用JDK1.8(Java8)在tomcat-8中也发现了这个问题

答案 3 :(得分:4)

有时将JSP分解为包含没有意义或不起作用。在编译时强制将JSP分解为单独方法的另一种方法是使用<c:catch>将JSP分成多个段。

答案 4 :(得分:4)

对于standalone.xml中的JBoss eap 6,在web subsytem下添加以下代码。

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

它解决了我的问题。

答案 5 :(得分:2)

  

为什么它适用于Websphere 7而不适用于Tomcat 6

因为它们有不同的JSP编译器,可以将JSP转换为不同的Java代码。 Tomcat JSP编译器(Jasper)显然无法处理大型JSP。

  

也许下一个问题是,是否可以更改JVM的方法大小限制?

没有。这些限制很难连接到类文件的格式/结构中。

详细信息在JVM spec中......但它相当复杂,并且从您的问题中得出的限制并不完全清楚。 (但这不重要......他们不能改变。)

答案 6 :(得分:1)

通过设置初始化参数&#34; mappedFile&#34;到&#34;假&#34;为我工作。

但是使用eclipse插件有时会被删除,需要再次在tomcat中设置。

答案 7 :(得分:1)

今天我偶然发现了这个问题 我使用Tomcat 8.0.30而不是Tomcat 8.0.39

解决了我的问题

答案 8 :(得分:0)

对于wildfly服务器,在standalone.xml中 - &gt;在underow子系统内:用

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

答案 9 :(得分:0)

Eidt:鉴于解决方案没有解决方案,但是错误解释(问题无法在所有tomcat版本上重现)抱歉。

答案 10 :(得分:0)

如果您要在带有嵌入式tomcat的Spring Boot上修复此错误_jspService is exceeding the 65535 bytes limit,可以在application.properties中使用此配置:

server.servlet.jsp.init-parameters.mappedfile=false