argius note

プログラミング関連

Java HTTP Server

今日、教えていただいたのですが、Sunの*1JavaSE6には Java HTTP Server という組み込みHTTPサーバAPIがあります。これは、spiパッケージがあることから、プラグイン可能なHTTPサーバAPIのインタフェースになっていると思われます。以前作ったローカル用ブックマークはこれを使うと楽そうですね。
APIリファレンス→Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle

試しに簡単な処理を書いてみました。ブラウザからhttp://localhost:8888/にアクセスすると、"welcome"と表示されます。

import java.io.*;
import java.net.*;

import com.sun.net.httpserver.*;

public final class MyHttpd {

    private static class Handler implements HttpHandler {
        public void handle(HttpExchange t) throws IOException {
            String response = "welcome";
            t.sendResponseHeaders(200, response.length());
            OutputStream os = t.getResponseBody();
            try {
                os.write(response.getBytes());
            } finally {
                os.close();
            }
        }
    }

    public static void main(String[] args) {
        try {
            InetSocketAddress port = new InetSocketAddress(8888);
            HttpServer server = HttpServer.create(port, 0);
            server.createContext("/", new Handler());
            server.setExecutor(null);
            server.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

*1:com.sunのサブパッケージなので。どういう扱いなのかは不明。