【问题标题】:Configuration of Eclipse/Jetty to solve the issue: the code of method is exceeding the 65535 bytes limit配置 Eclipse/Jetty 解决问题:方法代码超出 65535 字节限制
【发布时间】:2020-08-09 09:30:15
【问题描述】:

我正在 Eclipse 中开发一个 Java 站点。该站点依赖于 JSP 文件和 servlet,我在开发期间使用插件(Eclipse Jetty 5.0.0)在 Eclipse 中运行该站点。在浏览器中加载页面时出现此异常:

XXXXX_jsp.java]<|The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

我最终会在 Tomcat 上运行这个网站,我可以通过在 tomcat_install/conf/web.xml 中的 JspServlet 中添加以下内容来解决 Tomcat 中的这个问题:

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

但是,我进行了相当多的搜索,但无法找到类似的配置解决方案使其在 Eclipse/Jetty 中工作。我可以将方法分成几个较小的方法,但我想避免它。希望使用配置(不是代码更改)来解决这个问题。

【问题讨论】:

  • 顺便说一句,没有“Eclipse Jetty 5.0.0”之类的东西(Eclipse 的第一个版本是 7.0.0)
  • 这个问题之前已经在stackoverflow.com/a/58450789/775715回答过
  • 当你升级 Tomcat 时,你会再次遇到这个问题。
  • @JoakimErdfelt 如果你搜索 Eclipse 市场,你会发现这个插件。关于Tomcat,我将按照我在帖子中所说的那样解决它。感谢您的参与。

标签: eclipse jetty maven-jetty-plugin


【解决方案1】:

JettyJspServlet 支持与 Tomcat 的 JspServlet 相同的 init-params。

mappedfile init-param 在那里(只需将其设置为无效的值,例如“foo”并观察错误消息弹出“警告:initParam mappedFile 的值无效。将使用默认值“假"")

您需要引用现有的 JSP servlet 并将这些初始化参数添加到您的 WEB-INF/web.xml

<servlet id="jsp">
  <servlet-name>jsp</servlet-name>
  <init-param>
    <param-name>mappedfile</param-name>
    <param-value>false</param-value>
  </init-param>
</servlet>

或者使用此参数创建一个新的webdefault.xml,并让您的 web 应用将它与${jetty.base}/webapps/${webappid}.xml 中的 XML 可部署文件一起使用

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
   <Set name="contextPath">/foo</Set>
   <Set name="war"><Property name="jetty.webapps"/>/foobar.war</Set>
   <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/mywebdefault.xml</Set>
</Configure>

“mappedfile”初始化参数:

似乎从在中间 *.java 文件中生成普通打印语句切换到 1 行打印语句。
这意味着您在 JSP 文件中处于 JavaC 支持的边缘。 javac 上的 *.java 文件的大小有许多硬性限制,而您的 JSP 文件现在正在满足这些限制。

一些(但不是全部)javac 限制:

  • 静态初始化器大小:最大 65535 字节。
  • 方法或构造函数长度:最大 65535 字节。 (你的 JSP 文件触发的那个)
  • 方法或构造函数参数长度:最多 255 个参数。
  • 局部变量大小:最大 65535 字节。
  • 合成参数长度:最多 255 个参数。
  • 阵列尺寸:最大 255。

如果此 init-param 适合您,请使用它。
但是,如果您需要维护/编辑该 JSP 文件,请知道您几乎可以肯定不能添加(只能删除)。
将来您可能必须通过导入将其重构为更小的部分。

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多