// RowlandJettyServer by Rowland // a utility class to tie in to Jetty. import javax.servlet.*; import javax.servlet.http.*; import org.mortbay.http.*; // Jetty org.mortbay.jetty.jar import org.mortbay.jetty.servlet.*; // Jetty org.mortbay.jetty.jar public class RowlandJettyServer { protected final HttpServer server; protected final int port; protected final RowlandServletDesc sds[]; RowlandJettyServer(int _port, RowlandServletDesc _sds[]) { port= _port; sds= _sds; System.out.println("Building HttpServer"); server= new HttpServer(); try { System.out.println(" Adding Listener to server at port "+ port); server.addListener(":"+ port); ServletHandler handler= new ServletHandler(); int i; for (i=0; i< sds.length; i++) { RowlandServletDesc sd= sds[i]; System.out.println(" Adding Servlet to handler at http://localhost:"+ port+ "/" + sd.URI+ "/"); handler.addServlet("/"+ sd.URI+ "/*", sd.className); } System.out.println(" Getting root context from server"); HttpContext context= server.getContext("/"); System.out.println(" Adding Handler to root context"); context.addHandler(handler); System.out.println("Starting server"); server.start(); // non-blocking. System.out.println("Started server"); } catch (java.net.BindException e) { System.err.println("serve Can't bind to "+ port+ ": "+ e.getMessage()); } catch (Exception e) { System.err.println("EXC serve: "+ e.getMessage()); e.printStackTrace(); } } }