66 lines
2.0 KiB
Java
66 lines
2.0 KiB
Java
package ctbrec.docs;
|
|
|
|
import java.net.BindException;
|
|
|
|
import org.eclipse.jetty.server.Handler;
|
|
import org.eclipse.jetty.server.HttpConfiguration;
|
|
import org.eclipse.jetty.server.HttpConnectionFactory;
|
|
import org.eclipse.jetty.server.Server;
|
|
import org.eclipse.jetty.server.ServerConnector;
|
|
import org.eclipse.jetty.server.handler.HandlerList;
|
|
import org.eclipse.jetty.servlet.ServletHandler;
|
|
import org.eclipse.jetty.servlet.ServletHolder;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import ctbrec.servlet.StaticFileServlet;
|
|
|
|
public class DocServer {
|
|
private static final Logger LOG = LoggerFactory.getLogger(DocServer.class);
|
|
|
|
private static volatile boolean started = false;
|
|
|
|
private DocServer() {}
|
|
|
|
public static synchronized void start() throws Exception {
|
|
if(started) {
|
|
return;
|
|
}
|
|
|
|
started = true;
|
|
var server = new Server();
|
|
|
|
var config = new HttpConfiguration();
|
|
config.setSendServerVersion(false);
|
|
var http = new ServerConnector(server, new HttpConnectionFactory(config));
|
|
http.setPort(5689);
|
|
server.addConnector(http);
|
|
|
|
var handler = new ServletHandler();
|
|
server.setHandler(handler);
|
|
var handlers = new HandlerList();
|
|
handlers.setHandlers(new Handler[] { handler });
|
|
server.setHandler(handlers);
|
|
|
|
var markdownServlet = new MarkdownServlet();
|
|
var holder = new ServletHolder(markdownServlet);
|
|
handler.addServletWithMapping(holder, "/docs/*");
|
|
|
|
AbstractDocServlet searchServlet = new SearchServlet();
|
|
holder = new ServletHolder(searchServlet);
|
|
handler.addServletWithMapping(holder, "/search/*");
|
|
|
|
var staticFileServlet = new StaticFileServlet("/html", false);
|
|
holder = new ServletHolder(staticFileServlet);
|
|
handler.addServletWithMapping(holder, "/static/*");
|
|
|
|
|
|
try {
|
|
server.start();
|
|
server.join();
|
|
} catch (BindException e) {
|
|
LOG.error("Port {} is already in use", http.getPort(), e);
|
|
}
|
|
}
|
|
}
|