配置EclipseJetty,解决方法代码超过65535字节限制的问题。

问题描述 投票:0回答:1

我正在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中通过在Tomcat_installconfweb.xml中的JspServlet中添加以下内容来解决这个问题。

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

然而,我做了大量的搜索,无法找到一个类似的配置方案来使它在EclipseJetty中工作。我可以把这个方法分解成几个小的方法,但我想避免这样做。希望用配置(而不是代码的改变)来解决这个问题。

eclipse jetty maven-jetty-plugin
1个回答
1
投票

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

mappedfile init-param就在那里(只要把它设置成像 "foo "这样的无效值,然后看着错误信息弹出"警告:initParam mappedFile的值无效。initParam mappedFile的无效值。将使用默认值 "false"。")

你需要引用现有的JSP servlet,并将这些init-parameters添加到你的 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 的参数,并让你的webapp使用它与XML部署在 ${jetty.base}/webapps/${webappid}.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 "init-param。

它似乎从在中间的*.java文件中 生成普通的打印语句切换到了单行打印语句。这意味着你在JSP文件中处于JavaC支持的剃刀边缘。 javac上对*.java文件的大小有很多硬性限制,而你的JSP文件现在正在勾选这些限制。

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

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

如果这个init-param对你有用,那么就使用它。但如果你需要维护编辑那个JSP文件,要知道,你几乎肯定不能对它进行添加(只能删除)。你将来很可能要用导入的方式把它重构成小块。

© www.soinside.com 2019 - 2024. All rights reserved.