モジュール jdk.httpserver
パッケージ com.sun.net.httpserver

クラスHttpServer

java.lang.Object
com.sun.net.httpserver.HttpServer
直系の既知のサブクラス:
HttpsServer

public abstract class HttpServer extends Object
このクラスは、単純なHTTPサーバーを実装します。 HttpServerは、IPアドレスおよびポート番号にバインドされ、このアドレスのクライアントからの着信TCP接続をリスニングします。 サブクラスHttpsServerは、HTTPS要求を処理するサーバーを実装します。

要求を処理するためには、1つ以上のHttpHandlerオブジェクトをサーバーと関連付ける必要があります。 このような各HttpHandlerは、このサーバー上のアプリケーションまたはサービスのロケーションを表すルートURIパスに登録されます。 ハンドラからHttpServerへのマッピングは、HttpContextオブジェクトによってカプセル化されます。 HttpContextは、createContext(String,HttpHandler)を呼び出すことで作成されます。 ハンドラが見つからない要求は、応答404で拒否されます。 スレッドの管理は、Executorオブジェクトを指定することで、このオブジェクトの外部で実行できます。 何も指定しない場合は、デフォルトの実装が使用されます。

HttpContextパスへの要求URIのマッピング

HTTPリクエストを受信すると、パスがリクエストURIパスの最長一致プレフィクスであるコンテキストを検索することで、適切なHttpContext (ハンドラ)が検出されます。 パスは文字どおりに照合されます。 たとえば、次のHttpContextsが構成されたHttpServerがあるとします:

description
コンテキスト コンテキスト・パス
ctx1"/"
ctx2"/apps/"
ctx3"/apps/foo/"

次の表に、いくつかのリクエストURIと、それらが一致するコンテキストを示します:

description
要求URI 一致するコンテキスト
"http://foo.com/apps/foo/bar"ctx3
"http://foo.com/apps/Foo/bar"一致なし、大文字と小文字の誤り
"http://foo.com/apps/app1"ctx2
"http://foo.com/foo"ctx1

ソケット・バックログについてのノート

アドレスとポート番号にバインドするときは、アプリケーションで整数のバックログ・パラメータも指定できます。 これは、システムが内部的にキューに入れる着信TCP接続の最大数を表します。 接続は、HttpServerによる受入れを待機している間、キューに入れられます。 上限に達すると、それ以上の接続は基本となるTCP実装によって拒否されるか、場合によっては無視されます。 正しいバックログ値の設定は、TCP層でのリソースの効率的な使用(高すぎる値を設定しない)と、着信要求の適切なスループットの維持(低すぎる値を設定しない)との間の妥協点になります。

導入されたバージョン:
1.6