Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Jetty 9.4: JSPs, Servlets y WebSockets todo a la vez

Queridos compañeros de JH.

Estoy terminando un proyecto personal (de domótica) y a última hora he tenido que cambiar de Tomcat a Jetty Embebido (es mi primer contacto con Jetty).

Necesito que funcionen los JSPs, Servlets y WebSockets todo a la vez. Sé cómo hacer que funcionen JSPs y Servlets juntos, pero cuando meto los Websockets, ya nada funciona.

Al finalde este mensaje os pongo el código (simplificado) que utilizo.

Os ruego vuestra ayuda.
Muchas gracias por adelantado y recibid un cordial saludo.


private static Server server = null;

public static void startup()
{
WebAppContext ctx = new WebAppContext();
ctx.setContextPath( "/domotics" );

initServer( ctx );
initWebSockets();
initServlets( ctx );
initJSPs( ctx );
server.start();
}

private static void initServer( WebAppContext ctx ) throws Exception
{
server = new Server( 8080 );
server.setHandler( ctx );
server.setStopAtShutdown( true );
}

private static void initWebSockets() throws Exception
{
ServletContextHandler sch = new ServletContextHandler( ServletContextHandler.SESSIONS );
sch.setContextPath( Config.getContextPath() );
ServerContainer wsContainer = WebSocketServerContainerInitializer.configureContext( ctx );
wsContainer.addEndpoint( EventSocket.class );
}

private static void initServlets( WebAppContext ctx ) throws Exception
{
ctx.addServlet( GetFile.class, "/getfile" );
}

private static void initJSPs( WebAppContext ctx ) throws Exception
{
ctx.setResourceBase( "webui" );
ctx.setDescriptor( "web.xml" );

System.setProperty( "org.apache.jasper.compiler.disablejsr199", "false" );

File fTmp = new File( System.getProperty( "java.io.tmpdir" ), "jetty-jsp-tmp" );
if( ! UtilIO.createFolder( fTmp ) )
{
throw new IOException( "Can not create folder '"+ fTmp.getAbsolutePath() +"'" );
}
ctx.setAttribute("javax.servlet.context.tempdir", fTmp );

ClassLoader jspClassLoader = new URLClassLoader( new URL[0], WebServer.class.getClassLoader() );
ctx.setClassLoader( jspClassLoader );

ServletHolder holderJsp = new ServletHolder( "jsp", JspServlet.class );
holderJsp.setInitOrder( 0 );

ServletHolder holderDefault = new ServletHolder( "default", DefaultServlet.class );
holderDefault.setInitParameter( "resourceBase", ctx.getContextPath() );
holderDefault.setInitParameter( "dirAllowed", "false" );
ctx.addServlet( holderDefault, "/" );

ctx.setAttribute( "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/[^/]*jstl.*\\.jar$" );

Configuration.ClassList classlist = Configuration.ClassList.setServerDefault( server );

classlist.addBefore( "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
"org.eclipse.jetty.annotations.AnnotationConfiguration" );

classlist.addAfter( "org.eclipse.jetty.webapp.FragmentConfiguration",
"org.eclipse.jetty.plus.webapp.EnvConfiguration",
"org.eclipse.jetty.plus.webapp.PlusConfiguration" );
}

abril 21, 2017 | Registered Commenterpeyrona