javax.servlet.jsp.JspFactory.getJspApplicationContext Abstrace Method Exception

Last ModifiedJuly 10, 2014

Summary

The Google AppEngine for Java SDK supports the JavaServer Pages 2.1 API specification.  Unfortunately, there is a difference between the Geronimo API jar (geronimo-jsp_2.1_spec-1.0.1.jar) and the Jasper implementation jar (jasper-runtime-5.0.28.jar).  The Geronimo API jar supports the 2.1 API specificaion; however, the code contained in the implementation jar only supports the JavaServer Pages 2.0 API.  This is documented in the Google AppEngine Issue 1506.
This problem manifests itself by displaying a java.lang.AbstractMethodError exception (example) when the getJspApplicationContext method is invoked on the javax.servlet.jsp.JspFactory class.  This happens when the web application starts up.

NOTE: This problem was fixed in the 1.4.2 release of the App Engine platform.

Recommended Solution

Fortunately, the problem can be fixed by explicitly defining the default Expression Language (EL) Expression Factory should be used via the com.sun.faces.expressionFactory web application context parameter in the web.xml.

The example below uses the Unified Expression Language developed as a sub-project of the Glassfish project.  The API and Implementation binaries can be downloaded from https://uel.dev.java.net/download.html.  The el-api-1.1.jar and el-impl-1.1.jar files should be downloaded and placed in the WEB-INF/lib directory of your GAE project.

The following text should be added to the WEB-INF/web.xml file of your GAE project.

<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>


Copyright © 2011-2014, Wildstar Technologies, LLC.
Comments