Home| New Wiki | | Login | User registry | Home Tree PDF
WebServer
Owner:csilva, Version: 6, Date:Wed 29, November 2006,

This is a very small web server (26kb w/sources) with support for http modules similar to servlets. Supports file retrieval from a root path and administration. It's meant for a portable tool and for embedded web servers.

Este es un pequeño webserver de 26Kb (fuentes incluidos) y que soporta modulos similares a servlets. Solo tiene soporte como web server de archivos (no dinamico) ademas de un modulo de administracion que se acede a traves de: http://sitio:puerta/admin/. Está pensado para soporte a webservers inmersos en otros proyectos.

Se puede ejecutar desde una carpeta y utilizará una carpeta ./www (por omision) como raiz.

java -jar webserver.jar

El archivo welcome debe llamarse index.html y debe estar presente en las carpetas para que funcione una llamada del estilo.

http://localhost:8080/

Tambien se puede usar con mas opciones.

java -jar webserver.jar -p 80 -r /var/www/html -m /etc/mime.types

Download

Los fuentes se pueden bajar aqui:

/lib/webserver.jar

Listado 1: Funcion (de HttpModule) que retorna los archivos desde el filesystem:

public void doTask (HttpRequest request, HttpResponse response)
     throws IOException  {		
  File test = new File(httpContext.getRoot(), request.getUri());
  if (test.isDirectory())
    test = new File(test,WELCOME_FILE);
  if (!test.exists()) {
    response.setStatusCode (404);
    return;
  }		
  
  String ext = getFileExt(test);
  
  String mimeType = httpContext.getMimeTypes().getMimeType(ext);
  
  response.setContentLength((int) test.length());
  response.setContentType(mimeType);
  InputStream is = new FileInputStream(test);
  OutputStream out = response.getOutputStream();
  byte buf[] = new byte[1024*8196];
  int nread = 0;
  while((nread=is.read(buf))>0)
    out.write(buf, 0, nread);			
  is.close();
  out.close();
}


History - Extract PDF - Extract Tree as PDF

Last Modified

Thu, Nov 19 Sat, Oct 3 Fri, Sep 25 Mon, Aug 3 Mon, Apr 27 Sat, Mar 28 Mon, Jan 19 Tue, Jan 6

Home| New Wiki