Skip to content

Commit

Permalink
Stop the Jetty Connectors (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
gregw authored Oct 16, 2023
1 parent 1728a82 commit 618792b
Showing 1 changed file with 11 additions and 24 deletions.
35 changes: 11 additions & 24 deletions src/main/java/com/example/App.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example;

import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
Expand All @@ -13,40 +14,27 @@
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.util.component.LifeCycle;

class ServerManager implements Resource
{
class ServerManager implements Resource {
Server server;
Thread preventExitThread;

public ServerManager(int port, Handler handler) throws Exception {
server = new Server(8080);
server.setHandler(handler);
server.start();
Core.getGlobalContext().register(this);

// beforeCheckpoint implemented in simplest manner: shutdown the jetty
// server. There may be no non-daemon threads left, so JVM may exit.
// Here we provides a thread that will keep JVM running.
preventExitThread = new Thread(() -> {
while (true) {
try {
Thread.sleep(1_000_000);
} catch (InterruptedException e) {
}
}
});
preventExitThread.start();
}

@Override
public void beforeCheckpoint(Context<? extends Resource> context) throws Exception {
server.stop();
public void beforeCheckpoint(Context<? extends Resource> context) {
// Stop the connectors only and keep the expensive application running
Arrays.asList(server.getConnectors()).forEach(c -> LifeCycle.stop(c));
}

@Override
public void afterRestore(Context<? extends Resource> context) throws Exception {
server.start();
public void afterRestore(Context<? extends Resource> context) {
Arrays.asList(server.getConnectors()).forEach(c -> LifeCycle.start(c));
}
}

Expand All @@ -58,16 +46,15 @@ public void handle(String target,
Request baseRequest,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
throws IOException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("Hello World");
}

public static void main( String[] args ) throws Exception
{
public static void main( String[] args ) throws Exception {
serverManager = new ServerManager(8080, new App());
serverManager.server.join();
}
}

0 comments on commit 618792b

Please sign in to comment.