配置Eclipse/Jetty解决问题:方法代码超过65535字节限制
Configuration of Eclipse/Jetty to solve the issue: the code of method is exceeding the 65535 bytes limit
我正在 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 中将以下内容添加到 JspServlet 来解决 Tomcat 中的这个问题。 =25=]:
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
然而,我进行了相当多的搜索,但未能找到类似的配置解决方案以使其在 Eclipse/Jetty 中运行。我可以将该方法分解为几个较小的方法,但我想避免它。希望使用配置(不是代码更改)来解决这个问题。
JettyJspServlet
支持与 Tomcat 的 JspServlet
相同的初始化参数。
mappedfile
init-param 在那里(只需将其设置为无效的东西,如 "foo" 并观察弹出的错误消息“警告:initParam mappedFile 的值无效.会使用默认值"false"")
您需要引用现有的 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
并让您的 webapp 将其与 ${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 文件,请知道您几乎可以肯定不添加(只能删除)。
将来您可能需要通过导入将其重构为更小的部分。
我正在 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 中将以下内容添加到 JspServlet 来解决 Tomcat 中的这个问题。 =25=]:
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
然而,我进行了相当多的搜索,但未能找到类似的配置解决方案以使其在 Eclipse/Jetty 中运行。我可以将该方法分解为几个较小的方法,但我想避免它。希望使用配置(不是代码更改)来解决这个问题。
JettyJspServlet
支持与 Tomcat 的 JspServlet
相同的初始化参数。
mappedfile
init-param 在那里(只需将其设置为无效的东西,如 "foo" 并观察弹出的错误消息“警告:initParam mappedFile 的值无效.会使用默认值"false"")
您需要引用现有的 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
并让您的 webapp 将其与 ${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"初始化参数:
它似乎从在中间 *.java 文件中生成普通打印语句切换到 1 行打印语句。
这意味着您在 JSP 文件中处于 JavaC 支持的边缘。 javac 上的 *.java 文件的大小有很多硬性限制,而您的 JSP 文件现在正在满足这些限制。
一些(但不是全部)javac 限制:
- 静态初始化程序大小:最大 65535 字节
- 方法或构造函数长度:最大 65535 字节。 (你的 JSP 文件被绊倒的那个)
- 方法或构造函数参数长度:最多 255 个参数
- 局部变量大小:最大 65535 字节
- 综合参数长度:最多 255 个参数
- 数组维度:最大 255
如果这个 init-param 适合你,那就使用它。
但是,如果您需要维护/编辑那个 JSP 文件,请知道您几乎可以肯定不添加(只能删除)。
将来您可能需要通过导入将其重构为更小的部分。