jafea7-ctbrec-v5.3.2-based/client/src/main/java/ctbrec/docs/DocServer.java

57 lines
1.9 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;
public class DocServer {
private static final transient Logger LOG = LoggerFactory.getLogger(DocServer.class);
private static Server server = new Server();
private static volatile boolean started = false;
public synchronized static void start() throws Exception {
if(started) {
return;
}
server = new Server();
HttpConfiguration config = new HttpConfiguration();
config.setSendServerVersion(false);
ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(config));
http.setPort(5689);
server.addConnector(http);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { handler });
server.setHandler(handlers);
MarkdownServlet markdownServlet = new MarkdownServlet();
ServletHolder holder = new ServletHolder(markdownServlet);
handler.addServletWithMapping(holder, "/docs/*");
StaticFileServlet staticFileServlet = new StaticFileServlet();
holder = new ServletHolder(staticFileServlet);
handler.addServletWithMapping(holder, "/static/*");
try {
server.start();
started = true;
server.join();
} catch (BindException e) {
LOG.error("Port {} is already in use", http.getPort(), e);
}
}
}