package net.ameba.cassandra.web.standalone; import java.io.File; import java.net.URI; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.webapp.WebAppContext; /** * Standalone server of cassandra web console. * * @author suguru */ public class StandaloneServer { // bind port private int port = 8080; // jetty server private Server server; // war base path private File basePath; /** * Initialize server. * @param port */ public StandaloneServer(int port) { this.port = port; } /** * Set the base path of the web application. * @param basePath */ public void setBasePath(String basePath) { this.basePath = new File(basePath); } /** * Start the server. * * @throws Exception */ public void start() throws Exception { server = new Server(port); WebAppContext context = new WebAppContext(); context.setContextPath("/"); File file = new File(basePath, "webapp"); URI uri = file.toURI(); context.setWar(uri.toString()); HandlerList list = new HandlerList(); list.addHandler(context); list.addHandler(new DefaultHandler()); server.setHandler(list); server.start(); } /** * Shutdown the server * * @throws Exception */ public void shutdown() throws Exception { server.stop(); } public static void main(String[] args) { Options options = new Options(); options.addOption("p", "port", true, "bind port"); options.addOption("b", "base", true, "base path"); try { CommandLine cl = new PosixParser().parse(options, args); int port = 8080; if (cl.hasOption('p')) { port = Integer.parseInt(cl.getOptionValue('p')); } String basePath = "src/main"; if (cl.hasOption('b')) { basePath = cl.getOptionValue('b'); } StandaloneServer server = new StandaloneServer(port); server.setBasePath(basePath); server.start(); } catch (ParseException ex) { System.out.println(ex.getMessage()); } catch (Exception ex) { ex.printStackTrace(); } } }