Seleccionar página

Arrancar el servidor web Jetty desde una aplicación Java

por | Abr 23, 2011 | Java

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);

	}

}

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *