Crear un servidor HTTP simple con Java?

¿Cuál es la forma más fácil de crear un servidor HTTP simple con Java? ¿Hay alguna biblioteca en común para facilitar esto? Solo necesito responder a GET/POST , y no puedo usar un servidor de aplicaciones.

¿Cuál es la forma más fácil de lograr esto?

Usa Jetty Aquí hay un tutorial para incrustar Jetty . (Aquí hay un tutorial obsoleto ).

Jetty es bastante liviano, pero proporciona un contenedor de servlets, lo que puede contradecir su requisito de no usar un “servidor de aplicaciones”.

Puede incrustar el servidor Jetty en su aplicación. Jetty permite CUALQUIER opción de contenedor incrustado o servlet.

Así es como voy a hacer esto:

  1. Inicie una escucha ServerSocket (probablemente en el puerto 80).
  2. Una vez que obtenga una solicitud de conexión, acepte y pase a otro hilo / proceso (esto deja su ServerSocket disponible para seguir escuchando y aceptar otras conexiones).
  3. Analice el texto de la solicitud (específicamente, los encabezados donde verá si es un GET o POST, y los parámetros pasaron).
  4. Responda con sus propios encabezados ( Content-Type , etc.) y el HTML.

Me parece útil usar Firebug (en Firefox) para ver ejemplos de encabezados. Esto es lo que quieres emular.

Pruebe este enlace: – Servidor multiproceso en Java

El más fácil es simple, hay un tutorial, no hay WEB-INF ni API de servlet sin dependencias. Solo un simple servidor HTTP liviano en un solo JAR.

Si está utilizando Sun JDK, puede usar esta biblioteca incorporada
Mire este sitio sobre cómo usarlo.

Si no hay varios Servidores HTTP de Código Abierto aquí , puede incrustarlos en su software.

Java 6 tiene un servidor http incrustado por defecto.

Mira el hilo aquí

Por cierto, si planeas tener un servicio web de descanso, aquí tienes un ejemplo simple usando jersey .

Me sorprende que este ejemplo no esté aquí:

http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/ElementalHttpServer.java

EDIT >> El enlace de arriba no es accesible. Aquí hay un extracto del ejemplo POST seguido del enlace a los ejemplos HTTP.

  if (!conn.isOpen()) { Socket socket = new Socket(host.getHostName(), host.getPort()); conn.bind(socket); } BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/servlets‐examples/servlet/RequestInfoExample"); request.setEntity(requestBodies[i]); System.out.println(">> Request URI: " + request.getRequestLine().getUri()); httpexecutor.preProcess(request, httpproc, coreContext); HttpResponse response = httpexecutor.execute(request, conn, coreContext); httpexecutor.postProcess(response, httpproc, coreContext); System.out.println("<< Response: " + response.getStatusLine()); System.out.println(EntityUtils.toString(response.getEntity())); System.out.println("=============="); if (!connStrategy.keepAlive(response, coreContext)) { conn.close(); } else { System.out.println("Connection kept alive..."); } 

http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/

Escribí un tutorial explicando cómo escribir un servidor HTTP simple hace un tiempo en Java. Explica qué está haciendo el código y por qué el servidor está escrito de esa manera a medida que avanza el tutorial. Podría ser útil http://kcd.sytes.net/articles/simple_web_server.php

Jetty es una excelente manera de insertar fácilmente un servidor HTTP. Admite su propia forma simple de adjuntar controladores y es un servidor de aplicaciones J2EE completo si necesita más funcionalidad.

Incrustar Tomcat es relativamente sencillo ya que tales cosas van. Aquí hay una buena referencia de StackOverflow al respecto.

Un contenedor servlet es definitivamente el camino a seguir. Si Tomcat o Jetty son demasiado pesados ​​para usted, considere Winstone o TTiny .

Acabo de agregar un repository público con un servidor listo para usar listo para usar Jetty y JDBC para iniciar su proyecto.

Extraiga de github aquí: https://github.com/waf04/WAF-Simple-JAVA-HTTP-MYSQL-Server.git