検索
カレンダー
2018年12月
« 4月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
ブログメニュー
Amazon検索
キーワード:

Jetty9で組み込みサーバを構築する方法

2013年4月26日

Jettyを組み込みサーバとして使いたくて使い方を調べたのですが
情報が古かったのでソースコードを解析して自分なりに使い方を見つけたのでメモ。

Jettyの最新のバージョンのドキュメント はバージョン7系のやり方のようで
バージョン9ではコンパイルエラーになってしまいました。
そこで、バージョン9系ではどうすればいいか調べてドキュメントのコードを修正してみました。

package org.eclipse.jetty.embedded;

import org.openqa.jetty.http.HttpContext;
import org.openqa.jetty.jetty.Server;
import org.openqa.jetty.util.InetAddrPort;

public class SimplestServer {

	public static void main(String[] args) throws Exception {
		HttpContext context = new HttpContext();
		context.setContextPath("/");
		context.addHandler(new HelloHandler());

		Server server = new Server();
		server.addListener(new InetAddrPort(8080));
		server.addContext(context);
		server.start();
		server.join();
	}

}
package org.eclipse.jetty.embedded;

import java.io.*;

import javax.servlet.http.HttpServletResponse;

import org.openqa.jetty.http.*;
import org.openqa.jetty.http.handler.AbstractHttpHandler;

public class HelloHandler extends AbstractHttpHandler {

	private static final long serialVersionUID = 1L;

	final String _greeting;

	final String _body;

	public HelloHandler() {
		_greeting = "Hello World";
		_body = null;
	}

	public HelloHandler(String greeting) {
		_greeting = greeting;
		_body = null;
	}

	public HelloHandler(String greeting, String body) {
		_greeting = greeting;
		_body = body;
	}

	@Override
	public void handle(String pathInContext, String pathParams, HttpRequest request, HttpResponse response)
			throws HttpException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.setStatus(HttpServletResponse.SC_OK);
		request.setHandled(true);
		Writer writer = new OutputStreamWriter(response.getOutputStream());
		writer.write("<h1>" + _greeting + "</h1>\n");
		if (_body != null) {
			writer.write(_body);
		}
		writer.flush();
	}

}

組み込みで使う時にlocalhostと任意空いているポートでバインドすることになると思いますが、
その場合は
addListener(new InetAddrPort(8080));
の行を
addListener(new InetAddrPort(“localhost”, 0));
とします。

この時実際に使っているポート番号を取得するには
server.getListeners()[0].getPort();
みたいな感じでいけます。

コメントはまだありません »

コメントはまだありません。

TrackBack URL : http://www.meibinlab.jp/nishijima/archives/146/trackback

コメントする