Men*_*hem 5 java jsp weblogic java-8 weblogic12c
我正在将网站从运行 Weblogic 11g (10.3.5) 的 Java 6 迁移到运行 Weblogic 12c (12.1.3) 的 Java 8。我发现了几个问题(这有助于我团队中的其他人之前尝试过,但没有取得足够的成功),但一个似乎无法克服,我无法找到任何相关信息。
我们的一个 JSP 无法在浏览器中加载 ,并weblogic.servlet.jsp.CompilationException抱怨“方法 _jspService(HttpServletRequest, HttpServletResponse) 的代码超出 65535 字节限制”。检查.java在两个版本的 Weblogic 中为 JSP生成的文件之间的差异,我看到每个 JSP 表达式都包装在一个 ExpressionInterceptor 中。
例如,在运行 Java 6 的 WebLogic 10 中,<%=user.getLanguage()%>变为out.print(user.getLanguage());. 在运行 Java 8 的 WebLogic 12 中,它变为:
out.print(_jsp_expressionInterceptor.intercept(
String.valueOf(user.getLanguage()), pageContext,
weblogic.servlet.jsp.ExpressionInterceptor.Type.Scripting));
Run Code Online (Sandbox Code Playgroud)
在我看来,额外的几个方法调用 - 2 个方法调用,在文件中大约 250 次 - 足以使该_jspService方法超过 64K 限制。(Java 6 中的方法大小,基于来自 的输出javap,是 62912 字节,所以这是有道理的。)
我的问题是:有什么办法可以阻止 Weblogic 生成对ExpressionInterceptor?
谢谢。