/*
* Copyright 2003-2006 Rick Knowles <winstone-devel at lists sourceforge net>
* Distributed under the terms of either:
* - the common development and distribution license (CDDL), v1.0; or
* - the GNU Lesser General Public License, v2.1 or later
*/
package winstone;
import org.eclipse.jetty.server.ForwardedRequestCustomizer;
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 winstone.cmdline.Option;
import java.io.IOException;
import java.util.Map;
/**
* Implements the main listener daemon thread. This is the class that gets
* launched by the command line, and owns the server socket, etc. Note that this
* class is also used as the base class for the HTTPS listener.
*
* @author <a href="mailto:rick_knowles@hotmail.com">Rick Knowles</a>
* @version $Id: HttpConnectorFactory.java,v 1.15 2007/05/01 04:39:49 rickknowles Exp $
*/
public class HttpConnectorFactory implements ConnectorFactory {
public boolean start(Map args, Server server) throws IOException {
// Load resources
int listenPort = Option.HTTP_PORT.get(args);
String listenAddress = Option.HTTP_LISTEN_ADDRESS.get(args);
int keepAliveTimeout = Option.HTTP_KEEP_ALIVE_TIMEOUT.get(args);
if (listenPort < 0) {
return false;
} else {
ServerConnector connector = createConnector(server);
connector.setPort(listenPort);
connector.setHost(listenAddress);
connector.setIdleTimeout(keepAliveTimeout);
HttpConfiguration config = connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration();
config.addCustomizer(new ForwardedRequestCustomizer());
config.setRequestHeaderSize(Option.REQUEST_HEADER_SIZE.get(args));
server.addConnector(connector);
return true;
}
}
/**
* Gets a server socket - this is mostly for the purpose of allowing an
* override in the SSL connector.
*/
protected ServerConnector createConnector(Server server) {
return new ServerConnector(server);
}
}