パッケージ com.sun.net.httpserver
プログラマは、HttpHandlerインタフェースを実装する必要があります。 このインタフェースは、クライアントからの着信要求を処理するために呼び出されるコールバックを提供します。 HTTP要求とその応答を交換といいます。 HTTP交換は、HttpExchangeクラスによって表されます。 HttpServerクラスは、着信TCP接続の待機に使用され、これらの接続での要求をサーバーに登録されているハンドラにディスパッチします。
最小のHTTPサーバーの例を次に示します。
class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
InputStream is = t.getRequestBody();
read(is); // .. read the request body
String response = "This is the response";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
...
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/applications/myapp", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
この例では、呼出し側アプリケーション・スレッドを使用して、ポート8000およびパス/applications/myapp/に転送された着信http要求に対してhandle()メソッドを呼び出す単純なHttpServerを作成します。
HttpExchangeクラスは、アプリケーションが着信要求を処理し、適切な応答を生成するために必要なものをすべてカプセル化します。
HttpServerにハンドラを登録するとHttpContextオブジェクトが作成され、返されたコンテキストにFilterオブジェクトを追加できます。 交換ハンドラに渡す前に、交換の事前処理と事後処理を自動的に実行するにはフィルタを使用します。
機密情報については、HttpsServerを使用すると、SSLまたはTLSプロトコルでセキュリティ保護されたhttps要求を処理できます。 HttpsServerはHttpsConfiguratorオブジェクトを持つ必要があります。このオブジェクトには初期化されたSSLContextが格納されます。 HttpsConfiguratorを使用すると、暗号化方式群やその他のSSL動作パラメータを構成できます。 次にSSLContextの簡単な例を示します。
char[] passphrase = "passphrase".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("testkeys"), passphrase);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, passphrase);
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
この例では、クライアントとサーバーの証明書の証明書ストアとして、keytoolユーティリティで作成された「testkeys」というキーストア・ファイルを使用しています。 次のコードは、その後HttpsConfiguratorでSSLContextがどのように使用されるか、またSSLContextとHttpsConfiguratorがどのようにHttpsServerにリンクされるかを示しています。
server.setHttpsConfigurator (new HttpsConfigurator(sslContext) {
public void configure (HttpsParameters params) {
// get the remote address if needed
InetSocketAddress remote = params.getClientAddress();
SSLContext c = getSSLContext();
// get the default parameters
SSLParameters sslparams = c.getDefaultSSLParameters();
if (remote.equals (...) ) {
// modify the default set for client x
}
params.setSSLParameters(sslparams);
// statement above could throw IAE if any params invalid.
// eg. if app has a UI and parameters supplied by a user.
}
});
- 導入されたバージョン:
- 1.6
-
インタフェースのサマリー インタフェース 説明 HttpHandler HTTP交換を処理するために呼び出されるハンドラです。 -
クラスのサマリー クラス 説明 Authenticator Authenticatorは、HTTP認証メカニズムの実装を表します。Authenticator.Failure 認証の失敗を示します。Authenticator.Result authenticate()メソッドからの戻り値の型の基底クラスです。Authenticator.Retry 認証を再試行する必要があることを示します。Authenticator.Success 認証が成功し、getPrincipal()を呼び出すことによって認証されたユーザー主体を取得できることを示します。BasicAuthenticator BasicAuthenticatorは、HTTP基本認証の実装を提供します。Filter 着信要求の事前処理および事後処理に使用されるフィルタです。Filter.Chain HttpServerに関連付けられたフィルタのチェーンです。Headers HttpContext HttpContextは、HttpHandlerへのアプリケーションのルートURIパスのマッピングを表します。これは、関連付けられたHttpServerまたはHttpsServer上のそのパスに対する要求を処理するために呼び出されます。HttpExchange このクラスは、一回の交換で、受信するHTTP要求と生成される応答をカプセル化します。HttpPrincipal HTTP基本認証またはダイジェスト認証によって認証されたユーザーを表します。HttpsConfigurator このクラスは、HttpsServer上の各着信HTTPS接続のHTTPSパラメータを構成するために使用します。HttpServer このクラスは、単純なHTTPサーバーを実装します。HttpsExchange このクラスは、受信したHTTPS要求と1回の交換で生成される応答をカプセル化し、HTTPSプロトコルに固有のHttpExchangeへの拡張機能を定義します。HttpsParameters クライアントとネゴシエーションを行う各HTTPS接続のパラメータのセットを表します。HttpsServer このクラスは、HTTPSに対するサポートを提供するHttpServerの拡張です。