@Test public void testShutdownHandler() throws Exception { final FutureImpl<Boolean> shutdownFuture = SafeFutureImpl.create(); final ShutdownHandler shutDownHandler = new ShutdownHandler() { @Override public void onShutdown(Connection initiator) { shutdownFuture.result(true); } }; AjpAddOn myAjpAddon = new AjpAddOn() { @Override protected AjpHandlerFilter createAjpHandlerFilter() { final AjpHandlerFilter filter = new AjpHandlerFilter(); filter.addShutdownHandler(shutDownHandler); return filter; } }; final NetworkListener listener = httpServer.getListener(LISTENER_NAME); listener.deregisterAddOn(ajpAddon); listener.registerAddOn(myAjpAddon); startHttpServer( new HttpHandler() { @Override public void service(Request request, Response response) throws Exception {} }, "/"); final MemoryManager mm = listener.getTransport().getMemoryManager(); final Buffer request = mm.allocate(512); request.put((byte) 0x12); request.put((byte) 0x34); request.putShort((short) 1); request.put(AjpConstants.JK_AJP13_SHUTDOWN); request.flip(); send("localhost", PORT, request); final Boolean b = shutdownFuture.get(10, TimeUnit.SECONDS); assertTrue(b); }
public static void main(String[] args) throws Exception { final Server server = new DefaultServer(); server.socketAction( new Action<ServerSocket>() { @Override public void on(final ServerSocket socket) { System.out.println("on socket: " + socket.uri()); socket.on( "echo", new Action<Object>() { @Override public void on(Object data) { System.out.println("on echo event: " + data); socket.send("echo", data); } }); socket.on( "chat", new Action<Object>() { @Override public void on(Object data) { System.out.println("on chat event: " + data); server.all().send("chat", data); } }); } }); HttpTransportServer httpTransportServer = new HttpTransportServer().transportAction(server); WebSocketTransportServer wsTransportServer = new WebSocketTransportServer().transportAction(server); HttpServer httpServer = HttpServer.createSimpleServer(); ServerConfiguration config = httpServer.getServerConfiguration(); config.addHttpHandler(new VibeHttpHandler().httpAction(httpTransportServer), "/vibe"); NetworkListener listener = httpServer.getListener("grizzly"); listener.registerAddOn(new WebSocketAddOn()); WebSocketEngine.getEngine() .register("", "/vibe", new VibeWebSocketApplication().wsAction(wsTransportServer)); httpServer.start(); System.in.read(); }