Arrancar el servidor web Jetty desde una aplicación Java.
Por la pereza de tener que montar una aplicación WAR con su correspondiente servlet que procesase esta URL y tener 2 proyectos diferentes arrancados en Eclipse, me vino a la cabeza el arrancar un servidor web desde la misma aplicación.
De los servidores web que encontré (el que viene por defecto en Java 6 tenía restricciones), he escogido Jetty y dejo el ejemplo que aparece en la documentación del proyecto (¡ Vamos que no me he currado nada salvo un copy-paste !).
Arrancamos el servidor web en el puerto 8080, indicando que cuando se ponga el contexto /hello, la clase HelloHandler gestionará la llamada.
package es.neodoo.http.server; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; /** * The simplest possible Jetty server. */ public class SimplestServer { public static void main(String[] args) throws Exception { Server server = new Server(8080); ContextHandler context = new ContextHandler(); context.setContextPath("/hello"); context.setResourceBase("."); context.setClassLoader(Thread.currentThread().getContextClassLoader()); server.setHandler(context); context.setHandler(new HelloHandler()); server.start(); server.join(); } }
Y ahora falta la clase HelloHandler, que es quién controlará las URL’s cuando se acceda por http://localhost:8080/hello
package es.neodoo.http.server; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; public class HelloHandler extends AbstractHandler { String greeting = null; String body = null; public HelloHandler() { this.greeting = "Hello World"; } public HelloHandler(String greeting) { this.greeting = greeting; } public HelloHandler(String greeting, String body) { this.greeting = greeting; this.body = body; } public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); response.getWriter().println("<h1>" + greeting + "</h1>"); if (body != null) response.getWriter().println(body); } }
0 comentarios