Spark Java 2.6.0 — ловушка отключения

В документах для spark-java 2.6.0 упоминается, что «Embedded Jetty теперь полностью настраивается».

Как настроить перехватчик выключения через Spark 2.6.0?

В прошлом я переопределял метод Handler.doStop() Jetty, но мне неясно, как что-то эквивалентное достигается с помощью платформы Spark.


person Ande    schedule 10.07.2017    source источник


Ответы (2)


вот как вы переопределяете Handler.doStop() в sparkjava:

public class Main {
    public static void main(String ...args) throws Exception {
        EmbeddedServers.add(EmbeddedServers.Identifiers.JETTY, (Routes routeMatcher, StaticFilesConfiguration staticFilesConfiguration, boolean hasMultipleHandler) -> {
            MatcherFilter matcherFilter = new MatcherFilter(routeMatcher, staticFilesConfiguration, false, hasMultipleHandler);
            matcherFilter.init(null);

            JettyHandler handler = new MyJettyHandler(matcherFilter);

            return new EmbeddedJettyServer((int maxThreads, int minThreads, int threadTimeoutMillis) -> new Server(), handler);
        });

        get("/hello", (req, res) -> {
            req.session(true);
            return "Hello World";
        });
    }
 }

class MyJettyHandler extends JettyHandler {

    public MyJettyHandler(Filter filter) {
        super(filter);
    }

    @Override
    protected void doStop() throws Exception {
        super.doStop();

        // your magic happens here.
    }
}

код, в котором я инициализирую встроенный причал, взят из sparkjava, поэтому я не изменяю поведение фреймворка.

person Yevgeniy    schedule 11.07.2017

Для тех, кто ищет ответ на этот вопрос для более новых версий Spark, вот ссылка: http://sparkjava.com/documentation#stopping-the-server

Поскольку URL-адреса в Интернете не живут вечно, вот цитата:

При вызове метода stop() сервер останавливается и все маршруты очищаются.

И пример того, как я использую код:

    public static void stopService(){
        stop();
        awaitStop();
    }

Каково использование этого? Например, если вы хотите выполнить повторный тест службы, очистив ее и повторно инициализировав, тогда это пригодится,

person Mindaugas Bernatavičius    schedule 12.12.2019