Index: appserver/tests/embedded/maven-plugin/pom.xml =================================================================== --- appserver/tests/embedded/maven-plugin/pom.xml (revision 64431) +++ appserver/tests/embedded/maven-plugin/pom.xml (working copy) @@ -234,7 +234,7 @@ javax.servlet javax.servlet-api - 4.0.0-b01 + 4.0.0-b02-SNAPSHOT provided Index: appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml =================================================================== --- appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml (revision 64431) +++ appserver/tests/embedded/servlet_runs_admin_cmds/pom.xml (working copy) @@ -131,7 +131,7 @@ javax.servlet javax.servlet-api - 4.0.0-b01 + 4.0.0-b02-SNAPSHOT provided Index: appserver/tests/paas/mq-shared-service-test/mq-app/web/pom.xml =================================================================== --- appserver/tests/paas/mq-shared-service-test/mq-app/web/pom.xml (revision 64431) +++ appserver/tests/paas/mq-shared-service-test/mq-app/web/pom.xml (working copy) @@ -70,7 +70,7 @@ javax.servlet javax.servlet-api - 4.0.0-b01 + 4.0.0-b02-SNAPSHOT Index: appserver/web/web-core/src/main/java/org/apache/catalina/core/DynamicServletRegistrationImpl.java =================================================================== --- appserver/web/web-core/src/main/java/org/apache/catalina/core/DynamicServletRegistrationImpl.java (revision 64431) +++ appserver/web/web-core/src/main/java/org/apache/catalina/core/DynamicServletRegistrationImpl.java (working copy) @@ -67,6 +67,16 @@ super(wrapper, ctx); } + @Override + public void setJspFile(String jspFile) { + if (ctx.isContextInitializedCalled()) { + String msg = MessageFormat.format(rb.getString(LogFacade.DYNAMIC_SERVLET_REGISTRATION_ALREADY_INIT), + new Object[] {"jsp-file", wrapper.getName(), ctx.getName()}); + throw new IllegalStateException(msg); + } + wrapper.setJspFile(jspFile); + } + public void setLoadOnStartup(int loadOnStartup) { if (ctx.isContextInitializedCalled()) { String msg = MessageFormat.format(rb.getString(LogFacade.DYNAMIC_SERVLET_REGISTRATION_ALREADY_INIT), Index: appserver/web/web-core/src/main/java/org/apache/catalina/core/ServletRegistrationImpl.java =================================================================== --- appserver/web/web-core/src/main/java/org/apache/catalina/core/ServletRegistrationImpl.java (revision 64431) +++ appserver/web/web-core/src/main/java/org/apache/catalina/core/ServletRegistrationImpl.java (working copy) @@ -87,6 +87,10 @@ return wrapper.getJspFile(); } + public void setJspFile(String jspFile) { + wrapper.setJspFile(jspFile); + } + public boolean setInitParameter(String name, String value) { if (ctx.isContextInitializedCalled()) { String msg = MessageFormat.format(rb.getString(LogFacade.SERVLET_REGISTRATION_ALREADY_INIT), Index: appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java =================================================================== --- appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java (revision 64431) +++ appserver/web/web-core/src/main/java/org/apache/catalina/core/StandardWrapper.java (working copy) @@ -1356,7 +1356,9 @@ // If this "servlet" is really a JSP file, get the right class. String actualClass = servletClassName; - if ((actualClass == null) && (jspFile != null)) { + // GLASSFISH-21666 If the actualClass is the special JspServlet class + if (((actualClass == null) || ServletContext.JSP_SERVLET_CLASS_REFERENCE.equals(actualClass)) + && (jspFile != null)) { Wrapper jspWrapper = (Wrapper) ((Context) getParent()).findChild(Constants.JSP_SERVLET_NAME); if (jspWrapper != null) { Index: appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java =================================================================== --- appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java (revision 64431) +++ appserver/web/web-glue/src/main/java/com/sun/enterprise/web/WebModule.java (working copy) @@ -2362,20 +2362,25 @@ wbd.addWebComponentDescriptor(wcd); String servletClassName = wrapper.getServletClassName(); if (servletClassName != null) { - Class clazz = wrapper.getServletClass(); - if (clazz == null) { - if (wrapper.getServlet() != null) { - clazz = wrapper.getServlet().getClass(); - } else { - try { - clazz = loadServletClass(servletClassName); - } catch(Exception ex) { - throw new IllegalArgumentException(ex); + // GLASSFISH-21666 If servletClassName is to be the JspServlet, + // and we know we are dynamic, skip setting the servletClass + // so the proper parameters can be passed to the JspCompiler. + if (!javax.servlet.ServletContext.JSP_SERVLET_CLASS_REFERENCE.equals(servletClassName)) { + Class clazz = wrapper.getServletClass(); + if (clazz == null) { + if (wrapper.getServlet() != null) { + clazz = wrapper.getServlet().getClass(); + } else { + try { + clazz = loadServletClass(servletClassName); + } catch(Exception ex) { + throw new IllegalArgumentException(ex); + } } + wrapper.setServletClass(clazz); } - wrapper.setServletClass(clazz); + processServletAnnotations(clazz, wbd, wcd, wrapper); } - processServletAnnotations(clazz, wbd, wcd, wrapper); } else { // Should never happen throw new RuntimeException( @@ -2474,6 +2479,12 @@ } void postProcessAnnotations() { + // GLASSFISH-21666 + // Don't bother scanning for annotations if this is a JspServlet + if (null != wrapper.getJspFile()) { + return; + } + // should not be null Class clazz = wrapper.getServletClass(); Index: nucleus/pom.xml =================================================================== --- nucleus/pom.xml (revision 64431) +++ nucleus/pom.xml (working copy) @@ -144,7 +144,7 @@ 4.0.1 1.0-2 1.1-rev-1 - 4.0.0-b01 + 4.0.0-b02-SNAPSHOT 2.3.28 1.5 1.3.4