我正在将JDK 1.4 / JBoss 4.0.2(是的,它就是那个旧的!)应用程序迁移到JDK 8 / JBoss 6.4 EAP,并且遇到了一个产生错误的JSP页面的问题:
*The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit*
我理解为什么会发生这种情况,过去两天一直在使用自定义标记从JSP文件中提取代码,但它仍在发生。
在此期间,我决定将没有此问题的旧环境生成的Java代码与新环境进行比较,我发现生成的Java文件至少比旧文件大两倍。一。仔细观察就会发现,额外的大部分是我认为对out.write()方法调用进行非常差的优化。
例如,我在JSP中有以下简单代码:
<html>
<head>
<title>
没什么特别的。在旧生成的Java中,我看到:
out.write("\r\n<html> \r\n<head>\r\n<title>");
我认为标签后面有一些额外的空格。但是当我查看JBoss生成的新文件时,我看到了:
out.write("\r\n");
out.write("<html> \r\n");
out.write("<head>\r\n");
out.write("<title>");
所以我们有4个out.write调用,之前只需要一个。仔细查看代码,我一遍又一遍地看到这种模式。
我在这里寻找任何建议。自定义标签正在减少代码的大小,但是简单的选择已经消失了,我宁愿不完全重写这个JSP的所有4000行,因为当然,项目中没有时间,即使它是非常需要。
关于为什么我正在看到的JSP编译是如此糟糕的任何想法,有没有办法用更好的一个替换默认的JBoss 6.4 EAP JSP编译器?