_jspService超出了65535字节的限制

set*_*ora 24 java jsp tomcat servlets websphere-7

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

  1. 为什么它适用于Websphere 7而不适用于Tomcat 6?
  2. 这是与应用服务器有关的吗?

如果你的答案是肯定的,那么肯定.2,除了分解代码或使用动态包含之外,你在Tomcat 6(JDK 6)上有解决方法吗?

该计划不同意将静态包含更改为动态包括主要因为大多数页面与包括应用程序的主模板的商业模型代码相关联.

Whi*_*g34 21

听起来你达到64k方法的限制,可能是因为Tomcat如何从JSP构建一个类.此页面建议更改您的静态包含,如下所示:

<%@ include file="test.jsp" %>
Run Code Online (Sandbox Code Playgroud)

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

<jsp:include page="test.jsp" /> 
Run Code Online (Sandbox Code Playgroud)


arm*_*eys 14

我用完了可以外化的静态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>
Run Code Online (Sandbox Code Playgroud)

Peter Hart的<c:catch>解决方案听起来也不错.


Osi*_*ify 10

最好指出如下所示的更改位置:https: //www.assetbank.co.uk/support/documentation/knowledge-base/byte-limit-exceeded-error/

找到文件[Tomcat_Home] /conf/web.xml并在文件中搜索"JspServlet".这应该返回<servlet>包含一些<init-param>值的xml节点.您需要添加<init-param>与下面相同的附加内容.

<init-param>
    <param-name>mappedfile</param-name>
    <param-value>false</param-value>
</init-param> 
Run Code Online (Sandbox Code Playgroud)

对于tomcat用户来说,这更加明确和直接

其他参考解决方案,当然,大多数在之前的评论中说,但所有在一个地方阅读,在这里:http://answered.site/development-environment-setup-uses-tomcat-6-jdk-6-why-does-它工作/ 603017 /

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