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