import com.poolik.websocket.callback.example.WebsocketEndpoint; 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.webapp.WebAppContext; import org.eclipse.jetty.websocket.jsr356.server.ServerContainer; import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Launcher { private static final Logger log = LoggerFactory.getLogger(Launcher.class); public static void main(String[] args) throws Exception { startJetty(); log.info("Started jetty!"); } private static void startJetty() throws Exception { Server server = new Server(); HttpConfiguration http_config = new HttpConfiguration(); http_config.setOutputBufferSize(32768); ServerConnector http = new ServerConnector(server,new HttpConnectionFactory(http_config)); http.setPort(8080); http.setIdleTimeout(600000); //10min server.addConnector(http); WebAppContext context = new WebAppContext(); String webDir = Launcher.class.getClassLoader().getResource("webapp").toExternalForm(); context.setResourceBase(webDir); context.setContextPath("/websocket"); server.setHandler(context); if (System.getProperty("os.name").toLowerCase().contains("windows")) { // fix for Windows, so Jetty doesn't lock files context.getInitParams().put("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false"); } ServerContainer wscontainer = WebSocketServerContainerInitializer.configureContext(context); // Add WebSocket endpoint to javax.websocket layer wscontainer.addEndpoint(WebsocketEndpoint.class); server.start(); } }