/* * Carrot2 project. * * Copyright (C) 2002-2016, Dawid Weiss, Stanisław Osiński. * All rights reserved. * * Refer to the full license file "carrot2.LICENSE" * in the root folder of the repository checkout or at: * http://www.carrot2.org/carrot2.LICENSE */ package org.carrot2.webapp; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.util.component.AbstractLifeCycle; import org.eclipse.jetty.util.component.LifeCycle; import org.eclipse.jetty.webapp.WebAppContext; import org.slf4j.LoggerFactory; public class WebApp { Server server; void start(final int port) throws Exception { server = new Server(); SelectChannelConnector connector = new SelectChannelConnector(); connector.setPort(port); connector.setReuseAddress(false); connector.setAcceptQueueSize(20); server.addConnector(connector); WebAppContext wac = new WebAppContext(); wac.setClassLoader(Thread.currentThread().getContextClassLoader()); wac.setContextPath("/"); wac.setWar("web"); wac.setDefaultsDescriptor("etc/webdefault.xml"); wac.addLifeCycleListener(new AbstractLifeCycle.AbstractLifeCycleListener() { @Override public void lifeCycleStarting(LifeCycle arg0) { } @Override public void lifeCycleStarted(LifeCycle arg0) { LoggerFactory.getLogger("webapp") .info("Started at port: " + port); } }); server.setHandler(wac); server.setStopAtShutdown(true); // Start the http server. try { server.start(); } catch (Exception e) { stop(); throw e; } } void stop() { if (server != null) { try { server.stop(); } catch (Exception e) { throw new RuntimeException(e); } } } /** * Command-line entry point. */ public static void main(String [] args) throws Exception { /* * Allow context classloader resource loading. */ System.setProperty(QueryProcessorServlet.ENABLE_CLASSPATH_LOCATOR, "true"); new WebApp().start(8081); } }