JAX-RS: как запустить метод при запуске (без сервлетов) - PullRequest
0 голосов
/ 18 октября 2018

У меня есть сервер JAX-RS (Джерси), на котором я регистрируюсь и связываю свои вещи.

Я хочу напечатать баннер при запуске сервера.Я хочу сделать это, используя инфраструктуру JAX-RS , а не платформа веб-сервера (т. Е. Никаких хеттов Jetty, Netty, Thorntail и т. Д.).

Я виделследующее, в котором упоминается проверенный и верный способ выполнения сервлетов: Jax rs: Как я могу запускать метод автоматически при каждом перезапуске моего сервера? , но это не работает, потому что я не запускаю контейнер сервлета вмой сервер, так что вызов жизненного цикла никогда не выполняется.

Я полагал, что должен быть объект типа JCA-ish, который я могу зарегистрировать в Application / ResourceConfig, который имеет такой вызов жизненного цикла, но я не могудаже найти какой-либо список вещей, которые вы можете реально зарегистрировать.

Не жаловаться (но я буду), но я не могу решить, так ли это сложно, потому что, когда они переместили проект на затмение, они разорвали каждую гиперссылку на старую официальную документацию или это просто так неявно,как и Spring, он работает, просто собирая чужой код и понимая: «О, я не знал, что вы можете это сделать».

1 Ответ

0 голосов
/ 20 октября 2018

Джерси имеет Прослушивателей событий .Вам нужно будет использовать ApplicationEventListener и ApplicationEvent.Type, которые вы, вероятно, захотите прослушать, чтобы напечатать баннер: INITIALIZATION_FINISHED

public class MyApplicationEventListener
            implements ApplicationEventListener {

    @Override
    public void onEvent(ApplicationEvent event) {
        switch (event.getType()) {
            case INITIALIZATION_FINISHED:
                printBanner();
                break;
        }
    }

    @Override
    public RequestEventListener onRequest(RequestEvent requestEvent) {
        return null;
    }
}
...