While I was playing with JSFUnit, I just needed to start a web container inside my tests. Jetty is very famous as
being embeddable in standalone Java applications. Therefore, spots are directed onto Jetty’s website, and I downloaded
the latest stable version and started playing with it.
First, you need to add servlet.jar, jetty.jar, jetty-util.jar, and start.jar to your classpath to run Jetty.
After that, create a new Server instance and a Connector to answer HTTP requests from a specific port.
Server server = new Server();
SelectChannelConnector connector=new SelectChannelConnector();
connector.setPort(Integer.getInteger("jetty.port",8088).intValue());
server.setConnectors(new Connector[]{connector});
Connector needs to call a Handler for each request received. Therefore, we need to create and add a Handler to the
Server instance. WebAppContext is a special Handler instance to start your web application.
WebAppContext webapp = new WebAppContext();
webapp.setParentLoaderPriority(true);
webapp.setContextPath("/myproject");
webapp.setWar("d:/work/projects/myproject/WebContent");
webapp.setDefaultsDescriptor("d:/work/projects/myproject/webdefault.xml");
server.setHandler(webapp);
webdefault.xml of Jetty can be found in its distribution bundle under the etc directory.
Finally, we can run our server;
server.start();
If we want Jetty’s thread pool to be blocked until LifeCycle objects are stopped, then we just need to call the
Server’s join method.
server.join();
In order to stop your server when you are finished with it, call its stop method.
server.stop();
That’s all…