Shortest code to start embedded Jetty server

前端 未结 5 1128
醉酒成梦
醉酒成梦 2021-01-30 15:30

I\'m writing some example code where an embedded Jetty server is started. The server must load exactly one servlet, send all requests to the servlet and listen on localhost:80

相关标签:
5条回答
  • 2021-01-30 15:40

    I've written a library, EasyJetty, that makes it MUCH easier to embed Jetty. It is just a thin layer above the Jetty API, really light-weight.

    Your example would look like this:

    import com.athaydes.easyjetty.EasyJetty;
    
    public class Sample {
    
        public static void main(String[] args) {
            new EasyJetty().port(80).servlet("/*", MyApp.class).start();
        }
    
    }
    
    0 讨论(0)
  • 2021-01-30 15:46
            Server server = new Server(8080);
            Context root = new Context(server, "/");
            root.setResourceBase("./pom.xml");
            root.setHandler(new ResourceHandler());
            server.start();
    
    0 讨论(0)
  • 2021-01-30 15:59

    You could configure Jetty declaratively in a Spring applicationcontext.xml, e.g:

    http://roopindersingh.com/2008/12/10/spring-and-jetty-integration/

    then simply retrieve the server bean from the applicationcontext.xml and call start... I believe that makes it one line of code then... :)

    ((Server)appContext.getBean("jettyServer")).start();
    

    It's useful for integration tests involving Jetty.

    0 讨论(0)
  • 2021-01-30 16:03
    static void startJetty() {
        try {
            Server server = new Server();
            Connector con = new SelectChannelConnector();
            con.setPort(80);
            server.addConnector(con);
            Context context = new Context(server, "/", Context.SESSIONS);
            context.addServlet(new ServletHolder(new MyApp()), "/*");
            server.start();
        } catch (Exception ex) {
            System.err.println(ex);
        }
    }
    

    Removed unnecessary whitespace and moved ServletHolder creation inline. That's removed 5 lines.

    0 讨论(0)
  • 2021-01-30 16:04

    Works with Jetty 8:

    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.webapp.WebAppContext;
    
    public class Main {
        public static void main(String[] args) throws Exception {
                Server server = new Server(8080);
                WebAppContext handler = new WebAppContext();
                handler.setResourceBase("/");
                handler.setContextPath("/");
                handler.addServlet(new ServletHolder(new MyApp()), "/*");
                server.setHandler(handler);
                server.start();
        }
    }
    
    0 讨论(0)
提交回复
热议问题