package com.fourspaces.featherdb.httpd;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.ContextHandler;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.handler.ResourceHandler;
import org.mortbay.jetty.nio.SelectChannelConnector;
import com.fourspaces.featherdb.FeatherDB;
import com.fourspaces.featherdb.utils.Logger;
public class HTTPDServer extends Server {
protected Server server = null;
final protected FeatherDB featherDB;
public HTTPDServer(FeatherDB coffeeDB) {
this.featherDB=coffeeDB;
}
public void init() throws Exception {
int port = Integer.parseInt(featherDB.getProperty("server.port"));
server = new Server();
server.setSendServerVersion(false);
Connector connector=new SelectChannelConnector();
connector.setPort(port);
server.setConnectors(new Connector[]{connector});
ContextHandler context = new ContextHandler();
context.setContextPath("/");
server.setHandler(context);
HandlerCollection handlers=new HandlerCollection();
ResourceHandler resourceHandler=new ResourceHandler();
resourceHandler.setResourceBase(".");
handlers.setHandlers(new Handler[] {new FeatherDBHandler(featherDB), resourceHandler,new DefaultHandler()});
context.setHandler(handlers);
try {
server.start();
} catch (Exception e) {
Logger.get(getClass()).error(e,"Error starting Jetty");
throw e;
}
}
public void shutdown() {
try {
Logger.get(getClass()).debug("Stopping Jetty");
server.stop();
} catch (Exception e) {
Logger.get(getClass()).error(e,"Error shutting down Jetty");
}
}
}