package org.royaldev.thehumanity.server;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ErrorHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import java.io.IOException;
import java.net.InetSocketAddress;
public class GameServer {
public GameServer(final String hostname, final int port) {
final Server server = new Server(new InetSocketAddress(hostname, port));
try {
server.setHandler(this.getServletContextHandler(this.getContext()));
server.start();
} catch (final Exception ex) {
ex.printStackTrace();
}
}
private WebApplicationContext getContext() {
final AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setConfigLocation(
"org.royaldev.thehumanity.server"
); // Package where @Configuration things are
context.getEnvironment().setDefaultProfiles("dev");
return context;
}
private ServletContextHandler getServletContextHandler(final WebApplicationContext context) throws IOException {
ServletContextHandler contextHandler = new ServletContextHandler();
contextHandler.setErrorHandler(null);
contextHandler.setContextPath("/");
contextHandler.addServlet(new ServletHolder(new DispatcherServlet(context)), "/*");
contextHandler.addEventListener(new ContextLoaderListener(context));
// contextHandler.setResourceBase(new ClassPathResource("web").getURI().toString());
// contextHandler.setResourceBase("src/main/resources/web");
contextHandler.setResourceBase("src/main/webapp");
contextHandler.setErrorHandler(new ErrorHandler());
contextHandler.getErrorHandler().setShowStacks(true);
return contextHandler;
}
}