How to force Weblogic to use ExpressionInterceptor?

I am working on porting a website from Java 6 running on Weblogic 11g (10.3.5) to Java 8 using Weblogic 12c (12.1.3). I found several problems (this helps others who have tried it before on my team, without enough success), but one seems insurmountable, and I can’t find out anything about it.

One of our JSPs doesn’t load in the browser weblogic.servlet.jsp.CompilationException, complaining that "The _jspService method code (HttpServletRequest, HttpServletResponse) exceeds the limit of 65535 bytes." Examining the differences between the generated file .javafor JSP in two versions of Weblogic, I see that each JSP expression is wrapped in an ExpressionInterceptor.

For example, in WebLogic 10 with the launch of Java 6 <%=user.getLanguage()%>becomes out.print(user.getLanguage());. In WebLogic 12, running on Java 8, it becomes:

out.print(_jsp_expressionInterceptor.intercept(
    String.valueOf(user.getLanguage()), pageContext,
    weblogic.servlet.jsp.ExpressionInterceptor.Type.Scripting));

It seems to me that extra method calls - 2 method calls, about 250 times in the file - are enough to bring the method _jspServiceabove the 64K limit. (The method size in Java 6, based on the output from javap, is 62912 bytes, so it makes sense.)

My question is: is there a way to keep Weblogic from generating calls on ExpressionInterceptor?

Thank.

+4
source share
1 answer

This is a known patch issue for 12.1.3 and 12.1.2 Error 17968606

+1
source

All Articles