最短代码启动嵌入式Jetty服务器(Shortest code to start embedded

2019-07-29 01:38发布

我正在写在那里的嵌入式Jetty服务器启动一些示例代码。 服务器必须加载只有一个servlet中,发送到servlet的所有请求,并听取在localhost:80

到目前为止我的代码:

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);
            ServletHolder holder = new ServletHolder(new MyApp());
            context.addServlet(holder, "/*");

            server.start();
        } catch (Exception ex) {
            System.err.println(ex);
        }

    }

我可以做同样的用更少的代码/行? (6.1.0码头使用)。

Answer 1:

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);
    }
}

去除不必要的空格和移动ServletHolder创建在线。 这是去掉5行。



Answer 2:

你可以声明在Spring的applicationContext.xml,如配置码头:

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

然后简单地检索来自applicationContext.xml中的服务器bean并调用start ......我相信这使得代码上一行然后... :)

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

这是涉及码头集成测试非常有用。



Answer 3:

我写了一个库, EasyJetty ,这使得它更容易嵌入码头。 这仅仅是一个薄层码头API以上,真重量轻。

你的榜样应该是这样的:

import com.athaydes.easyjetty.EasyJetty;

public class Sample {

    public static void main(String[] args) {
        new EasyJetty().port(80).servlet("/*", MyApp.class).start();
    }

}


Answer 4:

工程与码头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();
    }
}


Answer 5:

        Server server = new Server(8080);
        Context root = new Context(server, "/");
        root.setResourceBase("./pom.xml");
        root.setHandler(new ResourceHandler());
        server.start();


文章来源: Shortest code to start embedded Jetty server