/*
* 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);
}
}