Last Modified: July 10, 2014
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.
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.
Copyright © 2011-2014, Wildstar Technologies, LLC.
Google App Engine for Java > Using JavaServer Faces on the Google App Engine > Compatibility Issues >