- 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オブジェクトを指定することで、このオブジェクトの外部で実行できます。 何も指定しない場合は、デフォルトの実装が使用されます。HTTP要求の受信時に、要求URIのパスのプレフィックスにもっとも良く一致するパスを持つコンテキストを検索することで、適切なHttpContextとハンドラを特定します。 パスは文字どおりに照合されます。 つまり、文字列の比較では大文字と小文字が区別され、エンコードされた形式への変換やこれらの形式からの変換は行われません。 たとえば、HttpServerで次のHttpContextが構成されているとします。 Context コンテキスト・パス ctx1 "/" ctx2 "/apps/" ctx3 "/apps/foo/" 次の表に、いくつかの要求URIと、一致する可能性があるコンテキストがあればそれを示します。 要求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
 
- 
- 
コンストラクタのサマリーコンストラクタ 修飾子 コンストラクタ 説明 protectedHttpServer()
 - 
メソッドのサマリー修飾子と型 メソッド 説明 abstract voidbind(InetSocketAddress addr, int backlog)現在バインドされていないHttpServerを、指定されたアドレスおよびポート番号にバインドします。static HttpServercreate()最初にローカル・アドレス/ポートにバインドされていないHttpServerインスタンスを作成します。static HttpServercreate(InetSocketAddress addr, int backlog)指定されたInetSocketAddress(IPアドレスとポート番号)にバインドするHttpServerインスタンスを作成します。最大バックログも指定できます。abstract HttpContextcreateContext(String path)最初にハンドラを指定せずにHttpContextを作成します。abstract HttpContextcreateContext(String path, HttpHandler handler)HttpContextを作成します。abstract InetSocketAddressgetAddress()このサーバーが待機しているアドレスを返します。abstract ExecutorgetExecutor()このサーバーのexecutorオブジェクトがsetExecutor(Executor)で指定された場合は、それを返します。何も指定されていない場合は、nullを返します。abstract voidremoveContext(HttpContext context)指定されたコンテキストをサーバーから削除します。abstract voidremoveContext(String path)指定されたパスによって識別されるコンテキストをサーバーから削除します。abstract voidsetExecutor(Executor executor)このサーバーのExecutorオブジェクトを設定します。abstract voidstart()新しいバックグラウンド・スレッドでこのサーバーを起動します。abstract voidstop(int delay)待機中のソケットを閉じ、新しい交換を処理できないようにすることで、このサーバーを停止します。
 
- 
- 
- 
メソッドの詳細- 
createpublic static HttpServer create() throws IOException 最初にローカル・アドレス/ポートにバインドされていないHttpServerインスタンスを作成します。 HttpServerは、現在インストールされているHttpServerProviderから取得します。このサーバーは、bind(InetSocketAddress,int)を使用してバインドしてからでないと使用できません。- 例外:
- IOException
 
 - 
createpublic static HttpServer create(InetSocketAddress addr, int backlog) throws IOException 指定されたInetSocketAddress(IPアドレスとポート番号)にバインドするHttpServerインスタンスを作成します。最大バックログも指定できます。 これは、待機中のソケットでキューに入れることができる着信接続の最大数です。 キューに入れられたTCP接続がこの上限を超える場合は、TCP実装で拒否されることがあります。 HttpServerは、現在インストールされているHttpServerProviderから取得します- パラメータ:
- addr- 待機するアドレス。- nullの場合は、bind()を呼び出してアドレスを設定する必要がある
- backlog- ソケットのバックログ。 この値がゼロ以下の場合は、システム・デフォルト値が使用される。
- 例外:
- BindException- サーバーが要求されたアドレスをバインドできない場合、またはサーバーがすでにバインドされている場合。
- IOException
 
 - 
bindpublic abstract void bind(InetSocketAddress addr, int backlog) throws IOException 現在バインドされていないHttpServerを、指定されたアドレスおよびポート番号にバインドします。 最大バックログも指定できます。 これは、待機中のソケットでキューに入れることができる着信接続の最大数です。 キューに入れられたTCP接続がこの上限を超える場合は、TCP実装で拒否されることがあります。- パラメータ:
- addr- 待機するアドレス
- backlog- ソケットのバックログ。 この値がゼロ以下の場合は、システム・デフォルト値が使用される。
- 例外:
- BindException- サーバーが要求されたアドレスをバインドできない場合、またはサーバーがすでにバインドされている場合。
- NullPointerException- addrが- nullの場合
- IOException
 
 - 
startpublic abstract void start() 新しいバックグラウンド・スレッドでこのサーバーを起動します。 バックグラウンド・スレッドは、呼出し側の優先順位、スレッド・グループ、およびコンテキスト・クラス・ローダーを継承します。
 - 
