package org.esmerilprogramming.overtown.server; import io.undertow.Undertow; import java.io.IOException; import javax.servlet.ServletException; import org.esmerilprogramming.overtown.server.handlers.StartupHandler; import org.esmerilprogramming.overtown.server.handlers.StartupHandlerImpl; import org.jboss.logging.Logger; public final class Overtown { private static final Logger LOGGER = Logger.getLogger(Overtown.class); private Undertow server; public Overtown(Configuration configuration){ try{ start(configuration); }catch(RuntimeException e){ LOGGER.error("Error on startup"); LOGGER.error( e.getMessage() ); e.printStackTrace(); } } public Overtown() { this( new ConfigurationBuilder().defaultConfiguration() ); } private void start( Configuration configuration ) throws RuntimeException { LOGGER.info("ignition..."); try { server = buildServer( configuration ); } catch (ServletException | IOException e) { e.printStackTrace(); } server.start(); LOGGER.info("Enjoy it! http://" + configuration.getHost() + ":" + configuration.getPort() + "/" + configuration.getAppContext() ); } public void stop(){ server.stop(); } private Undertow buildServer( Configuration configuration ) throws ServletException, IOException { StartupHandler startupHandler = new StartupHandlerImpl(); return startupHandler.prepareBuild(configuration); } public Undertow getServer() { return server; } public static void main(String[] args) { new Overtown(new ConfigurationBuilder() .withPackageToScan("org.esmerilprogramming.overtown.management").shouldRunManagement(true) .withHost("0.0.0.0") .withAppContext("app") .withPort(8080) .withMaxSessionTime(1) .build()); } }