La compatibilidad con JSP del servidor web Jetty integrado no está configurada
Actualmente tengo Jetty integrado en una aplicación. El servidor Jetty se inicia y puedo ver los archivos del proyecto, sin embargo, cuando intento ver un archivo JSP, dice
ERROR HTTP 500
Problema al acceder a /web/index.jsp. Motivo:
compatibilidad con JSP no configurada
He leído algunas otras publicaciones aquí y algunos tutoriales en línea y la mayoría habla sobre start.jar y maven. No estoy usando ninguno de los dos, solo estoy usando lo que está integrado en eclipse.
tengo tres clases
Generador de contexto de aplicaciones
public class AppContextBuilder
{
private WebAppContext webAppContext;
public WebAppContext buildWebAppContext()
{
webAppContext = new WebAppContext();
webAppContext.setDescriptor( webAppContext + "/WEB-INF/web.xml" );
webAppContext.setResourceBase( "." );
webAppContext.setContextPath( "/" );
return webAppContext;
}
JettyServer
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
public class JettyServer
{
private Server server;
public JettyServer()
{
this( 8585 );
}
public JettyServer(Integer runningPort)
{
server = new Server( runningPort );
}
public void setHandler( ContextHandlerCollection contexts )
{
server.setHandler( contexts );
}
public void start() throws Exception
{
server.start();
}
public void stop() throws Exception
{
server.stop();
server.join();
}
public boolean isStarted()
{
return server.isStarted();
}
public boolean isStopped()
{
return server.isStopped();
}
}
Control del servidor
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
public class ServerControl
{
public static void main( String[] args )
{
Logger.getLogger().logMethodEntryMessage();
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers( new Handler[]
{ new AppContextBuilder().buildWebAppContext() } );
final JettyServer jettyServer = new JettyServer();
jettyServer.setHandler( contexts );
start( jettyServer );
Logger.getLogger().logMethodExitMessage();
}
private static void start( final JettyServer jettyServer )
{
Logger.getLogger().logMethodEntryMessage();
try
{
jettyServer.start();
Logger.getLogger().debug( "Jetty server started!" );
}
catch( Exception e )
{
Logger.getLogger().error( e.getMessage() );
}
Logger.getLogger().logMethodExitMessage();
}
}
Nunca antes había intentado utilizar el embarcadero integrado, por lo que es posible que me esté perdiendo algo. Sin embargo , seguí este tutorial en línea y parece funcionar para ellos.
¡Cualquier ayuda sería genial, gracias!
Logré resolver esto.
Todo lo que tuve que hacer fue crear un WAR y luego agregar las siguientes líneas de código a la clase WebBuilderContext.
webAppContext.setExtractWAR( true );
webAppContext.setWar( "path/to/your/war/file/here" );
Estoy usando ANT para mis compilaciones, así que agregué un nuevo objetivo WAR para generar el archivo WAR cada vez que construyo.
Espero que esto ayude a alguien más.