001 package org.hackystat.projectbrowser; 002 003 import org.apache.wicket.protocol.http.WicketServlet; 004 import org.mortbay.jetty.Server; 005 import org.mortbay.jetty.servlet.Context; 006 import org.mortbay.jetty.servlet.ServletHolder; 007 008 /** 009 * Provides a mechanism for running Project Browser with Jetty. 010 * 011 * @author Philip Johnson 012 */ 013 public class Start { 014 015 /** 016 * Starts up Jetty and points it at Wicket. 017 * Jetty will check every five seconds for keyboard input from the console, and if it gets some, 018 * it will shutdown. 019 * @param args Ignored. 020 * @throws Exception If things go wrong. 021 */ 022 public static void main(String[] args) throws Exception { 023 ProjectBrowserProperties properties = new ProjectBrowserProperties(); 024 int port = properties.getPort(); 025 String contextPath = properties.getContextRoot(); 026 Server server = new Server(port); 027 Context context = new Context(server, "/" + contextPath, Context.SESSIONS); 028 029 ServletHolder servletHolder = new ServletHolder(new WicketServlet()); 030 servletHolder.setInitParameter("applicationClassName", 031 "org.hackystat.projectbrowser.ProjectBrowserApplication"); 032 servletHolder.setInitOrder(1); 033 context.addServlet(servletHolder, "/*"); 034 try { 035 server.start(); 036 System.out.println(properties.getHost() + " is running. Press return to stop server."); 037 while (System.in.available() == 0) { 038 Thread.sleep(5000); 039 } 040 server.stop(); 041 server.join(); 042 } 043 catch (Exception e) { 044 e.printStackTrace(); 045 System.exit(1); 046 } 047 } 048 }