com.pinterest.doctorkafka.servlet.DoctorKafkaWebServer Maven / Gradle / Ivy
package com.pinterest.doctorkafka.servlet;
import com.google.common.base.Charsets;
import com.google.common.io.CharStreams;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLClassLoader;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DoctorKafkaWebServer implements Runnable {
private static final Logger LOG = LogManager.getLogger(DoctorKafkaWebServer.class);
private static final String WEBAPP_DIR = "webapp/pages/index.html";
private Thread thread;
private int port;
public DoctorKafkaWebServer(int port) {
this.port = port;
}
public void start() {
thread = new Thread(this);
thread.start();
}
@Override
public void run() {
try {
Server server = new Server(port);
URL warUrl = DoctorKafkaWebServer.class.getClassLoader().getResource(WEBAPP_DIR);
if (warUrl == null) {
LOG.error("warUrl is null");
}
String warUrlString = warUrl.toExternalForm();
WebAppContext webapp = new WebAppContext();
server.setHandler(webapp);
server.start();
if (LOG.isDebugEnabled()) {
server.dumpStdErr();
}
server.join();
} catch (Exception e) {
LOG.error("Exception in DoctorKafkaWebServer.", e);
}
}
@SuppressWarnings("serial")
public static class OperatorIndexServlet extends HttpServlet {
private static final String indexPagePath = "webapp/pages/index.html";
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html");
try {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource(indexPagePath);
URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{resource});
InputStream input = urlClassLoader.getResourceAsStream(indexPagePath);
String result = CharStreams.toString(new InputStreamReader(input, Charsets.UTF_8));
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().print(result);
} catch (Exception e) {
response.getWriter().print(e);
LOG.error("error : ", e);
}
}
}
}