Quel est le moyen le plus simple de créer un serveur HTTP simple avec Java? Y a-t-il des bibliothèques communes qui facilitent cela? Je n'ai qu'à répondre à GET/POST
, et je ne peux pas utiliser un serveur d'applications.
Quel est le moyen le plus simple d'y parvenir?
Utilisez jetée . Voici un tutoriel pour incorporant Jetty . (Voici un tutoriel obsolète .)
Jetty est assez léger, mais il fournit un conteneur de servlet, ce qui peut contredire votre exigence d'utiliser un "serveur d'application".
Vous pouvez intégrer le serveur Jetty dans votre application. Jetty autorise les options de conteneur de servlet intégrées OR.
Voici comment je procéderais:
ServerSocket
(probablement sur le port 80).ServerSocket
disponible pour continuer à écouter et accepter les autres connexions).Content-Type
, etc.) et le HTML.Je trouve utile d’utiliser Firebug (dans Firefox) pour voir des exemples d’en-têtes. C'est ce que vous voulez imiter.
Essayez ce lien: - Serveur multithread en Java
Le plus simple est Simple il y a un tutoriel, pas de WEB-INF, pas d'API Servlet, pas de dépendances. Juste un simple serveur HTTP léger dans un seul JAR.
Si vous utilisez le JDK de Sun, vous pouvez utiliser cette bibliothèque intégrée
Regardez ce site pour savoir comment l'utiliser.
S'il n'y a pas plusieurs Serveurs HTTP Open Source ici que vous pouvez intégrer dans votre logiciel.
Je suis surpris que cet exemple ne soit pas ici:
EDIT >> Le lien ci-dessus n'est pas accessible. Voici un extrait de l'exemple POST suivi du lien vers les exemples 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/
Java 6 a un serveur http intégré par défaut.
En passant, si vous envisagez d’avoir un service Web de repos, voici un exemple simple utilisant jersey .
J'ai écrit un tutoriel expliquant comment écrire un serveur HTTP simple il y a longtemps en Java. Explique ce que fait le code et pourquoi le serveur est écrit de cette façon au fur et à mesure de la progression du didacticiel. Pourrait être utile http://kcd.sytes.net/articles/simple_web_server.php
Jetty est un excellent moyen d'intégrer facilement un serveur HTTP. Il prend en charge son propre moyen simple d'attacher des gestionnaires et constitue un serveur d'applications J2EE complet si vous avez besoin de plus de fonctionnalités.
L’intégration de Tomcat est relativement peu pénible. Voici une bonne référence StackOverflow à ce sujet.
Undertow est un serveur Web intégré non bloquant léger que vous pouvez obtenir. opérationnel très rapidement.
public static void main(String[] args) {
Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler((exchange) -> exchange.getResponseSender().send("hello world"))
.build().start();
}