package streamflow.server; import com.google.inject.servlet.GuiceFilter; import java.util.EnumSet; import javax.servlet.DispatcherType; import streamflow.model.config.StreamflowConfig; import streamflow.server.config.WebConfig; import streamflow.util.config.ConfigLoader; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.DefaultServlet; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.util.resource.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class StreamflowServer { public static Logger LOG = LoggerFactory.getLogger(StreamflowServer.class); public static void main(String[] args) throws Exception { long startTime = System.currentTimeMillis(); StreamflowConfig streamflowConfig = ConfigLoader.getConfig(); LOG.info("Streamflow Server: Binding server to port " + streamflowConfig.getServer().getPort()); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/"); context.addEventListener(new WebConfig()); context.addFilter(GuiceFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); context.setWelcomeFiles(new String[]{ "index.htm", "index.html" }); context.setBaseResource(Resource.newClassPathResource("/assets")); context.addServlet(DefaultServlet.class, "/*"); Server server = new Server(streamflowConfig.getServer().getPort()); server.setHandler(context); server.start(); double startupTime = (System.currentTimeMillis() - startTime) / 1000.0; LOG.info("Streamflow Server: Server started in " + startupTime + " seconds"); server.join(); } }