¿Cómo se integra Jetty 9 para resolver con éxito el URI de JSTL?

Estoy empaquetando un archivo de aplicación web (.war) para que pueda iniciarse a través dejava -jar webapp.war en una shell lanzando una copia incrustada de Jetty 9 utilizando este código en una clase principal:

int port = Integer.parseInt(System.getProperty("port", "80")); // I know this has implications :)
String contextPath = System.getProperty("contextPath", "");
Server server = new Server(port);
ProtectionDomain domain = Deployer.class.getProtectionDomain();
URL location = domain.getCodeSource().getLocation();
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/" + contextPath);
webapp.setWar(location.toExternalForm());
server.setHandler(webapp);
server.start();
server.join();

Sin embargo, me estoy topando con este error cuando se compila la primera JSP que contiene una declaración de taglib JSTL:

org.apache.jasper.JasperException: /WEB-INF/html/user/login.jsp(2,62) PWC6188: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:172)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:431)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:240)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:502)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:582)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1652)
at org.apache.jasper.compiler.Parser.parse(Parser.java:185)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:145)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:212)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698)
etc...

Las primeras dos líneas de ese JSP son las siguientes:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

He mirado a mi alrededor bastante (esto no parece ser un problema nuevo) y he probado las siguientes soluciones:

Adelgazando mis dependencias y buscando conflictos (actualmente solo dependo dejetty-server, jetty-webappyjetty-jsp, toda versión9.0.4.v20130625)Especificando un explícito<taglib> mapeo en el archivo web.xml de la aplicación web que apunta directamente a JSTL (se obtuvo esta idea al leer la especificación JSP)Modificar la ruta de clase del servidor segúnesta respuestaAprovechando métodos de WebAppContext tales comoaddServerClass ysetParentLoaderPriority

De acuerdo aDocumentación de embarcadero, el uso de JSTL debería funcionar, pero creo que el contexto incrustado puede estar cambiando la forma en que JSTL se carga y hace que falle.

Agradecería cualquier idea o sugerencia. Esta configuración estaría reemplazando una configuración anterior que hizo lo mismo con éxito en Windows pero no estaba funcionando en Linux debido a la inclusión de una antigua dependencia que trajoeste error. Desafortunadamente, no he podido encontrar un reemplazo rápido para esa dependencia (groupIdorg.mortbay.jetty artefactojsp-2.1-glassfish versión2.1.v20100127) que no introduce el seguimiento de pila URI de JSTL mencionado anteriormente.

ACTUALIZAR: He encontrado una solución subóptima. Una bajada a Jetty 7 inspirada eneste hilo Ahora me tiene en marcha. Esta es una gran noticia, pero es desalentador que si más tarde requiero alguna funcionalidad exclusiva de Jetty 8 o Jetty 9, tendré que eliminar esta infraestructura de implementación. Cualquier información sobre el tema JSTL taglib en Jetty 9 todavía sería apreciada.

Respuestas a la pregunta(8)

Su respuesta a la pregunta