Управление запуском приложения JAX-RS

#java #maven #jax-rs #pom.xml

#java #maven #jax-rs #pom.xml

Вопрос:

Прежде всего, я новичок в JAX-RS. Я пытаюсь создать серверную часть, и я пошел на pom.xml реализация. Чтобы быть более конкретным, у меня есть этот класс

 import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("webapi")
public class MyApp extends Application {

}
  

и я хочу знать, как контролировать, когда оно запускается, и в конечном итоге остановить его запуск.

Что-то вроде этого:

 import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("webapi")
public class MyApp extends Application {

    @Override
    public void onStartup() {
        if (!Utils.isConfDataValid()) 
            exit(1);
    }

}

  

У меня только сейчас появилось представление о любых событиях приложения или о чем-то подобном в JAX-RS.

Спасибо!

Ответ №1:

Обратите внимание, что определенные типы событий или перехватов зависят от сервера веб-приложений.
В этом случае JAX-RS это не имеет отношения к тому, что вы ищете.

Также обратите внимание, что я не рекомендую использовать System.exit или завершать работу подобного приложения.


Поскольку оно JAX-RS основано на Servlet стеке, вы можете зарегистрировать ServletContextListener реализацию для выполнения кода при запуске контекста.

 public class CustomServletContextListener implements ServletContextListener {
   @Override
   public void contextInitialized(final ServletContextEvent servletContextEvent) {
      // Context startup
   }

   @Override
   public void contextDestroyed(final ServletContextEvent servletContextEvent) {
      // Context shutdown
   }
}
  

Этот прослушиватель можно зарегистрировать, пометив его с помощью, @WebListener если вы находитесь в Servlet 3 среде

 @WebListener
public class CustomServletContextListener implements ServletContextListener {
  

В противном случае вам нужно использовать старомодный web.xml файл, как <listener-class> .

Комментарии:

1. Спасибо! Могу ли я каким-либо образом вручную остановить приложение? Или, по крайней мере, ограничить его запуск?

2. @CosminStoian Вы могли бы вызвать исключение RuntimeException (это зависит от сервера приложений). Или вы могли бы установить параметр и проверить его внутри фильтра, который возвращает сообщение об ошибке с указанием причины. В любом случае вам нужно будет вручную перезапустить его (или попросить контейнер сделать это).