Java の WebSocket を使ったエコーアプリを、組込み Jetty で起動してみようと思います。アプリの資源は、以下の記事で準備してきました。
アプリ(と今回のコード)を動かすためには、上の記事の資源が必要になります。必要に応じて参照して頂けると嬉しいです。
1. メインクラスの作成
Jetty を起動するメインクラスを作成します。
ws-echo/src/main/java/sample/ws/echo/jetty/Main.java
package sample.ws.echo.jetty; import javax.websocket.server.ServerContainer; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer; import sample.ws.echo.EchoSocket; public class Main { public static void main(String[] args) throws Exception { //-> setup context WebAppContext ctxt = new WebAppContext(); ctxt.setContextPath("/ws-echo"); //-> setup static file ctxt.setBaseResource( Resource.newResource("src/main/webapp") ); //-> setup server Server svr = new Server(8080); svr.setHandler(ctxt); //-> setup websocket ServerContainer ws = WebSocketServerContainerInitializer.configureContext(ctxt); ws.addEndpoint(EchoSocket.class); //-> start server svr.start(); svr.join(); } }
Jetty の WebSocketServerContainerInitializer を使って、WebSocket が有効になるように設定しています。あとは ServerContainer を使って、以前作成した EchoSocket をエンドポイントとして登録しています。
2. 実行
上のメインクラスを実行するとサーバが起動します。Eclipse 等で実行すると簡単だと思います。
次回
次回は、ブラウザからアプリの動作確認をしようと思います。
次の記事:エコーアプリの動作確認