JSP files fail to properly compile under heavy load
 Technote (FAQ)
 
Problem
Compiling your JavaServer Pages™ (JSP™) files results in one of the following symptoms.
  1. The JSP files compile and fail at runtime with the error: "java.lang.VerifyError".
  2. The compilation of the JSP files fail with an exception.
 
Cause
There are two symptoms to the problem.
  1. The JSP file compiles, but it does not compile correctly. It fails at runtime:
    1. java.lang.VerifyError: (class: xictool/jsp/xiccmt/ucstaticfiles  
      /_UCStaticFilesDynamicTreeContentFile_jsp_0, method: _jspService
      signature: (Ljavax/servlet/http/HttpServletRequest;
      Ljavax/servlet/http/HttpServletResponse;)V) Incompatible type for getting or setting field

    2. [Servlet Error]-[JSP 1.1 Processor]: com.ibm.servlet.engine.webapp.WebAppErrorReport: _login_jsp_0 (Illegal Class name "ServerSocket.cla")

  2. Compilation actually fails:

    An exception has occurred in the compiler (1.3.1_05). Please file a bug at the Java Developer Connection (http://java.sun.com/cgi-bin/bugreport.cgi).  Include your program and the following diagnostic in your report.  
    java.lang.NegativeArraySizeException
    at com.sun.tools.javac.v8.util.Convert.utf2string
    at com.sun.tools.javac.v8.util.Name.toString
    at java.lang.String.valueOf
    at java.lang.StringBuffer.append
    at com.sun.tools.javac.v8.util.Log.printError
    at com.sun.tools.javac.v8.util.Log.error
    at com.sun.tools.javac.v8.util.Log.error
    at com.sun.tools.javac.v8.parser.Parser.syntaxError
    at com.sun.tools.javac.v8.parser.Parser.syntaxError
    at com.sun.tools.javac.v8.parser.Parser.classInterfaceDeclaration
    at com.sun.tools.javac.v8.parser.Parser.typeDeclaration
    at com.sun.tools.javac.v8.parser.Parser.compilationUnit
    at com.sun.tools.javac.v8.JavaCompiler.parse
    at com.sun.tools.javac.v8.JavaCompiler.parse
    at com.sun.tools.javac.v8.JavaCompiler.compile
    at com.sun.tools.javac.v8.Main.compile
    at com.sun.tools.javac.Main.compile
    at org.apache.jasper.compiler.SunJavaCompiler.compile


As of PQ56243, the JSP Processor in WebSphere® Application Server switched to using the V8 compiler. PQ56243 is applicable to WebSphere Application Server V4.0.2 and is included in V4.0.3 and higher.

The Java™ V8 compiler, specifically the javac classes, is not thread-safe when simultaneous compilations occur. Due to the compiler not being thread-safe, it is possible for the compiled source code for JSP files to not comply with the Java™ virtual machine (JVM™) specification for class file structure. This is an issue only for browser-based compilations.

You can recover from this problem by forcing a recompile of the JSP. To do this, issue the touch command, or delete the contents of the JSP temp directory.

 
Solution
If you are running WebSphere Application Server V4.0.2+PQ56243, V4.0.3, or V4.0.4, you must use the JSPBatchCompiler to compile your JSP files. Otherwise, you can upgrade to WebSphere Application Server V4.0.5.

To resolve this threading issue, PQ67913 is included in V4.0.5. This fix synchronizes the loading and compilation of JSP files, alleviating the threading problem in the V8 compiler.

 
 
 


Document Information


Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server > Servlet Engine/Web Container
Operating system(s): HP-UX
Software version: 4.0.4
Software edition:
Reference #: 1112701
IBM Group: Software Group
Modified date: Feb 28, 2005