_jspService超过65535字节限制

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

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

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

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

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

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

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

  

我用完了静态的html / jss / css块我可以外化到jsp:include (主要是非静态的html)…

您可以将您的web.xml ,mappedfile设置为false,以便去除许多静态行,这些静态行不一定是放入包含的好块,但它们相加以节省空间:

  jsp org.apache.jasper.servlet.JspServlet ...  mappedfile false  ...  

Peter Hart的解决方案听起来也不错。

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

找到文件[Tomcat_Home] /conf/web.xml并在文件中搜索“JspServlet”。 这应该返回包含一些值的的xml节点。 您需要添加一个额外的 ,如下所示。

  mappedfile false  

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

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

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

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

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

    

它解决了我的问题。

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

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

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

不。这些限制是硬连接到类文件的格式/结构。

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

我今天偶然发现了这个问题
当我使用Tomcat 8.0.30而不是Tomcat 8.0.39时,我的问题得到了解决

通过将初始化参数“mappedFile”设置为“false”为我工作。

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

对于wildfly服务器,在standalone.xml – > inside underow子系统中:用jsp-config替换

  

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