Кратчайший код для запуска встроенного сервера Jetty

Я пишу пример кода, в котором запускается встроенный сервер Jetty. Сервер должен загрузить ровно один сервлет, отправить все запросы сервлету и слушать на локальном хосте: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);
        }

    }

Могу ли я сделать то же самое с меньшим количеством кода/строк? (используется Jetty 6.1.0).


person PeterMmm    schedule 20.06.2009    source источник


Ответы (4)


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 строк.

person workmad3    schedule 20.06.2009

Вы можете настроить Jetty декларативно в Spring applicationcontext.xml, например:

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

затем просто извлеките серверный компонент из applicationcontext.xml и вызовите start... Я полагаю, что тогда получается одна строка кода... :)

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

Это полезно для интеграционных тестов с использованием Jetty.

person Jon    schedule 20.06.2009
comment
Я не вижу весенний тег в вопросе ОП. Зачем бросать 800-фунтовую гориллу, как пружину, на что-то настолько простое?! - person philk; 17.04.2020

Работает с причалом 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();
    }
}
person Janus Troelsen    schedule 26.07.2013

Я написал библиотеку 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();
    }

}
person Renato    schedule 05.04.2015