package org.example; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.io.BufferedReader; import java.io.InputStreamReader; import java.nio.file.Files; import java.nio.file.Paths; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; public class Application extends AbstractHandler { private static final int PAGE_SIZE = 3000; private static final String INDEX_HTML = loadIndex(); private static String loadIndex() { try (BufferedReader reader = new BufferedReader(new InputStreamReader(Application.class.getResourceAsStream("/index.html")))) { final StringBuilder page = new StringBuilder(PAGE_SIZE); String line = null; while ((line = reader.readLine()) != null) { page.append(line); } return page.toString(); } catch (final Exception exception) { return getStackTrace(exception); } } private static String getStackTrace(final Throwable throwable) { final StringWriter stringWriter = new StringWriter(); final PrintWriter printWriter = new PrintWriter(stringWriter, true); throwable.printStackTrace(printWriter); return stringWriter.getBuffer().toString(); } private static int getPort() { return Integer.parseInt(System.getenv().get("PORT")); } private void handleHttpRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { // Handle HTTP requests here. response.getWriter().println(INDEX_HTML); } private void handleCronTask(HttpServletRequest request, HttpServletResponse response) throws IOException { // Handle WorkerTier tasks here. response.getWriter().println("Process Task Here."); } public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); String pathInfo = request.getPathInfo(); if (pathInfo.equalsIgnoreCase("/crontask")) { handleCronTask(request, response); } else { handleHttpRequest(request, response); } } public static void main(String[] args) throws Exception { Server server = new Server(getPort()); server.setHandler(new Application()); server.start(); server.join(); } }