setExecutorpublic abstract void setExecutor(Executor executor) このサーバーのExecutorオブジェクトを設定します。 executorは、start()を呼び出す前に設定する必要があります。 すべてのHTTP要求は、executorに指定されたタスクで処理されます。 start()の前にこのメソッドを呼び出さない場合、またはnullのexecutorで呼び出した場合は、デフォルトの実装が使用されます。デフォルトの実装では、start()メソッドで作成されたスレッドが使用されます。- パラメータ:
- executor- 設定するexecutor。デフォルトの実装の場合は- null
- 例外:
- IllegalStateException- このサーバーがすでに起動している場合
 
 - 
getExecutorpublic abstract Executor getExecutor() このサーバーのexecutorオブジェクトがsetExecutor(Executor)で指定された場合は、それを返します。何も指定されていない場合は、nullを返します。- 戻り値:
- このサーバーに設定されたexecutor。設定されていない場合はnull。
 
 - 
stoppublic abstract void stop(int delay) 待機中のソケットを閉じ、新しい交換を処理できないようにすることで、このサーバーを停止します。 次にこのメソッドは、現在のすべての交換ハンドラが完了するまで、あるいは遅延秒数がほぼ経過するまで(いずれか先に発生したほうが優先される)ブロックされます。 そのあと、開いているすべてのTCP接続が閉じられ、start()で作成されたバックグラウンド・スレッドが終了し、メソッドが復帰します。 停止後、HttpServerは再利用できません。- パラメータ:
- delay- 交換が終了するまでの最大待機時間(秒)。
- 例外:
- IllegalArgumentException- 遅延が0未満の場合。
 
 - 
createContextpublic abstract HttpContext createContext(String path, HttpHandler handler) HttpContextを作成します。 HttpContextは、URIパスからこのHttpServer上の交換ハンドラへのマッピングを表します。 作成後、パスに対してサーバーが受信するすべての要求は、指定されたハンドラ・オブジェクトを呼び出すことで処理されます。 コンテキストはパスによって識別され、これをremoveContext(String)メソッドとともに使用して、あとでサーバーから削除できます。パスはこのコンテキストのルートURIパスを指定します。 パスの最初の文字は「/」である必要があります。 このクラスの概要では、着信要求URIがHttpContextインスタンスにマップされる方法を記述しています。 - パラメータ:
- path- コンテキストを関連付けるルートURIパス
- handler- 着信要求を呼び出すハンドラ。
- 例外:
- IllegalArgumentException- パスが無効な場合、またはこのパスのコンテキストがすでに存在する場合
- NullPointerException- パスまたはハンドラのいずれかが- nullの場合
 
 - 
createContextpublic abstract HttpContext createContext(String path) 最初にハンドラを指定せずにHttpContextを作成します。 ハンドラは、HttpContext.setHandler(HttpHandler)を使用してあとで指定する必要があります。 HttpContextは、URIパスからこのHttpServer上の交換ハンドラへのマッピングを表します。 作成後、ハンドラが設定されると、パスに対してサーバーが受信するすべての要求が、ハンドラ・オブジェクトを呼び出すことで処理されます。 コンテキストはパスによって識別され、これをremoveContext(String)メソッドとともに使用して、あとでサーバーから削除できます。パスはこのコンテキストのルートURIパスを指定します。 パスの最初の文字は「/」である必要があります。 このクラスの概要では、着信要求URIがHttpContextインスタンスにマップされる方法を記述しています。 - パラメータ:
- path- コンテキストを関連付けるルートURIパス
- 例外:
- IllegalArgumentException- パスが無効な場合、またはこのパスのコンテキストがすでに存在する場合
- NullPointerException- パスが- nullの場合
 
 - 
removeContextpublic abstract void removeContext(String path) throws IllegalArgumentException 指定されたパスによって識別されるコンテキストをサーバーから削除します。 コンテキストを削除しても、現在処理されている交換には影響を与えませんが、新しい交換は受け入れられなくなります。- パラメータ:
- path- 削除されるハンドラのパス
- 例外:
- IllegalArgumentException- このパスに対応するハンドラが存在しない場合。
- NullPointerException- パスが- nullの場合
 
 - 
removeContextpublic abstract void removeContext(HttpContext context) 指定されたコンテキストをサーバーから削除します。 コンテキストを削除しても、現在処理されている交換には影響を与えませんが、新しい交換は受け入れられなくなります。- パラメータ:
- context- 削除するコンテキスト
- 例外:
- NullPointerException- contextが- nullの場合
 
 - 
getAddresspublic abstract InetSocketAddress getAddress() このサーバーが待機しているアドレスを返します。- 戻り値:
- サーバーが待機しているアドレス/ポート番号
 
 
- 
 
-