web-dev-qa-db-ja.com

Javaで簡単なHTTPサーバーを作成しますか?

Javaで簡単なHTTPサーバーを作成する最も簡単な方法は何ですか?これを促進する共通ライブラリはありますか?応答する必要があるのはGET/POST、およびアプリケーションサーバーを使用できません。

これを達成する最も簡単な方法は何ですか?

65
Stefan Kendall

Jetty を使用します。 embedding Jetty のチュートリアルを次に示します。 (これは 古いチュートリアル です。)

Jettyは非常に軽量ですが、サーブレットコンテナを提供します。これは、「アプリケーションサーバー」の使用に対する要件と矛盾する場合があります。

Jettyサーバーをアプリケーションに埋め込むことができます。 Jettyでは、埋め込みORサーブレットコンテナオプション。

43
Kris

これは私がこれについて行く方法です:

  1. ServerSocketリスニングを開始します(おそらくポート80で)。
  2. 接続要求を取得したら、受け入れて別のスレッド/プロセスに渡します(これにより、ServerSocketが利用可能になり、他の接続をリッスンして受け入れられるようになります)。
  3. リクエストテキスト(具体的には、GETまたはPOSTであるかどうかを確認するヘッダー、および渡されたパラメーター)を解析します。
  4. 独自のヘッダー(Content-Typeなど)およびHTML。

FirefoxのFirebugを使用してヘッダーの例を見ると便利です。これはエミュレートしたいものです。

このリンクを試してください:- Javaのマルチスレッドサーバー

31

最も簡単なのは Simple チュートリアルがあり、サーブレットAPIではなくWEB-INFなし、依存関係なしです。単一のJAR内の単純な軽量HTTPサーバー。

21
ng.

Sun JDKを使用している場合は、 this built in library を使用できます。
使用方法については、このサイトをご覧ください。

ない場合は、複数の ここにオープンソースHTTPサーバー をソフトウェアに埋め込むことができます。

8
Romain Hippeau

私はこの例がここにないことに驚いています:

http://hc.Apache.org/httpcomponents-core-ga/httpcore/examples/org/Apache/http/examples/ElementalHttpServer.Java

編集>>上記のリンクにアクセスできません。 POSTの例の後に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/

4
nikdeapen

Java 6にはデフォルトの組み込みhttpサーバーがあります。

ここでスレッドを確認してください

ところで、残りのWebサービスを使用する予定の場合、ここに jerseyを使用した簡単な例 があります。

4
Titu

しばらく前にJavaで簡単なHTTPサーバーを作成する方法を説明したチュートリアルを書きました。コードが何をしているのか、そしてチュートリアルが進むにつれてサーバーがそのように書かれている理由を説明します。役に立つかもしれません http://kcd.sytes.net/articles/simple_web_server.php

3
Charles Dobson

Jetty は、HTTPサーバーを簡単に組み込む素晴らしい方法です。ハンドラーを接続する独自の簡単な方法をサポートし、さらに機能が必要な場合は完全なJ2EEアプリサーバーです。

1
maerics

Tomcatを埋め込むことは、このようなことが進むにつれて比較的簡単です。 こちら それについての良いStackOverflowリファレンス。

1
Dan

ndertow は軽量の非ブロッキングです 組み込みWebサーバー これは非常に迅速に起動して実行できます。

public static void main(String[] args) {
Undertow.builder()
        .addHttpListener(8080, "localhost")
        .setHandler((exchange) -> exchange.getResponseSender().send("hello world"))
        .build().start();
}
0
Bill O'Neil

サーブレットコンテナーは間違いなく行く方法です。 TomcatまたはJettyが重すぎる場合は、 Winstone または TTiny を検討してください。

0