package com.oreilly.rdf.tenuki;
import javax.sql.DataSource;
import org.eclipse.jetty.plus.jndi.Resource;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.NCSARequestLog;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.handler.RequestLogHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
import com.hp.hpl.jena.sdb.StoreDesc;
import com.sun.jersey.spi.container.servlet.ServletContainer;
public class TenukiSever {
private Integer port;
private DataSource dataSource;
private StoreDesc storeDesc;
private Server server;
private String logPath;
public void setPort(Integer port) {
this.port = port;
}
public void setDatasource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void setStoreDesc(StoreDesc storeDesc) {
this.storeDesc = storeDesc;
}
public void setLogPath(String logPath) {
this.logPath = logPath;
}
public void start() throws Exception {
ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter("javax.ws.rs.Application",
"com.oreilly.rdf.tenuki.jaxrs.TenukiApplication");
server = new Server(port);
WebAppContext webAppContext = new WebAppContext();
webAppContext.setConfigurationClasses(new String[] {
"org.eclipse.jetty.plus.webapp.EnvConfiguration",
"org.eclipse.jetty.plus.webapp.PlusConfiguration",
"org.eclipse.jetty.annotations.AnnotationConfiguration" });
webAppContext.setContextPath("/");
webAppContext.addServlet(sh, "/*");
new Resource("jdbc/sdbDataSource", dataSource);
new Resource("jdbc/sdbStoreDesc", storeDesc);
// Setup logging
RequestLogHandler rqlh = new RequestLogHandler();
NCSARequestLog rqLog = new NCSARequestLog(this.logPath + "/tenuki-yyyy_mm_dd.request.log");
rqLog.setRetainDays(90);
rqLog.setAppend(true);
rqLog.setExtended(false);
rqLog.setLogTimeZone("GMT");
rqlh.setRequestLog(rqLog);
HandlerCollection handlers = new HandlerCollection();
handlers.setHandlers(new Handler[]{webAppContext,new DefaultHandler(), rqlh});
server.setHandler(handlers);
server.start();
}
public void stop() throws Exception {
server.stop();
}
}