Was ist der einfachste Weg, um einen einfachen HTTP-Server mit Java zu erstellen? Gibt es Bibliotheken in Commons, um dies zu erleichtern? Ich muss nur auf GET/POST
Antworten und kann keinen Anwendungsserver verwenden.
Was ist der einfachste Weg, um dies zu erreichen?
Verwenden Sie Steg . Hier ist ein Tutorial für Jetty einbetten . (Hier ist ein veraltetes Tutorial .)
Jetty ist ziemlich leichtgewichtig, bietet jedoch einen Servlet-Container, der möglicherweise Ihren Anforderungen an die Verwendung eines "Anwendungsservers" widerspricht.
Sie können den Jetty-Server in Ihre Anwendung einbetten. Jetty erlaubt entweder eingebettete OR Servlet-Container-Optionen.
So würde ich vorgehen:
ServerSocket
Listening (wahrscheinlich auf Port 80).ServerSocket
verfügbar, um weiterzuhören und andere Verbindungen zu akzeptieren).Content-Type
usw.) und das HTML.Ich finde es nützlich, Firebug (in Firefox) zu verwenden, um Beispiele für Header zu sehen. Dies ist, was Sie emulieren möchten.
Versuchen Sie diesen Link: - Multithread-Server in Java
Am einfachsten ist Einfach es gibt ein Tutorial, kein WEB-INF, keine Servlet-API, keine Abhängigkeiten. Nur ein einfacher, kompakter HTTP-Server in einer einzelnen JAR.
Wenn Sie das Sun JDK verwenden, können Sie diese eingebaute Bibliothek verwenden
Sehen Sie auf dieser Seite nach, wie man es benutzt.
Wenn nicht, gibt es mehrere Open Source HTTP Server hier , die Sie in Ihre Software einbetten können.
Ich bin überrascht, dass dieses Beispiel nicht hier ist:
BEARBEITEN >> Der obige Link ist nicht erreichbar. Hier ist ein Auszug aus dem Beispiel POST gefolgt von dem Link zu den HTTP-Beispielen.
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/
Java 6 verfügt standardmäßig über einen eingebetteten HTTP-Server.
Überprüfen Sie den Thread hier
Übrigens, wenn Sie vorhaben, einen Web-Service für Ruhepausen zu nutzen, finden Sie hier ein einfaches Beispiel mit Trikot .
Ich habe ein Tutorial geschrieben, das erklärt, wie man einen einfachen HTTP-Server vor einiger Zeit in Java schreibt. Erklärt, was der Code tut und warum der Server im Verlauf des Lernprogramms so geschrieben ist. Könnte nützlich sein http://kcd.sytes.net/articles/simple_web_server.php
Jetty ist eine großartige Möglichkeit, einen HTTP-Server einfach einzubetten. Es unterstützt seine eigene einfache Methode zum Anschließen von Handlern und ist ein vollständiger J2EE-App-Server, wenn Sie weitere Funktionen benötigen.
Das Einbetten von Tomcat ist relativ schmerzlos. hier ist eine gute StackOverflow-Referenz darüber.
ndertow ist ein leichter, nicht blockierender eingebetteter Webserver , mit dem Sie sehr schnell loslegen können.
public static void main(String[] args) {
Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler((exchange) -> exchange.getResponseSender().send("hello world"))
.build().start();
}