13

我正在编写一些示例代码,其中启动了嵌入式 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)。

4

5 回答 5

14
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 行。

于 2009-06-20T16:39:09.980 回答
3

您可以在 Spring applicationcontext.xml 中以声明方式配置 Jetty,例如:

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

然后只需从 applicationcontext.xml 检索服务器 bean 并调用 start ...我相信这使它成为一行代码... :)

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

它对于涉及 Jetty 的集成测试很有用。

于 2009-06-20T17:43:43.283 回答
2

适用于 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();
    }
}
于 2013-07-26T23:21:39.507 回答
2

我编写了一个库EasyJetty,它使嵌入 Jetty 变得更加容易。它只是 Jetty API 之上的一个薄层,非常轻量级。

您的示例如下所示:

import com.athaydes.easyjetty.EasyJetty;

public class Sample {

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

}
于 2015-04-05T10:53:29.940 回答
1
        Server server = new Server(8080);
        Context root = new Context(server, "/");
        root.setResourceBase("./pom.xml");
        root.setHandler(new ResourceHandler());
        server.start();
于 2013-09-12T00:43:35.693 回答