2014年10月27日月曜日

undertow を使ってみる

ひょんなことから自分のJavaアプリケーションにWebサーバーというかサーブレットコンテナの機能が少しあったら便利だなと思って調べてみたところ、undertowというのがお手軽に使えそうに見えたので試してみました。

1. インストール


そのJavaアプリケーションはmavenを使っていたので、依存関係を追加するだけです。
  <dependency>
   <groupid>io.undertow</groupid>
   <artifactid>undertow-core</artifactid>
   <version>1.0.16.Final</version>
  </dependency>
いやぁ、この手の依存解決ツールって楽ですよねぇ。今さら ant とか書きたくないです。

2. 使う


トップページの下のほうに Show me the code というのがあるので、そのコードをそのままコピー&ペーストします。

Undertow server = Undertow.builder()
 .addHttpListener(8080, "localhost")
 .setHandler(new HttpHandler() {
  @Override
  public void handleRequest(final HttpServerExchange exchange) throws Exception {
   exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
   exchange.getResponseSender().send("Hello World");
  }
 }).build();
server.start();
これだけです?w

3. 使ってみる


では早速リクエストを投げてみます。
$ curl localhost:8080
Hello World$ 
これだけです?w(再

たったこれだけですがサーブレットコンテナとして既に動いているわけですね。これはなかなか楽かも。

当然ですがこのままでは localhost からしかつながりません。 addHttpListener のところで "localhost" を "0.0.0.0" とかにすれば任意のマシンから接続できます。