スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Javaでgrizzlyを使って簡単WebServer

WebアプリでExcelを作るのはJavaのpoiが一番安定していて使いやすいと思っています。
そこでバックエンドでExcelを作るためのサーバを作ることにしました。
tomcatとか準備するのは面倒ですし、ゼロからサーバを書くのも大変なのでgrizzlyでサーバを書きました。
package jp.uniquevision.server;

import java.io.File;

import org.glassfish.grizzly.http.server.HttpHandler;
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.grizzly.http.server.Request;
import org.glassfish.grizzly.http.server.Response;

public class App
{
private static final String STOP_PATH = "/tmp/server_stop";

public static void main( String[] args )
{
HttpServer server = HttpServer.createSimpleServer();
server.getServerConfiguration().addHttpHandler(new HttpHandler() {
public void service(Request request, Response response) throws Exception {
final String data = "alive";
response.setContentType("text/plain");
response.setContentLength(data.length());
response.getWriter().write(data);
}}, "/alive");
try {
server.start();
File file = new File(STOP_PATH);
for (;;) {
Thread.sleep(1000);
if (file.exists()) {
break;
}
}
} catch (Exception e) {
System.err.println(e);
}
}
}

起動させてブラウザでhttp://localhost:8080/aliveにアクセスすると「alive」を返します。
後はやりたい処理のHttpHandlerを書いて、パスと結びつければOKです。Excel出すなりPDF出すなりなんでもOK。

grizzlyのサンプルではSystem.in.readlnで終了処理を行っているのですが、これだとバックグラウンドで動かすと標準入力がEOFになってしまい機能しません。
そこで、停止ファイルを見て処理を終了させるようにしました。
サーバ機能自体は別スレッドで動いているので、sleepしても止まりません。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。