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